diff --git a/package-lock.json b/package-lock.json index 6285ae0..f2ac3ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@sqlitecloud/drivers", - "version": "1.0.345", + "version": "1.0.354", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@sqlitecloud/drivers", - "version": "1.0.345", + "version": "1.0.354", "license": "MIT", "dependencies": { "@craftzdog/react-native-buffer": "^6.0.5", diff --git a/package.json b/package.json index a79014d..14901af 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@sqlitecloud/drivers", - "version": "1.0.345", + "version": "1.0.354", "description": "SQLiteCloud drivers for Typescript/Javascript in edge, web and node clients", "main": "./lib/index.js", "types": "./lib/index.d.ts", diff --git a/src/drivers/protocol.ts b/src/drivers/protocol.ts index ae9238d..5ecd473 100644 --- a/src/drivers/protocol.ts +++ b/src/drivers/protocol.ts @@ -335,6 +335,10 @@ export function popData(buffer: Buffer): { data: SQLiteCloudDataTypes | SQLiteCl /** Format a command to be sent via SCSP protocol */ export function formatCommand(command: SQLiteCloudCommand): string { + // core returns null if there's a space after the semi column + // we want to maintain a compatibility with the standard sqlite3 driver + command.query = command.query.trim() + if (command.parameters && command.parameters.length > 0) { // by SCSP the string paramenters in the array are zero-terminated return serializeCommand([command.query, ...(command.parameters || [])], true) diff --git a/test/statement.test.ts b/test/statement.test.ts index 2fa07ae..362e468 100644 --- a/test/statement.test.ts +++ b/test/statement.test.ts @@ -190,7 +190,6 @@ it('Statement.each without bindings', done => { statement.each(4, rowCallback, completeCallback) }) - it('Statement.get', done => { const chinook = getChinookDatabase() expect(chinook).toBeDefined() @@ -226,7 +225,6 @@ it('Statement.get without bindings', done => { }) }) - it('Statement.run', done => { const chinook = getChinookDatabase() expect(chinook).toBeDefined() @@ -268,7 +266,7 @@ it('Statement.run - insert', done => { }) }) -it('Statement.run - insert with empty space after semicolon returns null', done => { +it("Statement.run - insert with empty space after semicolon shouldn't return null", done => { // create simple "people" database that we can write in... const database = getTestingDatabase(error => { expect(error).toBeNull() @@ -277,14 +275,15 @@ it('Statement.run - insert with empty space after semicolon returns null', done // @ts-ignore statement.run('John Wayne', 73, 'Horse Riding', (error, results) => { - expect(results).toBeNull() + expect(results).not.toBeNull() + expect(results.lastID).toBeGreaterThan(1) + expect(results.changes).toBe(1) done() }) }) }) - it('Statement.run - update', done => { const database = getTestingDatabase(error => { expect(error).toBeNull() @@ -300,7 +299,7 @@ it('Statement.run - update', done => { }) }) -it('Statement.run - update with empty space after semicolon returns null', done => { +it("Statement.run - update with empty space after semicolon shouldn't return null", done => { const database = getTestingDatabase(error => { expect(error).toBeNull() @@ -308,7 +307,8 @@ it('Statement.run - update with empty space after semicolon returns null', done // @ts-ignore statement.run('John Wayne', 1, (error, results) => { - expect(results).toBeNull() + expect(results).not.toBeNull() + expect(results.changes).toBe(1) done() }) @@ -330,7 +330,7 @@ it('Statement.run - delete', done => { }) }) -it('Statement.run - delete with empty space after semicolon returns null', done => { +it("Statement.run - delete with empty space after semicolon shouldn't return null", done => { const database = getTestingDatabase(error => { expect(error).toBeNull() @@ -338,10 +338,10 @@ it('Statement.run - delete with empty space after semicolon returns null', done // @ts-ignore statement.run(1, (error, results) => { - expect(results).toBeNull() + expect(results).not.toBeNull() + expect(results.changes).toBe(1) done() }) }) }) -