Merge pull request #4707 from taosdata/hotfix/TD-2550
[TD-2550]<fix>: fix nodejs connector of td2.0-connector cannot use in…
This commit is contained in:
commit
93f7145695
|
@ -144,18 +144,9 @@ function convertBinary(data, num_of_rows, nbytes = 0, offset = 0, micro=false) {
|
|||
function convertNchar(data, num_of_rows, nbytes = 0, offset = 0, micro=false) {
|
||||
data = ref.reinterpret(data.deref(), nbytes * num_of_rows, offset);
|
||||
let res = [];
|
||||
let currOffset = 0;
|
||||
// every 4 bytes, a character is encoded;
|
||||
while (currOffset < data.length) {
|
||||
let dataEntry = data.slice(currOffset, currOffset + nbytes); //one entry in a row under a column;
|
||||
if (dataEntry.readInt64LE(0) == FieldTypes.C_NCHAR_NULL) {
|
||||
res.push(null);
|
||||
}
|
||||
else {
|
||||
res.push(dataEntry.toString("utf16le").replace(/\u0000/g, ""));
|
||||
}
|
||||
currOffset += nbytes;
|
||||
}
|
||||
let dataEntry = data.slice(0, nbytes); //one entry in a row under a column;
|
||||
//TODO: should use the correct character encoding
|
||||
res.push(dataEntry.toString("utf-8"));
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -351,7 +342,8 @@ CTaosInterface.prototype.useResult = function useResult(result) {
|
|||
CTaosInterface.prototype.fetchBlock = function fetchBlock(result, fields) {
|
||||
//let pblock = ref.ref(ref.ref(ref.NULL)); // equal to our raw data
|
||||
let pblock = this.libtaos.taos_fetch_row(result);
|
||||
if (pblock == null) {
|
||||
let num_of_rows = 1;
|
||||
if (ref.isNull(pblock) == true) {
|
||||
return {block:null, num_of_rows:0};
|
||||
}
|
||||
|
||||
|
@ -371,9 +363,8 @@ CTaosInterface.prototype.fetchBlock = function fetchBlock(result, fields) {
|
|||
|
||||
let blocks = new Array(fields.length);
|
||||
blocks.fill(null);
|
||||
num_of_rows = Math.abs(num_of_rows);
|
||||
//num_of_rows = Math.abs(num_of_rows);
|
||||
let offset = 0;
|
||||
pblock = pblock.deref();
|
||||
for (let i = 0; i < fields.length; i++) {
|
||||
pdata = ref.reinterpret(pblock,8,i*8);
|
||||
pdata = ref.ref(pdata.readPointer());
|
||||
|
|
|
@ -25,6 +25,7 @@ function TaosResult(data, fields) {
|
|||
* @function pretty
|
||||
* @since 1.0.6
|
||||
*/
|
||||
|
||||
TaosResult.prototype.pretty = function pretty() {
|
||||
let fieldsStr = "";
|
||||
let sizing = [];
|
||||
|
@ -46,8 +47,7 @@ TaosResult.prototype.pretty = function pretty() {
|
|||
row.data.forEach((entry, i) => {
|
||||
if (this.fields[i]._field.type == 9) {
|
||||
entry = entry.toTaosString();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
entry = entry == null ? 'null' : entry.toString();
|
||||
}
|
||||
rowStr += entry
|
||||
|
|
|
@ -48,6 +48,7 @@ for (let i = 0; i < 10000; i++) {
|
|||
// Select
|
||||
console.log('select * from td_connector_test.all_types limit 3 offset 100;');
|
||||
c1.execute('select * from td_connector_test.all_types limit 2 offset 100;');
|
||||
|
||||
var d = c1.fetchall();
|
||||
console.log(c1.fields);
|
||||
console.log(d);
|
||||
|
@ -77,13 +78,24 @@ c1.query('select stddev(_double), stddev(_bigint), stddev(_float) from all_types
|
|||
})
|
||||
|
||||
// Binding arguments, and then using promise
|
||||
var q = c1.query('select * from td_connector_test.all_types where ts >= ? and _int > ? limit 100 offset 40;').bind(new Date(1231), 100)
|
||||
var q = c1.query('select _nchar from td_connector_test.all_types where ts >= ? and _int > ? limit 100 offset 40;').bind(new Date(1231), 100)
|
||||
console.log(q.query);
|
||||
q.execute().then(function(r) {
|
||||
r.pretty();
|
||||
});
|
||||
|
||||
var q = c1.query('select * from td_connector_test.weather');
|
||||
console.log(q.query);
|
||||
q.execute().then(function(r) {
|
||||
//console.log(r);
|
||||
r.pretty();
|
||||
});
|
||||
|
||||
function sleep(sleepTime) {
|
||||
for(var start = +new Date; +new Date - start <= sleepTime; ) { }
|
||||
}
|
||||
|
||||
sleep(10000);
|
||||
|
||||
// Raw Async Testing (Callbacks, not promises)
|
||||
function cb2(param, result, rowCount, rd) {
|
||||
|
@ -129,16 +141,21 @@ setTimeout(function(){
|
|||
c1.fetchall_a(thisRes, cb4, param);
|
||||
},100);
|
||||
|
||||
|
||||
// Async through promises
|
||||
var aq = c1.query('select count(*) from td_connector_test.all_types;',false);
|
||||
aq.execute_a().then(function(data) {
|
||||
data.pretty();
|
||||
});
|
||||
c1.query('describe td_connector_test.stabletest;').execute_a().then(r=> r.pretty());
|
||||
|
||||
c1.query('describe td_connector_test.stabletest').execute_a().then(function(r){
|
||||
r.pretty()
|
||||
});
|
||||
|
||||
setTimeout(function(){
|
||||
c1.query('drop database td_connector_test;');
|
||||
},200);
|
||||
|
||||
setTimeout(function(){
|
||||
conn.close();
|
||||
},2000);
|
||||
|
||||
|
|
Loading…
Reference in New Issue