Releases: googleapis/nodejs-spanner
v4.0.2
v4.0.1
v4.0.0
⚠ BREAKING CHANGES
- deps: this will ship async/await in the generated code
- upgrade engines field to >=8.10.0 (#587)
Bug Fixes
- deps: update dependency @google-cloud/common-grpc to v1 (#607) (084dc8c)
- deps: update dependency @google-cloud/paginator to ^0.2.0 (#560) (8fe33a1)
- deps: update dependency @google-cloud/paginator to v1 (#593) (bfb2255)
- deps: update dependency @google-cloud/precise-date to v1 (#600) (f52494f)
- deps: update dependency @google-cloud/projectify to v1 (#591) (22713c1)
- deps: update dependency @google-cloud/promisify to v1 (#592) (cb76922)
- deps: update dependency arrify to v2 (#577) (6e0ddc8)
- deps: update dependency google-auth-library to v4 (#599) (21b9995)
- deps: update dependency google-gax to ^0.26.0 (#586) (0f88be2)
- deps: update dependency merge-stream to v2 (#624) (3aa676d)
- deps: update dependency p-queue to v4 (#558) (7547e21)
- deps: update dependency p-queue to v5 (#578) (7827fb4)
- deps: update dependency p-queue to v6.0.2 (#643) (ace1359)
- deps: upgrade to google-gax 1.x (#651) (a32e838)
- docs: add google.type namespace (#605) (5cc6dc1)
- docs: link to reference docs section on googleapis.dev (#654) (2379dc2)
- docs: move to new client docs URL (#647) (7dec1bd)
- transaction: set/update seqno for all sql requests (#661) (102cae1)
- DEADLINE_EXCEEDED is no longer retried (#598) (1cac4fc)
- include 'x-goog-request-params' header in requests (#573) (e0cb9dc)
- treat deadline errors as idempotent (#602) (b3d494a)
- update retry config (#650) (f1e8104)
Build System
Features
- add .repo-metadata.json and move to new README template (#636) (11007cf)
- support apiEndpoint override (#634) (6a5eb36)
- support apiEndpoint override in client constructor (#639) (f6ebb27)
Miscellaneous Chores
v3.1.0
v3.0.0
02-25-2019 12:38 PST
Breaking Changes
- breaking: refactor(transaction): split logic into new classes (#506)
- breaking: feat(timestamp): create new date/timestamp classes (#517)
- fix: run generator to bring in streaming retry configs (#448)
Read-only Transactions (Snapshots) are no longer runnable via Database#runTransaction
(#506)
Database#runTransaction
is useful if want to replay a Transaction in its entirety in case you run into an ABORTED
error. This should never happen with Snapshots, so it felt like it was time to create a new method just for them. This change also means that runTransaction
will only ever return read-write transactions.
Before
const bounds = {
readOnly: true,
strong: true,
};
database.runTransaction(bounds, (err, transaction) => {
// ...
});
After
const bounds = {
strong: true,
};
database.getSnapshot(bounds, (err, snapshot) => {
// ...
});
Timestamp bounds now offer nanosecond precision (#506)
This change allows you to specify a Snapshot read timestamp with more precision. Previously one could only specify in seconds, but now we support both milliseconds and nanoseconds.
Before
const bounds = {
exactStaleness: 5
};
const bounds = {
readTimestamp: Date.now()
};
After
const bounds = {
// millisecond precision for staleness
exactStaleness: 5000,
// or if you need nano/micro precision for staleness
exactStaleness: {seconds: 5, nanos: 321} // => 5000000321 nanoseconds
};
const bounds = {
readTimestamp: Spanner.timestamp('2019-01-12T00:30:35.381101032Z')
};
Transaction#end changes. (#506)
Transactions saw a sizeable refactor with this version, previously end()
performed a number of asynchronous tasks when called, however this is no longer true. Because of this, there isn't much of a need to track when end is finished, so we've dropped the callback parameter.
Additionally, end()
will now be called automatically for failed calls to Transaction#commit()
and Transaction#rollback()
. If your code calls end after a failed commit/rollback, it will simply no-op.
Before
transaction.end(callback);
After
transaction.end();
callback();
Session#beginTransaction was removed (#506)
Spanner supports 4 different types of Transactions:
- ReadWrite
- ReadOnly
- PartitionedDml
- Batch
Using one method for all types became cumbersome when trying to manage the various options available to each, now each type has its own method.
Before
const transaction = await session.beginTransaction({readWrite: true});
const snapshot = await session.beginTransaction({readOnly: true});
After
const transaction = session.transaction();
await transaction.begin();
const snapshot = session.snapshot({strong: true});
await snapshot.begin();
Timestamps now represented by @google-cloud/precise-time
(#517)
While Spanner supports timestamps with nanosecond precision, JavaScript Dates do not. So we created the PreciseDate
object which extends the native Date and adds both microsecond and nanosecond support.
Before
const timestamp = Spanner.timestamp('2019-01-12T00:30:35.381101032Z');
// => {value: '2019-01-12T00:30:35.381Z'}
After
// PreciseDate object
const timestamp = Spanner.timestamp('2019-01-12T00:30:35.381101032Z');
timestamp.toJSON(); // => '2019-01-12T00:30:35.381101032Z'
timestamp.toFullTimeString(); // => '1547253035381101032' (nanoseconds)
SpannerDate now extends the native Date object. (#517)
Since Timestamps saw an update, it made sense to give Spanner Date objects a similar update. The Spanner.date()
method now returns a native Date object.
Before
const date = Spanner.date('3-22-2018');
// => {value: '2018-3-22'}
After
// Date object
const date = Spanner.date('3-22-2018');
date.toJSON(); // => '2018-3-22'
New Features
- refactor(types): enable noImplicitAny in session-pool.ts (#508)
- refactor(table): improve typescript defs (#495)
- refactor(ts): partial-result-stream types/refactor (#488)
- refactor(codec): improve typescript defs (#490)
- chore(SessionPool): improve typescript types (#479)
- chore(typescript): add types for spanner gapic (#487)
- refactor(ts): enable noImplicitAny on src/session.ts (#457)
Bug Fixes
- fix: throw on invalid credentials (#522)
- fix(transaction): re-use session in transaction runners (#540)
Dependencies
- chore(deps): update dependency mocha to v6 (#532)
- fix(deps): update dependency @google-cloud/promisify to ^0.4.0 (#524)
- chore(deps): update dependency @types/p-retry to v3 (#521)
- fix(deps): update dependency yargs to v13 (#520)
- fix(deps): update dependency @google-cloud/common-grpc to ^0.10.0 (#504)
- fix(deps): update dependency google-gax to ^0.25.0 (#505)
- chore(deps): update dependency eslint-config-prettier to v4 (#502)
- fix(deps): update dependency google-gax to ^0.24.0 (#501)
- fix(deps): update dependency google-auth-library to v3 (#498)
- fix(deps): update dependency google-gax to ^0.23.0 (#496)
- chore(deps): update dependency concat-stream to v2 (#489)
- refactor: removed async from dependency list (#449)
- chore(deps): update dependency @types/sinon to v7 (#480)
- fix(deps): update dependency p-retry to v3 (#481)
- chore(deps): update dependency typescript to ~3.2.0 (#459)
Documentation
- docs: fixed example for table.upsert() (#533)
- docs: update links in contrib guide (#525)
- docs: update contributing path in README (#515)
- docs: add lint/fix example to contributing guide (#512)
- docs: fix example comments (#511)
- chore: update proto licenses
- build: check broken links in generated docs (#491)
- fix(docs): remove unused long running operations and IAM types
- refactor: modernize sample tests (#484)
- docs: fix links in docstrings (#467)
- docs: fix typo (#465)
- chore: update license file (#464)
- docs: update readme badges (#462)
- docs(samples): Add sample to delete using a mutation. (#458)
Internal / Testing Changes
- chore: add spanner_grpc_config.json and enable grpc-gcp support for spanner (#503)
- build: use linkinator for docs test (#523)
- build: create docs test npm scripts (#519)
- build: test using @grpc/grpc-js in CI (#516)
- chore: move CONTRIBUTING.md to root (#514)
- refactor: improve generated code style. (#510)
- build: ignore googleapis.com in doc link check (#500)
- fix: fix the sample tests (#486)
- chore(build): inject yoshi automation key (#478)
- chore: update nyc and eslint configs (#477)
- chore: fix publish.sh permission +x (#475)
- fix(build): fix Kokoro release script (#474)
- build: add Kokoro configs for autorelease ([#473...
v2.2.1
v2.2.0
11-27-2018 09:13 PST
Implementation Changes
- fix: transaction async error handling that not thrown the full error (#447)
- fix(transaction): accept json options in run/runStream (#446)
- refactor(transaction): error handling (#360)
- refactor(ts): enable noImplicitThis in the tsconfig (#411)
- refactor(ts): use import/export for local files (#408)
- refactor(ts): add type packages for many things (#406)
- refactor(ts): convert tests to typescript (#404)
- refactor(typescript): rename src and system-test files to *.ts (#402)
- refactor(typescript): perform initial TypeScript conversion (#384)
- fix: Only run mutations inside of a transaction. (#361)
New Features
- feat(session): add label support (#373)
Dependencies
- chore(deps): update dependency @types/sinon to v5.0.7 (#444)
- fix: Pin @types/sinon to last compatible version (#443)
- chore(deps): update dependency @types/p-queue to v3 (#440)
- fix(deps): update dependency google-gax to ^0.22.0 (#435)
- chore(deps): update dependency gts to ^0.9.0 (#434)
- chore(deps): update dependency @google-cloud/nodejs-repo-tools to v3 (#429)
- chore(deps): update dependency @types/is to v0.0.21 (#426)
- fix(deps): update dependency through2 to v3 (#423)
- chore: remove unused google-proto-files dep (#421)
- chore(deps): update dependency eslint-plugin-node to v8 (#407)
- refactor: drop dependency on delay (#383)
- fix(deps): update dependency google-proto-files to ^0.17.0 (#369)
- chore(deps): update dependency sinon to v7 (#371)
Documentation
- docs(samples): updated samples code to use async await (#385)
- Add Cloud Spanner DML/PDML samples. (#366)
Internal / Testing Changes
- chore: add synth.metadata
- test: fix broken tests (#441)
- refactor(samples): convert ava tests to mocha (#400)
- chore: update eslintignore config (#433)
- chore(build): fix lint rules and build for generated code (#430)
- chore: drop contributors from multiple places (#427)
- chore: use latest npm on Windows (#425)
- fix: update source location for synth (#422)
- fix: re-enable linting and formatting (#420)
- chore: improve typescript config and types (#417)
- chore: update CircleCI config (#416)
- chore: run gts fix (#413)
- chore: remove old issue template (#397)
- chore: update issue templates (#401)
- build: run tests on node11 (#395)
- chores(build): do not collect sponge.xml from windows builds (#389)
- chores(build): run codecov on continuous builds (#386)
- chore: update new issue template (#382)
- fix(tests): use unique label for tests (#367)
- build: fix codecov uploading on Kokoro (#372)
- build(kokoro): test with spanner key (#364)
v2.1.0
Implementation Changes
- chore: use arrow functions (#359)
- fix: change exists to return false on error code 5 (#353)
- Switch to let/const (#328)
- Minor: wrap the inner error on retried transactions and return when deadline exceeded (#309)
- chore: convert index to es6 class (#306)
- Fix p-retry is accepting function not object/promise (#312)
New Features
- feat: dml/pdml support (#348)
- feat(table): drop method and additional error handling to delete (#358)
- feat(PartialResultStream): emit raw responses as event (#357)
- feat(transaction): add backup backoff delay (#350)
Dependencies
- chore(deps): update dependency eslint-plugin-prettier to v3 (#351)
- fix(deps): update dependency @google-cloud/common-grpc to ^0.9.0 (#339)
- fix(deps): update dependency google-gax to ^0.20.0 (#327)
- fix(deps): update dependency delay to v4 (#322)
- fix: upgrade to the latest common-grpc (#320)
- fix(deps): update dependency google-auth-library to v2 (#319)
- fix(deps): update dependency p-queue to v3 (#317)
- chore(deps): update dependency nyc to v13 (#314)
Documentation
Internal / Testing Changes
- chore: update auto-generated config (#362)
- chore: change queries to return expected values (#355)
- Update CI config (#354)
- chore: make sure workloadb benchmark runs properly (#349)
- test: Add delay for system test. (#16)
- Update QuickStart to use "new" syntax for creating Spanner client. (#344)
- test: remove appveyor config (#342)
- Update CI config (#341)
- Fix the failing lint rules (#338)
- Enable prefer-const in the eslint config (#337)
- soften assertion in system tests (#335)
- Update protos and comments (#334)
- fix string comparison in system test (#333)
- Enable no-var in eslint (#331)
- Add synth templates (#330)
- test: throw on deprecation (#279)
- Retry npm install in CI (#323)
- Re-generate library using /synth.py (#316)
- Fix color highlighting in CHANGELOG.md (#313)
- Update sample dependency @google-cloud/spanner to v2 (#310)
- Re-generate library using /synth.py (#308)
v2.0.0
Breaking Changes
-
Drop support for Node.js v4.x.x and v9.x.x (#226)
-
Use es style imports (#302)
The import syntax for this library has changed to be es module compliant.Old code
const spanner = require('@google-cloud/spanner')(); // or const Spanner = require('@google-cloud/spanner'); const spanner = new Spanner();
New code
const {Spanner} = require('@google-cloud/spanner'); const spanner = new Spanner();
New Features
- add runTransactionAsync method (#294)
const {Spanner} = require('@google-cloud/spanner'); const spanner = new Spanner(); const instance = spanner.instance('my-instance'); const database = instance.database('my-database'); await database.runTransactionAsync(async (transaction) => { const [rows] = await transaction.run('SELECT * FROM MyTable'); const data = rows.map(row => row.thing); await transaction.commit(); return data; }).then(data => { // ... });
- feature(database): make session pool hot swappable (#243)
Implementation Changes
- feat: use es style imports (#302)
- fix: perform type check on grpc value (#300)
- chore: use es classes in a few places (#297)
- chore: do not use npm ci (#292)
- chore: split the common module (#289)
- test: fix strict equal assertions (#287)
- chore: ignore package-lock.json (#286)
- chore: use let and const (#283)
- chore: update renovate config (#281)
- Re-generate library using /synth.py (#282)
- chore: use assert.deepStrictEqual instead of assert.deepEqual (#274)
- chore: require node 8 for samples (#273)
- test: use strictEqual in tests (#267)
- use node_library not not internal generate method (#247)
- Configure Renovate (#239)
- fix: drop support for node.js 4.x and 9.x (#226)
Dependencies
- fix(deps): update dependency google-gax to ^0.19.0 (#298)
- chore(deps): update dependency eslint-config-prettier to v3 (#295)
- fix(deps): update dependency google-gax to ^0.18.0 (#278)
- chore(deps): update dependency eslint-plugin-node to v7 (#266)
- refactor: update auth library, common-grpc (#256)
- fix(deps): update dependency yargs to v12 (#254)
- chore(deps): update dependency yargs to v12 (#252)
- chore(deps): update dependency sinon to v6.0.1 (#250)
- chore(package): update eslint to version 5.0.0 (#240)
- chore: update sample lockfiles (#246)
- Update to support google-gax v0.17 (#244)
- fix(package): update @google-cloud/common-grpc to version 0.7.1 (#235)
- refactor: drop dependency on safe-buffer (#232)
- refactor: remove dependency generic-pool (#231)
- refactor: drop dependency on lodash.flatten (#233)
- refactor: remove array-uniq as dependency (#227)
- refactor: remove string-obj-format (#229)
- refactor: remove methmeth as a dependency (#228)
- chore: upgrade several dependencies (#221)