Skip to content

Commit

Permalink
fix cassandra bug
Browse files Browse the repository at this point in the history
  • Loading branch information
peterprib committed Sep 15, 2020
1 parent 8d564fb commit 633086d
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 11 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,8 @@ _Note_ The examples will require the drivers to be installed

# Version

0.1.1 Bug fix commits DataStax and Cassandra as concept doesn't exist

0.1.0 Add DataStax and Cassandra. Include drivers rather than separate install. Add limited mustache on statements. Performance metrics.

0.0.7 Use new feature in postgresql to return columns as array
Expand Down
91 changes: 82 additions & 9 deletions connectionManager/connection-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -474,6 +474,15 @@ function Driver(a) {
a
);
}
Driver.prototype.batch=function(pool,conn,done,error) {
const batch=conn.batch;
if(batch==null) {
done();
return;
}
delete conn.batch;
this.query(pool,conn,"begin batch "+batch.join(";")+" apply batch;",null,done,error); //cassandra form
}
Driver.prototype.beginTransactionNoAction=function(pool,conn,done,error) {
if(logger.active) logger.send("Driver.beginTransactionNoAction");
done();
Expand Down Expand Up @@ -635,6 +644,29 @@ Driver.prototype.getConnectionQ=function(pool,node,done,error) {
error(e);
}
};
Driver.prototype.execC=function(pool,preparedSql,params,done,error) {
if(logger.active) logger.send("Driver.execC "+JSON.stringify({params:params}));
const thisObject=this;
try{
preparedSql.exec(params||this.paramNull,
(result)=>{
if(logger.active) logger.send("Driver.execC first 100 chars results"+JSON.stringify(result||"<null>").substring(1,100));
done(result);
},
(err)=>{
if(logger.active) logger.send("Driver.execC fail: "+err);
try{
error(err);
} catch(e) {
logger.sendError("Driver.execC fail error: "+e+" stack:\n"+e.stack);
}
}
);
} catch(e) {
logger.sendError("Driver.execC error: "+e);
error(e);
}
};
Driver.prototype.execQ=function(pool,preparedSql,params,done,error) {
if(logger.active) logger.send("Driver.execQ "+JSON.stringify({params:params}));
const thisObject=this;
Expand All @@ -658,6 +690,25 @@ Driver.prototype.execQ=function(pool,preparedSql,params,done,error) {
error(e);
}
};
Driver.prototype.prepareC=function(pool,conn,sql,done,error) {
if(logger.active) logger.send("Driver.prepareC "+JSON.stringify({sql:sql}));
const thisObject=this;
try{
conn.prepare(sql,
(prepResult)=>{
if(logger.active) logger.send("Driver.prepareC prepared completed");
done(prepResult);
},
(err)=>{
if(logger.active) logger.send("Driver.prepareC fail: "+err);
error(err);
}
);
} catch(e) {
logger.sendError("Driver.prepareC error: "+e);
error(e);
}
};
Driver.prototype.prepareQ=function(pool,conn,sql,done,error) {
if(logger.active) logger.send("Driver.prepareQ "+JSON.stringify({sql:sql}));
const thisObject=this;
Expand Down Expand Up @@ -696,15 +747,15 @@ Driver.prototype.queryC=function(pool,conn,sql,params,done,error) {
}
};
Driver.prototype.queryCE=function(pool,conn,sql,params,done,error) {
if(logger.active) logger.send("Driver.queryC "+JSON.stringify({sql:sql,params:params}));
if(logger.active) logger.send("Driver.queryCE "+JSON.stringify({sql:sql,params:params}));
const thisObject=this;
try{
conn.execute(sql,(params||this.paramNull),(err, result) => {
if(err) {
if(logger.active) logger.send("Driver.queryC error: "+err);
if(logger.active) logger.send("Driver.queryCE error: "+err);
error(err);
} else {
if(logger.active) logger.send("Driver.queryC first 100 chars results"+JSON.stringify(result||"<null>").substring(1,100));
if(logger.active) logger.send("Driver.queryCE first 100 chars results"+JSON.stringify(result||"<null>").substring(1,100));
done(result);
}
});
Expand All @@ -713,28 +764,44 @@ Driver.prototype.queryCE=function(pool,conn,sql,params,done,error) {
error(e);
}
};

Driver.prototype.queryCEP=function(pool,conn,sql,params,done,error) {
if(logger.active) logger.send("Driver.queryCEP "+JSON.stringify({sql:sql,params:params}));
const thisObject=this;
try{
conn.execute(sql,(params||this.paramNull),{prepare:true},(err, result) => {
if(err) {
if(logger.active) logger.send("Driver.queryCEP error: "+err);
error(err);
} else {
if(logger.active) logger.send("Driver.queryCEP first 100 chars results"+JSON.stringify(result||"<null>").substring(1,100));
done(result);
}
});
} catch(e) {
logger.sendError("Driver.queryCEP error: "+e);
error(e);
}
};
Driver.prototype.queryCPG=function(pool,conn,sql,params,done,error) {
const thisObject=this,
query={text:sql,values:(params||this.paramNull)};
if(pool.node.columnsAsArray) query.rowMode='array';
if(logger.active) logger.send({label:"Driver.queryCOG ",query:query});
if(logger.active) logger.send({label:"Driver.queryCPG ",query:query});
try{
conn.query(query,(err, result) => {
if(err) {
if(logger.active) logger.send("Driver.queryC error: "+err);
if(logger.active) logger.send("Driver.queryCPG error: "+err);
error(err);
} else {
if(logger.active) logger.send("Driver.queryC first 100 chars results"+JSON.stringify(result||"<null>").substring(1,100));
if(logger.active) logger.send("Driver.queryCPG first 100 chars results"+JSON.stringify(result||"<null>").substring(1,100));
done(result);
}
});
} catch(e) {
logger.sendError("Driver.queryC error: "+e);
logger.sendError("Driver.queryCPG error: "+e);
error(e);
}
},

Driver.prototype.queryNeo4j=function(pool,session,cmd,params,done,error) {
if(logger.active) logger.send("Driver.queryNeo4j "+JSON.stringify({cmd:cmd,params:params}));
try{
Expand Down Expand Up @@ -779,7 +846,10 @@ let DriverType = {
requireName:'cassandra-driver',
query:Driver.prototype.queryCE,
beginTransaction:Driver.prototype.beginTransactionNoAction,
commit:Driver.prototype.commitNoAction,
testOnConnect:"use {{dbname}}",
prepareIsQuery:true,
query:Driver.prototype.queryCEP,
optionsMapping: {
options:true,
credentials: { username: 'user', password: 'password' },
Expand All @@ -799,7 +869,10 @@ let DriverType = {
requireName:'dse-driver',
query:Driver.prototype.queryCE,
beginTransaction:Driver.prototype.beginTransactionNoAction,
commit:Driver.prototype.commitNoAction,
testOnConnect:"use {{dbname}}",
prepareIsQuery:true,
query:Driver.prototype.queryCEP,
optionsMapping: {
options:true,
credentials: { username: 'user', password: 'password' },
Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "node-red-contrib-connectionmanager",
"version": "0.1.0",
"version": "0.1.1",
"description": "Node-RED implements generalised connections manager.",
"dependencies": {
"node-red-contrib-logger": "0.0.4",
Expand Down

0 comments on commit 633086d

Please sign in to comment.