Skip to content

Commit d314fa4

Browse files
authored
Merge branch 'master' into chore/revert-deps-upgrade
2 parents cf31526 + 98b688c commit d314fa4

File tree

5 files changed

+62
-8
lines changed

5 files changed

+62
-8
lines changed

package-lock.json

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"dev": "trap 'npm run db:clean' INT && run-s db:clean db:run && nodemon --exec node --loader ts-node/esm src/server/server.ts | pino-pretty --colorize",
3030
"test": "run-s db:clean db:run test:run db:clean",
3131
"db:clean": "cd test/db && docker compose down",
32-
"db:run": "cd test/db && docker compose up --detach && sleep 5",
32+
"db:run": "cd test/db && docker compose up --detach --wait",
3333
"test:run": "vitest run",
3434
"test:update": "run-s db:clean db:run && vitest run --update && run-s db:clean"
3535
},

src/lib/sql/triggers.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ ON pg_t.tgrelid = pg_c.oid
2929
JOIN information_schema.triggers AS is_t
3030
ON is_t.trigger_name = pg_t.tgname
3131
AND pg_c.relname = is_t.event_object_table
32-
AND pg_c.relnamespace = is_t.event_object_schema::regnamespace
32+
AND pg_c.relnamespace = (quote_ident(is_t.event_object_schema))::regnamespace
3333
JOIN pg_proc AS pg_p
3434
ON pg_t.tgfoid = pg_p.oid
3535
JOIN pg_namespace AS pg_n

test/db/docker-compose.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,9 @@ services:
88
environment:
99
POSTGRES_PASSWORD: postgres
1010
command: postgres -c config_file=/etc/postgresql/postgresql.conf -c ssl=on -c ssl_cert_file=/var/lib/postgresql/server.crt -c ssl_key_file=/var/lib/postgresql/server.key
11+
healthcheck:
12+
test: ["CMD-SHELL", "pg_isready -U postgres"]
13+
interval: 1s
14+
timeout: 2s
15+
retries: 10
16+
start_period: 2s

test/lib/triggers.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,3 +264,51 @@ create schema s2; create table s2.t(); create trigger tr before insert on s2.t e
264264

265265
await pgMeta.query('drop schema s1 cascade; drop schema s2 cascade;')
266266
})
267+
268+
test('triggers on capitalized schema and table names', async () => {
269+
await pgMeta.query(`
270+
CREATE SCHEMA "MySchema";
271+
CREATE TABLE "MySchema"."MyTable" (
272+
id SERIAL PRIMARY KEY,
273+
name TEXT NOT NULL,
274+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
275+
updated_at TIMESTAMP
276+
);
277+
CREATE OR REPLACE FUNCTION "MySchema"."my_trigger_function"()
278+
RETURNS TRIGGER AS $$
279+
BEGIN
280+
NEW.updated_at := CURRENT_TIMESTAMP;
281+
RETURN NEW;
282+
END;
283+
$$ LANGUAGE plpgsql;
284+
285+
CREATE TRIGGER "my_trigger"
286+
BEFORE INSERT ON "MySchema"."MyTable"
287+
FOR EACH ROW
288+
EXECUTE FUNCTION "MySchema"."my_trigger_function"();
289+
`)
290+
291+
const res = await pgMeta.triggers.list()
292+
const triggers = res.data?.map(({ id, table_id, ...trigger }) => trigger)
293+
expect(triggers).toMatchInlineSnapshot(`
294+
[
295+
{
296+
"activation": "BEFORE",
297+
"condition": null,
298+
"enabled_mode": "ORIGIN",
299+
"events": [
300+
"INSERT",
301+
],
302+
"function_args": [],
303+
"function_name": "my_trigger_function",
304+
"function_schema": "MySchema",
305+
"name": "my_trigger",
306+
"orientation": "ROW",
307+
"schema": "MySchema",
308+
"table": "MyTable",
309+
},
310+
]
311+
`)
312+
313+
await pgMeta.query('drop schema "MySchema" cascade;')
314+
})

0 commit comments

Comments
 (0)