Skip to content

Commit

Permalink
Adapt NdbOperation to NdbScanFilter
Browse files Browse the repository at this point in the history
  • Loading branch information
jdduncan committed Apr 14, 2013
1 parent 3c9e25e commit 188999b
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
2 changes: 2 additions & 0 deletions .bzrignore
Expand Up @@ -6,3 +6,5 @@ Adapter/impl/dev-checklist.plist
test/test_connection.js
perftest/jscrund.config
test/disabled-tests.conf
config.gypi
config.waf
21 changes: 16 additions & 5 deletions Adapter/impl/ndb/NdbOperation.js
Expand Up @@ -26,6 +26,7 @@ var adapter = require(path.join(build_dir, "ndb_adapter.node")).ndb,
doc = require(path.join(spi_doc_dir, "DBOperation")),
stats_module = require(path.join(api_dir,"stats.js")),
QueuedAsyncCall = require("../common/QueuedAsyncCall.js").QueuedAsyncCall,
prepareFilterSpec = require("./NdbScanFilter.js").prepareFilterSpec,
stats = stats_module.getWriter(["spi","ndb","DBOperation"]),
index_stats = stats_module.getWriter(["spi","ndb","key_access"]),
COMMIT = adapter.ndbapi.Commit,
Expand Down Expand Up @@ -180,7 +181,6 @@ function encodeRowBuffer(op) {
}
}


function HelperSpec() {
this.clear();
}
Expand Down Expand Up @@ -273,9 +273,20 @@ function prepareScanOperation(op, ndbTransaction) {
if(op.query.queryType == 2) { /* Index Scan */
scanSpec[ScanHelper.index_record] = op.query.dbIndexHandler.dbIndex.record;
}

scanSpec[ScanHelper.lock_mode] = constants.LockModes[op.lockMode];


if(typeof op.keys.order !== 'undefined') {
var flags = constants.Scan.flags.SF_OrderBy;
if(op.keys.order == 'desc') flags |= constants.Scan.flags.SF_Descending;
scanSpec[ScanHelper.flags] = flags;
}

if(op.query.ndbFilterSpec) {
scanSpec[ScanHelper.filter_code] =
op.query.ndbFilterSpec.getScanFilterCode(op.keys);
}

/* Build the NdbScanOperation */
op.ndbop = adapter.impl.Scan.new(scanSpec, opcode, ndbTransaction);
}
Expand Down Expand Up @@ -575,7 +586,7 @@ function newDeleteOperation(tx, dbIndexHandler, keys) {
return op;
}

//// Write Operation on VO must write all fields.

function newWriteOperation(tx, dbIndexHandler, row) {
verifyIndexHandler(dbIndexHandler);
var op = new DBOperation(opcodes.OP_WRITE, tx, dbIndexHandler, null);
Expand All @@ -599,9 +610,9 @@ function newScanOperation(tx, QueryTree, properties) {
var op = new DBOperation(opcodes.OP_SCAN, tx,
queryHandler.dbIndexHandler,
queryHandler.dbTableHandler);
prepareFilterSpec(queryHandler);
op.query = queryHandler;
op.keys = properties;
// Walk the QueryHandler.predicate to build the filter
return op;
}

Expand Down
3 changes: 0 additions & 3 deletions Adapter/impl/ndb/NdbScanFilter.js
Expand Up @@ -240,8 +240,6 @@ FilterBuildingVisitor.prototype.visitQueryComparator = function(node) {
var layout = node.ndb.layout;
this.ndbScanFilter.cmp(opcode, layout.colId,
this.paramBuffer, layout.offset, layout.length);
udebug.log("CMP", opcode, layout.colId,
this.paramBuffer, layout.offset, layout.length);
// TODO: constants
}

Expand Down Expand Up @@ -316,7 +314,6 @@ function encodeParameters(filterSpec, params) {
for(i = 0; i < filterSpec.paramLayout.length ; i++) {
f = filterSpec.paramLayout[i];
adapter.ndb.impl.encoderWrite(f.column, params[f.param], buffer, f.offset);
udebug.log(f.param, ":=", params[f.param]);
}
}
return buffer;
Expand Down

0 comments on commit 188999b

Please sign in to comment.