pg-mem
pg-mem copied to clipboard
pg-mem fails to parse a query for joining tables
pg-mem fails to parse a query that runs successfully on an actual PostgreSQL database.
SequelizeDatabaseError: 💔 Your query failed to parse.
👉 Failed query:
SELECT "Book"."id", "Book"."title", "Book"."author", "Book"."description", "Book"."publicationYear", "Book"."isbn", "Book"."createdAt", "Book"."updatedAt", "details"."id" AS "details.id", "details"."pageCount" AS "details.pageCount", "details"."language" AS "details.language", "details"."publisher" AS "details.publisher", "details"."edition" AS "details.edition", "details"."bookId" AS "details.bookId", "details"."createdAt" AS "details.createdAt", "details"."updatedAt" AS "details.updatedAt", "reviews"."id" AS "reviews.id", "reviews"."reviewerName" AS "reviews.reviewerName", "reviews"."rating" AS "reviews.rating", "reviews"."comment" AS "reviews.comment", "reviews"."bookId" AS "reviews.bookId", "reviews"."createdAt" AS "reviews.createdAt", "reviews"."updatedAt" AS "reviews.updatedAt", "authors"."id" AS "authors.id", "authors"."firstName" AS "authors.firstName", "authors"."lastName" AS "authors.lastName", "authors"."birthDate" AS "authors.birthDate", "authors"."biography" AS "authors.biography", "authors"."createdAt" AS "authors.createdAt", "authors"."updatedAt" AS "authors.updatedAt", "authors->BookAuthor"."id" AS "authors.BookAuthor.id", "authors->BookAuthor"."role" AS "authors.BookAuthor.role" FROM "Books" AS "Book" LEFT OUTER JOIN "BookDetails" AS "details" ON "Book"."id" = "details"."bookId" LEFT OUTER JOIN "Reviews" AS "reviews" ON "Book"."id" = "reviews"."bookId" LEFT OUTER JOIN ( "BookAuthors" AS "authors->BookAuthor" INNER JOIN "Authors" AS "authors" ON "authors"."id" = "authors->BookAuthor"."authorId") ON "Book"."id" = "authors->BookAuthor"."bookId" WHERE "Book"."id" = '80fc172a-1aea-4f22-a2f4-d24fe08a6e48';;
💀 Syntax error at line 1 col 1411:
Unexpected quoted_word token: "BookAuthors".
To Reproduce
-- Table creation statements
CREATE TABLE Books (
id UUID PRIMARY KEY,
title TEXT,
author TEXT,
description TEXT,
publicationYear INTEGER,
isbn TEXT,
createdAt TIMESTAMP,
updatedAt TIMESTAMP
);
CREATE TABLE BookDetails (
id UUID PRIMARY KEY,
bookId UUID REFERENCES Books(id),
pageCount INTEGER,
language TEXT,
publisher TEXT,
edition TEXT,
createdAt TIMESTAMP,
updatedAt TIMESTAMP
);
CREATE TABLE Reviews (
id UUID PRIMARY KEY,
bookId UUID REFERENCES Books(id),
reviewerName TEXT,
rating INTEGER,
comment TEXT,
createdAt TIMESTAMP,
updatedAt TIMESTAMP
);
CREATE TABLE Authors (
id UUID PRIMARY KEY,
firstName TEXT,
lastName TEXT,
birthDate DATE,
biography TEXT,
createdAt TIMESTAMP,
updatedAt TIMESTAMP
);
CREATE TABLE BookAuthors (
id UUID PRIMARY KEY,
bookId UUID REFERENCES Books(id),
authorId UUID REFERENCES Authors(id),
role TEXT
);
-- Failing query in pg-mem
SELECT "Book"."id", "Book"."title", "Book"."author", "Book"."description", "Book"."publicationYear", "Book"."isbn", "Book"."createdAt", "Book"."updatedAt", "details"."id" AS "details.id", "details"."pageCount" AS "details.pageCount", "details"."language" AS "details.language", "details"."publisher" AS "details.publisher", "details"."edition" AS "details.edition", "details"."bookId" AS "details.bookId", "details"."createdAt" AS "details.createdAt", "details"."updatedAt" AS "details.updatedAt", "reviews"."id" AS "reviews.id", "reviews"."reviewerName" AS "reviews.reviewerName", "reviews"."rating" AS "reviews.rating", "reviews"."comment" AS "reviews.comment", "reviews"."bookId" AS "reviews.bookId", "reviews"."createdAt" AS "reviews.createdAt", "reviews"."updatedAt" AS "reviews.updatedAt", "authors"."id" AS "authors.id", "authors"."firstName" AS "authors.firstName", "authors"."lastName" AS "authors.lastName", "authors"."birthDate" AS "authors.birthDate", "authors"."biography" AS "authors.biography", "authors"."createdAt" AS "authors.createdAt", "authors"."updatedAt" AS "authors.updatedAt", "authors->BookAuthor"."id" AS "authors.BookAuthor.id", "authors->BookAuthor"."role" AS "authors.BookAuthor.role" FROM "Books" AS "Book" LEFT OUTER JOIN "BookDetails" AS "details" ON "Book"."id" = "details"."bookId" LEFT OUTER JOIN "Reviews" AS "reviews" ON "Book"."id" = "reviews"."bookId" LEFT OUTER JOIN ( "BookAuthors" AS "authors->BookAuthor" INNER JOIN "Authors" AS "authors" ON "authors"."id" = "authors->BookAuthor"."authorId") ON "Book"."id" = "authors->BookAuthor"."bookId" WHERE "Book"."id" = '80fc172a-1aea-4f22-a2f4-d24fe08a6e48';
pg-mem version
"version": "3.0.5",
Additional Context
- Running in a NestJS + Sequelize environment.
- Query works in actual PostgreSQL but fails in pg-mem with a syntax error.
- Issue might be related to how pg-mem handles quoted identifiers for joined tables.