Exemplo n.º 1
0
/* Generic getter for all NdbRecordObjects
*/
Handle<Value> nroGetter(Local<String>, const AccessorInfo & info) 
{
  NdbRecordObject * nro = 
    static_cast<NdbRecordObject *>(info.Holder()->GetPointerFromInternalField(1));
  int nField = info.Data()->Int32Value();
  return nro->getField(nField);
}                    
Exemplo n.º 2
0
void DBOperationHelper_VO(Handle<Object> spec,  KeyOperation & op) {
  HandleScope scope;
  Local<Value> v;
  Local<Object> o;
  Local<Object> valueObj;

  v = spec->Get(HELPER_VALUE_OBJECT);
  valueObj = v->ToObject();
  NdbRecordObject * nro = unwrapPointer<NdbRecordObject *>(valueObj);

  /* Set the key record and key buffer from the helper spec */
  setKeysInOp(spec, op);
  
  /* Set the row record, row buffer, and mask from the VO */
  op.row_record = nro->getRecord();
  op.row_buffer = nro->getBuffer();

  /* "write" and "persist" must write all columns. 
     Other operations only require the columns that have changed since read.
  */
  if(op.opcode == 2 || op.opcode == 8) 
    op.setRowMask(0xFFFFFFFF);
  else 
    op.setRowMask(nro->getMaskValue());

  DEBUG_PRINT("  VO   opcode: %d mask: %u", op.opcode, op.u.maskvalue);  
  nro->resetMask(); 
}
Exemplo n.º 3
0
/* Generic setter for all NdbRecordObjects
*/
void nroSetter(Local<String>, Local<Value> value, const AccessorInfo& info) 
{
  NdbRecordObject * nro = 
    static_cast<NdbRecordObject *>(info.Holder()->GetPointerFromInternalField(1));
  int nField = info.Data()->Int32Value();
  nro->setField(nField, value);
}
Exemplo n.º 4
0
Handle<Value> getValueObjectWriteCount(const Arguments &args) {
  HandleScope scope;
  Local<Object> obj = args[0]->ToObject();
  NdbRecordObject * nro =
    static_cast<NdbRecordObject *>(obj->GetPointerFromInternalField(1));
 
  return scope.Close(Number::New(nro->getWriteCount()));
}
Exemplo n.º 5
0
void DBOperationHelper_VO(Handle<Object> spec,  KeyOperation & op) {
  DEBUG_MARKER(UDEB_DETAIL);
  Local<Value> v;
  Local<Object> o;
  Local<Object> valueObj;

  v = spec->Get(HELPER_VALUE_OBJECT);
  valueObj = v->ToObject();
  NdbRecordObject * nro = unwrapPointer<NdbRecordObject *>(valueObj);

  /* Set the key record and key buffer from the helper spec */
  setKeysInOp(spec, op);
  
  /* Set the row record, row buffer, and mask from the VO */
  op.row_record = nro->getRecord();
  op.row_buffer = nro->getBuffer();

  /* A persist operation must write all columns.
     A save operation must write all columns only if the PK has changed.
     Other operations only write columns that have changed since being read.
  */
  if(op.opcode == 2) 
    op.setRowMask(op.row_record->getAllColumnMask());
  else if(op.opcode == 8 && (nro->getMaskValue() & op.row_record->getPkColumnMask())) 
    op.setRowMask(op.row_record->getAllColumnMask());
  else 
    op.setRowMask(nro->getMaskValue());

  op.nblobs = nro->createBlobWriteHandles(op);

  DEBUG_PRINT("  VO   %s -- mask: %u lobs: %d", op.getOperationName(), 
              op.u.maskvalue, op.nblobs);
  nro->resetMask(); 
}
Exemplo n.º 6
0
Handle<Value> DBOperationHelper_VO(const Arguments &args) {
  HandleScope scope;
  Local<Value> v;
  Local<Object> o;
  Local<Object> valueObj;
  Handle<Value> returnVal;
  Operation op;

  const Local<Object> spec = args[0]->ToObject();
  int opcode = args[1]->Int32Value();
  NdbTransaction *tx = unwrapPointer<NdbTransaction *>(args[2]->ToObject());

  /* NdbOperation.prepare() just verified that this is really a VO */
  v = spec->Get(HELPER_VALUE_OBJECT);
  valueObj = v->ToObject();
  NdbRecordObject * nro = unwrapPointer<NdbRecordObject *>(valueObj);

  /* The VO may have values that are not yet encoded to its buffer. */
  returnVal = nro->prepare();  // do something with this?
  
  /* Set the key record and key buffer from the helper spec */
  setKeysInOp(spec, op);
  
  /* Set the row record, row buffer, and mask from the VO */
  op.row_record = nro->getRecord();
  op.row_buffer = nro->getBuffer();

  /* "write" and "persist" must write all columns. 
     Other operations only require the columns that have changed since read.
  */
  if(opcode == 2 || opcode == 8) 
    op.setRowMask(0xFFFFFFFF);
  else 
    op.setRowMask(nro->getMaskValue());

  DEBUG_PRINT("  VO   opcode: %d mask: %u", opcode, op.u.maskvalue);

  returnVal = buildNdbOperation(op, opcode, tx);
  
  nro->resetMask(); 

  return scope.Close(returnVal);
}
Exemplo n.º 7
0
Handle<Value> prepareForUpdate(const Arguments &args) {
  HandleScope scope;
  NdbRecordObject * nro = unwrapPointer<NdbRecordObject *>(args[0]->ToObject());
  return scope.Close(nro->prepare());
}
Exemplo n.º 8
0
Handle<Value> getValueObjectWriteCount(const Arguments &args) {
  HandleScope scope;
  NdbRecordObject * nro = unwrapPointer<NdbRecordObject *>(args[0]->ToObject());
  return scope.Close(Number::New(nro->getWriteCount()));
}