Skip to content

Commit 2b49e16

Browse files
committed
fix: support returning when insert with no columns in sqlite
1 parent d619d1a commit 2b49e16

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

pegjs/sqlite.pegjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1891,7 +1891,8 @@ insert_no_columns_stmt
18911891
t:table_name __
18921892
p:insert_partition? __
18931893
v:insert_value_clause __
1894-
odp: on_duplicate_update_stmt? {
1894+
odp: on_duplicate_update_stmt? __
1895+
r:returning_stmt? {
18951896
if (t) {
18961897
tableList.add(`insert::${t.db}::${t.table}`)
18971898
columnList.add(`insert::${t.table}::(.*)`);
@@ -1909,6 +1910,7 @@ insert_no_columns_stmt
19091910
partition: p,
19101911
prefix,
19111912
on_duplicate_update: odp,
1913+
returning: r,
19121914
}
19131915
};
19141916
}

test/sqlite.spec.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,12 +235,16 @@ describe('sqlite', () => {
235235
})
236236

237237
it('should support INSERT ... RETURNING *', () => {
238-
const sql = `INSERT INTO users (email) VALUES (?) RETURNING *`
238+
let sql = `INSERT INTO users (email) VALUES (?) RETURNING *`
239239
expect(getParsedSql(sql)).to.be.equal(`INSERT INTO "users" (email) VALUES (?) RETURNING *`)
240+
sql = `INSERT INTO users VALUES (2, "example", "example@example.com") RETURNING *;`
241+
expect(getParsedSql(sql)).to.be.equal(`INSERT INTO "users" VALUES (2,"example","example@example.com") RETURNING *`)
240242
})
241243
it('should support INSERT ... RETURNING specific columns', () => {
242-
const sql = `INSERT INTO users (email) VALUES (?) RETURNING id, email as email_address`
244+
let sql = `INSERT INTO users (email) VALUES (?) RETURNING id, email as email_address`
243245
expect(getParsedSql(sql)).to.be.equal(`INSERT INTO "users" (email) VALUES (?) RETURNING "id", "email" AS "email_address"`)
246+
sql = `INSERT INTO users VALUES (2, "example", "example@example.com") RETURNING id, email;`
247+
expect(getParsedSql(sql)).to.be.equal(`INSERT INTO "users" VALUES (2,"example","example@example.com") RETURNING "id", "email"`)
244248
})
245249
it('should support UPDATE ... RETURNING *', () => {
246250
const sql = `UPDATE users SET email = ? RETURNING *`

0 commit comments

Comments
 (0)