Skip to content
Merged
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 .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ jobs:
if [ "${{ matrix.package.name }}" = "v13" ]; then
# Download prebuilt WASM for v13 since it can't build in CI
mkdir -p wasm
curl -o v13.tgz "https://registry.npmjs.org/@libpg-query/v13/-/v13-13.0.0.tgz"
curl -o v13.tgz "https://registry.npmjs.org/@libpg-query/v13/-/v13-13.5.2.tgz"
tar -xzf v13.tgz --strip-components=1 package/wasm
rm v13.tgz
else
Expand Down
24 changes: 12 additions & 12 deletions full/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ export const parse = awaitInit(async (query: string): Promise<ParseResult> => {
resultPtr = wasmModule._wasm_parse_query(queryPtr);
const resultStr = ptrToString(resultPtr);

if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}

Expand Down Expand Up @@ -121,7 +121,7 @@ export const deparse = awaitInit(async (parseTree: ParseResult): Promise<string>
resultPtr = wasmModule._wasm_deparse_protobuf(dataPtr, data.length);
const resultStr = ptrToString(resultPtr);

if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}

Expand All @@ -142,7 +142,7 @@ export const parsePlPgSQL = awaitInit(async (query: string): Promise<ParseResult
resultPtr = wasmModule._wasm_parse_plpgsql(queryPtr);
const resultStr = ptrToString(resultPtr);

if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}

Expand All @@ -163,7 +163,7 @@ export const fingerprint = awaitInit(async (query: string): Promise<string> => {
resultPtr = wasmModule._wasm_fingerprint(queryPtr);
const resultStr = ptrToString(resultPtr);

if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}

Expand All @@ -184,7 +184,7 @@ export const normalize = awaitInit(async (query: string): Promise<string> => {
resultPtr = wasmModule._wasm_normalize_query(queryPtr);
const resultStr = ptrToString(resultPtr);

if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}

Expand All @@ -209,7 +209,7 @@ export function parseSync(query: string): ParseResult {
resultPtr = wasmModule._wasm_parse_query(queryPtr);
const resultStr = ptrToString(resultPtr);

if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}

Expand Down Expand Up @@ -241,7 +241,7 @@ export function deparseSync(parseTree: ParseResult): string {
resultPtr = wasmModule._wasm_deparse_protobuf(dataPtr, data.length);
const resultStr = ptrToString(resultPtr);

if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}

Expand All @@ -265,7 +265,7 @@ export function parsePlPgSQLSync(query: string): ParseResult {
resultPtr = wasmModule._wasm_parse_plpgsql(queryPtr);
const resultStr = ptrToString(resultPtr);

if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}

Expand All @@ -289,7 +289,7 @@ export function fingerprintSync(query: string): string {
resultPtr = wasmModule._wasm_fingerprint(queryPtr);
const resultStr = ptrToString(resultPtr);

if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}

Expand All @@ -313,7 +313,7 @@ export function normalizeSync(query: string): string {
resultPtr = wasmModule._wasm_normalize_query(queryPtr);
const resultStr = ptrToString(resultPtr);

if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}

Expand All @@ -334,7 +334,7 @@ export const scan = awaitInit(async (query: string): Promise<ScanResult> => {
resultPtr = wasmModule._wasm_scan(queryPtr);
const resultStr = ptrToString(resultPtr);

if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}

Expand All @@ -358,7 +358,7 @@ export function scanSync(query: string): ScanResult {
resultPtr = wasmModule._wasm_scan(queryPtr);
const resultStr = ptrToString(resultPtr);

if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}

Expand Down
22 changes: 22 additions & 0 deletions parser/test/parser.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -88,4 +88,26 @@ describe('Parser', () => {
});
}
});
});

describe('Issue Test - INSERT with multiple VALUES', () => {
const testSQL = "INSERT INTO logtable (message) VALUES ('Init'), ('Reboot'), ('ERROR'), ('Warning'), ('info');";
const versions = [13, 14, 15, 16, 17];

for (const version of versions) {
it(`should parse with PostgreSQL v${version} without throwing`, async () => {
try {
const versionModule = require(`../wasm/v${version}.cjs`);
await versionModule.loadModule();
const result = await versionModule.parse(testSQL);
assert.ok(result); // Just verify we got a result
} catch (e) {
if (e.code === 'MODULE_NOT_FOUND') {
console.log(`Version ${version} not available in this build`);
} else {
throw e;
}
}
});
}
});
59 changes: 0 additions & 59 deletions parser/test/parser.test.ts

This file was deleted.

4 changes: 2 additions & 2 deletions versions/13/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@libpg-query/v13",
"version": "13.5.1",
"version": "13.5.2",
"description": "The real PostgreSQL query parser",
"homepage": "https://github.com/launchql/libpg-query-node",
"main": "./wasm/index.cjs",
Expand Down Expand Up @@ -49,4 +49,4 @@
"plpgsql",
"database"
]
}
}
4 changes: 2 additions & 2 deletions versions/13/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export const parse = awaitInit(async (query: string) => {
try {
resultPtr = wasmModule._wasm_parse_query(queryPtr);
const resultStr = ptrToString(resultPtr);
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}
return JSON.parse(resultStr);
Expand All @@ -74,7 +74,7 @@ export function parseSync(query: string) {
try {
resultPtr = wasmModule._wasm_parse_query(queryPtr);
const resultStr = ptrToString(resultPtr);
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}
return JSON.parse(resultStr);
Expand Down
4 changes: 2 additions & 2 deletions versions/14/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export const parse = awaitInit(async (query: string) => {
try {
resultPtr = wasmModule._wasm_parse_query(queryPtr);
const resultStr = ptrToString(resultPtr);
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}
return JSON.parse(resultStr);
Expand All @@ -74,7 +74,7 @@ export function parseSync(query: string) {
try {
resultPtr = wasmModule._wasm_parse_query(queryPtr);
const resultStr = ptrToString(resultPtr);
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}
return JSON.parse(resultStr);
Expand Down
4 changes: 2 additions & 2 deletions versions/15/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export const parse = awaitInit(async (query: string) => {
try {
resultPtr = wasmModule._wasm_parse_query(queryPtr);
const resultStr = ptrToString(resultPtr);
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}
return JSON.parse(resultStr);
Expand All @@ -74,7 +74,7 @@ export function parseSync(query: string) {
try {
resultPtr = wasmModule._wasm_parse_query(queryPtr);
const resultStr = ptrToString(resultPtr);
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}
return JSON.parse(resultStr);
Expand Down
4 changes: 2 additions & 2 deletions versions/16/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export const parse = awaitInit(async (query: string) => {
try {
resultPtr = wasmModule._wasm_parse_query(queryPtr);
const resultStr = ptrToString(resultPtr);
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}
return JSON.parse(resultStr);
Expand All @@ -74,7 +74,7 @@ export function parseSync(query: string) {
try {
resultPtr = wasmModule._wasm_parse_query(queryPtr);
const resultStr = ptrToString(resultPtr);
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}
return JSON.parse(resultStr);
Expand Down
4 changes: 2 additions & 2 deletions versions/17/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export const parse = awaitInit(async (query: string) => {
try {
resultPtr = wasmModule._wasm_parse_query(queryPtr);
const resultStr = ptrToString(resultPtr);
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}
return JSON.parse(resultStr);
Expand All @@ -74,7 +74,7 @@ export function parseSync(query: string) {
try {
resultPtr = wasmModule._wasm_parse_query(queryPtr);
const resultStr = ptrToString(resultPtr);
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.includes('ERROR')) {
if (resultStr.startsWith('syntax error') || resultStr.startsWith('deparse error') || resultStr.startsWith('ERROR')) {
throw new Error(resultStr);
}
return JSON.parse(resultStr);
Expand Down