Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/sessions/postgres-session-store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ export function createPostgresSessionStore(connectionString: string, opts: Store
`CREATE INDEX IF NOT EXISTS session_entries_user_ts ON session_entries(created_at) WHERE type = 'user'`,
`CREATE INDEX IF NOT EXISTS session_entries_session_created ON session_entries(session_id, created_at DESC)`,
`CREATE OR REPLACE FUNCTION entry_search_text(payload text) RETURNS text
LANGUAGE plpgsql IMMUTABLE PARALLEL SAFE AS $entry_search_text$
LANGUAGE plpgsql IMMUTABLE PARALLEL UNSAFE AS $entry_search_text$
DECLARE j json;
BEGIN
j := replace(payload, '\\u0000', '')::json;
Expand Down
9 changes: 7 additions & 2 deletions test/postgres-store.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,7 @@ test("pg sessions table indexes scoped activity pages", { skip }, async () => {
}
});

test("pg safe JSON functions are marked parallel-unsafe", { skip }, async () => {
test("pg JSON functions with exception handlers are marked parallel-unsafe", { skip }, async () => {
const pg = (await import("pg")).default;
const raw = new pg.Pool({ connectionString: URL });
try {
Expand All @@ -610,13 +610,18 @@ test("pg safe JSON functions are marked parallel-unsafe", { skip }, async () =>
const result = await raw.query(
`SELECT proname, proparallel
FROM pg_proc
WHERE oid IN ('safe_json(text)'::regprocedure, 'safe_jsonb(text)'::regprocedure)`,
WHERE oid IN (
'safe_json(text)'::regprocedure,
'safe_jsonb(text)'::regprocedure,
'entry_search_text(text)'::regprocedure
)`,
);
assert.deepEqual(
new Map(result.rows.map((row) => [row.proname as string, row.proparallel as string])),
new Map([
["safe_json", "u"],
["safe_jsonb", "u"],
["entry_search_text", "u"],
]),
);
assert.equal(
Expand Down