Last active
October 3, 2016 07:51
-
-
Save Znarkus/5b5b4ff4b31ca2eb1b3d77b47df9dbb7 to your computer and use it in GitHub Desktop.
Transaction test Postgres
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ DB_POOL_MIN=1 DB_POOL_MAX=1 node -r dotenv/config -r babel-register -r babel-polyfill scripts/dev/trx-test.js | |
knex:tx trx1: Starting top level transaction +0ms | |
knex:tx trx2: Starting top level transaction +13ms | |
bolt:knex:query { bindings: undefined, sql: 'BEGIN;' } +61ms | |
bolt:knex:query { bindings: [], sql: 'select * from testt' } +16ms | |
bolt:knex:query { bindings: [ 1 ], sql: 'update testt set counter = counter + 1 where id = ?' } +4ms | |
AFTER UPDATE id 1 | |
AFTER 5s DELAY id 1 | |
bolt:knex:query { bindings: undefined, sql: 'COMMIT;' } +5s | |
knex:tx trx1: releasing connection +2ms | |
bolt:knex:query { bindings: undefined, sql: 'BEGIN;' } +1ms | |
bolt:knex:query { bindings: [], sql: 'select * from testt' } +2ms | |
bolt:knex:query { bindings: [ 2 ], sql: 'update testt set counter = counter + 1 where id = ?' } +2ms | |
AFTER UPDATE id 2 | |
AFTER 5s DELAY id 2 | |
bolt:knex:query { bindings: undefined, sql: 'COMMIT;' } +5s | |
knex:tx trx2: releasing connection +1ms | |
FINISHED | |
^C | |
$ DB_POOL_MIN=1 DB_POOL_MAX=2 node -r dotenv/config -r babel-register -r babel-polyfill scripts/dev/trx-test.js | |
knex:tx trx1: Starting top level transaction +0ms | |
knex:tx trx2: Starting top level transaction +6ms | |
bolt:knex:query { bindings: undefined, sql: 'BEGIN;' } +60ms | |
bolt:knex:query { bindings: undefined, sql: 'BEGIN;' } +16ms | |
bolt:knex:query { bindings: [], sql: 'select * from testt' } +2ms | |
bolt:knex:query { bindings: [], sql: 'select * from testt' } +2ms | |
bolt:knex:query { bindings: [ 1 ], sql: 'update testt set counter = counter + 1 where id = ?' } +4ms | |
bolt:knex:query { bindings: [ 2 ], sql: 'update testt set counter = counter + 1 where id = ?' } +3ms | |
AFTER UPDATE id 1 | |
AFTER UPDATE id 2 | |
AFTER 5s DELAY id 1 | |
AFTER 5s DELAY id 2 | |
bolt:knex:query { bindings: undefined, sql: 'COMMIT;' } +5s | |
bolt:knex:query { bindings: undefined, sql: 'COMMIT;' } +0ms | |
knex:tx trx1: releasing connection +2ms | |
knex:tx trx2: releasing connection +1ms | |
FINISHED | |
$ DB_POOL_MIN=1 DB_POOL_MAX=2 node -r dotenv/config -r babel-register -r babel-polyfill scripts/dev/trx-test.js | |
knex:tx trx1: Starting top level transaction +0ms | |
knex:tx trx2: Starting top level transaction +6ms | |
bolt:knex:query { bindings: undefined, sql: 'BEGIN;' } +61ms | |
bolt:knex:query { bindings: undefined, sql: 'BEGIN;' } +16ms | |
bolt:knex:query { bindings: [], sql: 'select * from testt' } +2ms | |
bolt:knex:query { bindings: [], sql: 'select * from testt' } +2ms | |
bolt:knex:query { bindings: [ 1 ], sql: 'update testt set counter = counter + 1 where id = ?' } +3ms | |
bolt:knex:query { bindings: [ 1 ], sql: 'update testt set counter = counter + 1 where id = ?' } +4ms | |
AFTER UPDATE id 1 | |
AFTER 5s DELAY id 1 | |
bolt:knex:query { bindings: undefined, sql: 'COMMIT;' } +5s | |
knex:tx trx1: releasing connection +2ms | |
AFTER UPDATE id 1 | |
AFTER 5s DELAY id 1 | |
bolt:knex:query { bindings: undefined, sql: 'COMMIT;' } +5s | |
knex:tx trx2: releasing connection +2ms | |
FINISHED | |
$ DB_POOL_MIN=1 DB_POOL_MAX=1 node -r dotenv/config -r babel-register -r babel-polyfill scripts/dev/trx-test.js | |
knex:tx trx1: Starting top level transaction +0ms | |
knex:tx trx2: Starting top level transaction +11ms | |
bolt:knex:query { bindings: undefined, sql: 'BEGIN;' } +70ms | |
bolt:knex:query { bindings: [], sql: 'select * from testt' } +17ms | |
bolt:knex:query { bindings: [ 1 ], sql: 'update testt set counter = counter + 1 where id = ?' } +5ms | |
AFTER UPDATE id 1 | |
AFTER 5s DELAY id 1 | |
bolt:knex:query { bindings: undefined, sql: 'COMMIT;' } +5s | |
knex:tx trx1: releasing connection +2ms | |
bolt:knex:query { bindings: undefined, sql: 'BEGIN;' } +1ms | |
bolt:knex:query { bindings: [], sql: 'select * from testt' } +2ms | |
bolt:knex:query { bindings: [ 1 ], sql: 'update testt set counter = counter + 1 where id = ?' } +2ms | |
AFTER UPDATE id 1 | |
AFTER 5s DELAY id 1 | |
bolt:knex:query { bindings: undefined, sql: 'COMMIT;' } +5s | |
knex:tx trx2: releasing connection +1ms | |
FINISHED |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict' | |
require('../../src/env') | |
const knex = require('../../src/knex') | |
const Promise = require('bluebird') | |
Promise.all([ | |
test(1), | |
test(1), | |
]).then(() => { | |
console.log('FINISHED') | |
return knex.destroy() | |
}) | |
async function test (id) { | |
await knex.transaction(async trx => { | |
await trx.raw('select * from testt') | |
await trx.raw('update testt set counter = counter + 1 where id = ?', id) | |
console.log(`AFTER UPDATE id ${id}`) | |
await Promise.delay(5000) | |
console.log(`AFTER 5s DELAY id ${id}`) | |
}) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment