diff --git a/package.json b/package.json index e12df67..bfc0cfc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nosqlprovider", - "version": "0.6.21", + "version": "0.6.22", "description": "A cross-browser/platform indexeddb-like client library", "author": "David de Regt ", "scripts": { diff --git a/src/SqlProviderBase.ts b/src/SqlProviderBase.ts index 981edd7..de95ac6 100644 --- a/src/SqlProviderBase.ts +++ b/src/SqlProviderBase.ts @@ -959,7 +959,7 @@ class SqlStore implements NoSqlProvider.DbStore { const itemPageSize = Math.floor(this._trans.internal_getMaxVariables() / insertParamCount); // data contains all the input parameters for (let i = 0; i < (data.length / insertParamCount); i += itemPageSize) { - const thisPageCount = Math.min(itemPageSize, (data.length / insertParamCount)) - i; + const thisPageCount = Math.min(itemPageSize, (data.length / insertParamCount) - i); const qmarksValues = _.fill(new Array(thisPageCount), generateParamPlaceholder(insertParamCount)); insertQueries.push(this._trans.internal_nonQuery('INSERT INTO ' + this._schema.name + '_' + index.name + ' (nsp_key, nsp_refpk' + (index.includeDataInIndex ? ', nsp_data' : '') + diff --git a/src/tests/NoSqlProviderTests.ts b/src/tests/NoSqlProviderTests.ts index 1f4fd97..ed50051 100644 --- a/src/tests/NoSqlProviderTests.ts +++ b/src/tests/NoSqlProviderTests.ts @@ -762,6 +762,34 @@ describe('NoSqlProvider', function () { }); }); + // Ensure that we properly batch multi-key sql inserts + if (provName.indexOf('sql') !== -1) { + it('MultiEntry multipart index - large index put', () => { + return openProvider(provName, { + version: 1, + stores: [ + { + name: 'test', + primaryKeyPath: 'id', + indexes: [ + { + name: 'key', + multiEntry: true, + keyPath: 'k.k', + } + ] + } + ] + }, true).then(prov => { + const keys: string[] = []; + _.times(1000, () => { + keys.push(_.uniqueId('multipartKey')); + }); + return prov.put('test', { id: 'a', val: 'b', k: { k: keys } }); + }); + }); + } + it('MultiEntry multipart indexed tests - Compound Key', () => { return openProvider(provName, { version: 1,