| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent b866755 commit 21b6423
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1866,13 +1866,9 @@ void StatementSync::Run(const FunctionCallbackInfo<Value>& args) { | |||
| 1866 | 1866 | return; | |
| 1867 | 1867 | } | |
| 1868 | 1868 | ||
| 1869 | - auto reset = OnScopeLeave([&]() { sqlite3_reset(stmt->statement_); }); | ||
| 1870 | - r = sqlite3_step(stmt->statement_); | ||
| 1871 | - if (r != SQLITE_ROW && r != SQLITE_DONE) { | ||
| 1872 | - THROW_ERR_SQLITE_ERROR(env->isolate(), stmt->db_.get()); | ||
| 1873 | - return; | ||
| 1874 | - } | ||
| 1875 | - | ||
| 1869 | + sqlite3_step(stmt->statement_); | ||
| 1870 | + r = sqlite3_reset(stmt->statement_); | ||
| 1871 | + CHECK_ERROR_OR_THROW(env->isolate(), stmt->db_.get(), r, SQLITE_OK, void()); | ||
| 1876 | 1872 | Local<Object> result = Object::New(env->isolate()); | |
| 1877 | 1873 | sqlite3_int64 last_insert_rowid = | |
| 1878 | 1874 | sqlite3_last_insert_rowid(stmt->db_->Connection()); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -170,6 +170,25 @@ suite('StatementSync.prototype.run()', () => { | |||
| 170 | 170 | errstr: 'constraint failed', | |
| 171 | 171 | }); | |
| 172 | 172 | }); | |
| 173 | + | ||
| 174 | + test('returns correct metadata when using RETURNING', (t) => { | ||
| 175 | + const db = new DatabaseSync(':memory:'); | ||
| 176 | + const setup = db.exec( | ||
| 177 | + 'CREATE TABLE data(key INTEGER PRIMARY KEY, val INTEGER NOT NULL) STRICT;' | ||
| 178 | + ); | ||
| 179 | + t.assert.strictEqual(setup, undefined); | ||
| 180 | + const sql = 'INSERT INTO data (key, val) VALUES ($k, $v) RETURNING key'; | ||
| 181 | + const stmt = db.prepare(sql); | ||
| 182 | + t.assert.deepStrictEqual( | ||
| 183 | + stmt.run({ k: 1, v: 10 }), { changes: 1, lastInsertRowid: 1 } | ||
| 184 | + ); | ||
| 185 | + t.assert.deepStrictEqual( | ||
| 186 | + stmt.run({ k: 2, v: 20 }), { changes: 1, lastInsertRowid: 2 } | ||
| 187 | + ); | ||
| 188 | + t.assert.deepStrictEqual( | ||
| 189 | + stmt.run({ k: 3, v: 30 }), { changes: 1, lastInsertRowid: 3 } | ||
| 190 | + ); | ||
| 191 | + }); | ||
| 173 | 192 | }); | |
| 174 | 193 | ||
| 175 | 194 | suite('StatementSync.prototype.sourceSQL', () => { | |
| Back | FazBrowse Home | New Git URL |
0 commit comments