ifx_db
Version:
IBM Informix bindings for node
81 lines (68 loc) • 2.6 kB
JavaScript
var ifxdb = require("../")
, common = require("./common")
, assert = require("assert")
, cn = common.connectionString;
var stmt0 = {};
var stmt1 = {};
var stmt2 = {};
var queryExecuted = 0;
stmt1.sql = 'SELECT COUNT(C1) FROM FINAL TABLE(UPDATE T1 SET C2=?, C3=? WHERE C1=1)';
stmt1.params = ['Joe', 'Tim'];
stmt1.noResults = false;
stmt2.sql = 'SELECT COUNT(C1) FROM FINAL TABLE(UPDATE T1 SET C2=?, C3=? WHERE C1=1)';
stmt2.params = ['Jane', 'Joan'];
stmt2.noResults = false;
ifxdb.debug(true);
ifxdb.open(cn, function(err, conn1) {
if (err) console.log(err);
assert.equal(err, null);
stmt0.sql = 'DROP TABLE T1';
stmt0.noResults = true;
try{ conn1.querySync(stmt0.sql); } catch(e) { }
stmt0.sql = 'CREATE TABLE T1 (C1 INT PRIMARY KEY NOT NULL, C2 CHAR(50), C3 CHAR(50))';
conn1.querySync(stmt0.sql);
stmt0.sql = "INSERT INTO T1 VALUES (1, 'ABCDEF', 'GHIJK')";
conn1.querySync(stmt0.sql);
ifxdb.open(cn, function(err, conn2) {
if (err) return console.log(err);
conn1.beginTransaction(function(err) {
if (err) return console.log(err);
console.log('Transaction 1 opened');
conn2.beginTransaction(function(err) {
if (err) return console.log(err);
console.log('Transaction 2 opened');
conn1.query(stmt1, function(err, data) {
console.log('Query 1 executed');
if (err) {
conn1.rollbackTransaction();
console.log(err);
} else {
conn1.commitTransaction();
console.log('<<< DATA >>>:', data);
}
queryExecuted++;
});
conn2.query(stmt2, function(err, data) {
console.log('Query 2 executed');
if (err) {
conn2.rollbackTransaction();
console.log(err);
} else {
conn2.commitTransaction();
console.log('<<< DATA >>>:', data);
assert.deepEqual(data, [ { '1': 1 } ]);
conn2.closeSync();
}
queryExecuted++;
});
});
});
});
var interval = setInterval(function(){
if(queryExecuted === 2) {
conn1.querySync("drop table T1");
conn1.closeSync();
clearInterval(interval);
}
}, 1000);
});