diff --git a/IHP/DataSync/ChangeNotifications.hs b/IHP/DataSync/ChangeNotifications.hs index f492248a8..a8ad25d38 100644 --- a/IHP/DataSync/ChangeNotifications.hs +++ b/IHP/DataSync/ChangeNotifications.hs @@ -41,7 +41,7 @@ createNotificationFunction :: RLS.TableWithRLS -> PG.Query createNotificationFunction table = [i| DO $$ BEGIN - CREATE FUNCTION #{functionName}() RETURNS TRIGGER AS $BODY$ + CREATE FUNCTION "#{functionName}"() RETURNS TRIGGER AS $BODY$ DECLARE payload TEXT; large_pg_notification_id UUID; @@ -86,14 +86,14 @@ createNotificationFunction table = [i| RETURN new; END; $BODY$ language plpgsql; - DROP TRIGGER IF EXISTS #{insertTriggerName} ON #{tableName}; - DROP TRIGGER IF EXISTS #{updateTriggerName} ON #{tableName}; - DROP TRIGGER IF EXISTS #{deleteTriggerName} ON #{tableName}; + DROP TRIGGER IF EXISTS "#{insertTriggerName}" ON "#{tableName}"; + DROP TRIGGER IF EXISTS "#{updateTriggerName}" ON "#{tableName}"; + DROP TRIGGER IF EXISTS "#{deleteTriggerName}" ON "#{tableName}"; - CREATE TRIGGER #{insertTriggerName} AFTER INSERT ON "#{tableName}" FOR EACH ROW EXECUTE PROCEDURE #{functionName}(); - CREATE TRIGGER #{updateTriggerName} AFTER UPDATE ON "#{tableName}" FOR EACH ROW EXECUTE PROCEDURE #{functionName}(); - CREATE TRIGGER #{deleteTriggerName} AFTER DELETE ON "#{tableName}" FOR EACH ROW EXECUTE PROCEDURE #{functionName}(); + CREATE TRIGGER "#{insertTriggerName}" AFTER INSERT ON "#{tableName}" FOR EACH ROW EXECUTE PROCEDURE "#{functionName}"(); + CREATE TRIGGER "#{updateTriggerName}" AFTER UPDATE ON "#{tableName}" FOR EACH ROW EXECUTE PROCEDURE "#{functionName}"(); + CREATE TRIGGER "#{deleteTriggerName}" AFTER DELETE ON "#{tableName}" FOR EACH ROW EXECUTE PROCEDURE "#{functionName}"(); EXCEPTION WHEN duplicate_function THEN null; diff --git a/IHP/DataSync/RowLevelSecurity.hs b/IHP/DataSync/RowLevelSecurity.hs index d26d63612..42c8a2835 100644 --- a/IHP/DataSync/RowLevelSecurity.hs +++ b/IHP/DataSync/RowLevelSecurity.hs @@ -128,7 +128,7 @@ makeCachedEnsureRLSEnabled = do -- >>> hasRLSEnabled "my_table" -- True hasRLSEnabled :: (?modelContext :: ModelContext) => Text -> IO Bool -hasRLSEnabled table = sqlQueryScalar "SELECT relrowsecurity FROM pg_class WHERE oid = ?::regclass" [table] +hasRLSEnabled table = sqlQueryScalar "SELECT relrowsecurity FROM pg_class WHERE oid = quote_ident(?)::regclass" [table] -- | Can be constructed using 'ensureRLSEnabled' --