Commit 539d69fc authored by charlie ablett's avatar charlie ablett

Merge branch '227089-update-create-trigger-syntax-to-use-execute-function' into 'master'

Update CREATE TRIGGER syntax to use EXECUTE FUNCTION

See merge request gitlab-org/gitlab!37502
parents 4307a2fa 3dfd38f3
...@@ -815,7 +815,7 @@ module Gitlab ...@@ -815,7 +815,7 @@ module Gitlab
BEFORE INSERT OR UPDATE BEFORE INSERT OR UPDATE
ON #{table} ON #{table}
FOR EACH ROW FOR EACH ROW
EXECUTE PROCEDURE #{trigger}() EXECUTE FUNCTION #{trigger}()
EOF EOF
end end
......
...@@ -25,7 +25,7 @@ module Gitlab ...@@ -25,7 +25,7 @@ module Gitlab
CREATE TRIGGER #{name} CREATE TRIGGER #{name}
#{fires} ON #{table_name} #{fires} ON #{table_name}
FOR EACH ROW FOR EACH ROW
EXECUTE PROCEDURE #{function_name}() EXECUTE FUNCTION #{function_name}()
SQL SQL
end end
......
...@@ -712,7 +712,7 @@ RSpec.describe Gitlab::Database::MigrationHelpers do ...@@ -712,7 +712,7 @@ RSpec.describe Gitlab::Database::MigrationHelpers do
expect(model).to receive(:add_not_null_constraint).with(:users, :new) expect(model).to receive(:add_not_null_constraint).with(:users, :new)
expect(model).to receive(:execute).with("UPDATE \"users\" SET \"new\" = cast_to_jsonb_with_default(\"users\".\"id\") WHERE \"users\".\"id\" >= #{user.id}") expect(model).to receive(:execute).with("UPDATE \"users\" SET \"new\" = cast_to_jsonb_with_default(\"users\".\"id\") WHERE \"users\".\"id\" >= #{user.id}")
expect(model).to receive(:execute).with("DROP TRIGGER IF EXISTS #{trigger_name}\nON \"users\"\n") expect(model).to receive(:execute).with("DROP TRIGGER IF EXISTS #{trigger_name}\nON \"users\"\n")
expect(model).to receive(:execute).with("CREATE TRIGGER #{trigger_name}\nBEFORE INSERT OR UPDATE\nON \"users\"\nFOR EACH ROW\nEXECUTE PROCEDURE #{trigger_name}()\n") expect(model).to receive(:execute).with("CREATE TRIGGER #{trigger_name}\nBEFORE INSERT OR UPDATE\nON \"users\"\nFOR EACH ROW\nEXECUTE FUNCTION #{trigger_name}()\n")
expect(model).to receive(:execute).with("CREATE OR REPLACE FUNCTION #{trigger_name}()\nRETURNS trigger AS\n$BODY$\nBEGIN\n NEW.\"new\" := NEW.\"id\";\n RETURN NEW;\nEND;\n$BODY$\nLANGUAGE 'plpgsql'\nVOLATILE\n") expect(model).to receive(:execute).with("CREATE OR REPLACE FUNCTION #{trigger_name}()\nRETURNS trigger AS\n$BODY$\nBEGIN\n NEW.\"new\" := NEW.\"id\";\n RETURN NEW;\nEND;\n$BODY$\nLANGUAGE 'plpgsql'\nVOLATILE\n")
model.rename_column_concurrently(:users, :id, :new, type_cast_function: 'cast_to_jsonb_with_default') model.rename_column_concurrently(:users, :id, :new, type_cast_function: 'cast_to_jsonb_with_default')
......
...@@ -28,8 +28,6 @@ module TriggerHelpers ...@@ -28,8 +28,6 @@ module TriggerHelpers
expect(timing).to eq(expected_timing.to_s) expect(timing).to eq(expected_timing.to_s)
expect(events).to match_array(Array.wrap(expected_events)) expect(events).to match_array(Array.wrap(expected_events))
# TODO: Update CREATE TRIGGER syntax to use EXECUTE FUNCTION
# https://gitlab.com/gitlab-org/gitlab/-/issues/227089
expect(definition).to match(%r{execute (?:procedure|function) #{fn_name}()}) expect(definition).to match(%r{execute (?:procedure|function) #{fn_name}()})
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment