21 #include <ndb_types.h>
22 #include "NdbDictionary.hpp"
23 #include "NdbTransaction.hpp"
24 #include "NdbError.hpp"
123 #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
150 #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
172 varsize(0), reserved(0), pkid(0), length(0), headsize(0) {}
174 static void packBlobHead(
const Head& head,
char*
buf,
int blobVersion);
175 static void unpackBlobHead(
Head& head,
const char*
buf,
int blobVersion);
183 int getValue(
void* data, Uint32 bytes);
190 int setValue(
const void* data, Uint32 bytes);
205 #ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED
206 int getDefined(
int& isNull);
207 int getNull(
bool& isNull);
213 int getNull(
int& isNull);
242 int readData(
void* data, Uint32& bytes);
247 int writeData(
const void* data, Uint32 bytes);
255 static int getBlobTableName(
char* btname,
Ndb* anNdb,
const char* tableName,
const char* columnName);
260 static int getBlobEventName(
char* bename,
Ndb* anNdb,
const char* eventName,
const char* columnName);
318 int close(
bool execPendingBlobOps =
true);
321 #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
341 bool theFixedDataFlag;
343 Uint32 theVarsizeBytes;
347 bool theNdbRecordFlag;
348 void setState(
State newState);
350 int theEventBlobVersion;
364 int theBtColumnNo[5];
380 unsigned char theFillChar;
382 Uint32 theInlineSize;
384 Uint32 theStripeSize;
389 bool theSetValueInPreExecFlag;
390 const char* theSetBuf;
391 Uint32 theGetSetBytes;
393 Uint8 thePendingBlobOps;
396 void* theActiveHookArg;
404 void alloc(
unsigned n);
407 void copyfrom(
const Buf& src);
412 Buf theHeadInlineBuf;
413 Buf theHeadInlineCopyBuf;
416 Buf theBlobEventDataBuf;
417 Uint32 theBlobEventDistValue;
418 Uint32 theBlobEventPartValue;
419 Uint32 theBlobEventPkidValue;
424 bool theHeadInlineUpdateFlag;
426 bool userDefinedPartitioning;
427 Uint32 noPartitionId() {
return ~(Uint32)0; }
428 Uint32 thePartitionId;
455 Uint32 getPartNumber(Uint64 pos);
456 Uint32 getPartOffset(Uint64 pos);
457 Uint32 getPartCount();
458 Uint32 getDistKey(Uint32 part);
460 int packKeyValue(
const NdbTableImpl* aTable,
const Buf& srcBuf);
461 int unpackKeyValue(
const NdbTableImpl* aTable, Buf& dstBuf);
463 Buf& packedBuf, Buf& unpackedBuf);
464 Uint32 getHeadInlineSize() {
return theHeadSize + theInlineSize; }
465 void prepareSetHeadInlineValue();
466 void getNullOrEmptyBlobHeadDataPtr(
const char * & data, Uint32 & byteSize);
469 void unpackBlobHead();
477 int setPartDataValue(
NdbOperation* anOp,
const char*
buf,
const Uint16& aLen);
479 void getHeadFromRecAttr();
484 int readDataPrivate(
char*
buf, Uint32& bytes);
485 int writeDataPrivate(
const char*
buf, Uint32 bytes);
486 int readParts(
char*
buf, Uint32 part, Uint32 count);
487 int readPart(
char*
buf, Uint32 part, Uint16& len);
488 int readTableParts(
char*
buf, Uint32 part, Uint32 count);
489 int readTablePart(
char*
buf, Uint32 part, Uint16& len);
490 int readEventParts(
char*
buf, Uint32 part, Uint32 count);
491 int readEventPart(
char*
buf, Uint32 part, Uint16& len);
492 int insertParts(
const char*
buf, Uint32 part, Uint32 count);
493 int insertPart(
const char*
buf, Uint32 part,
const Uint16& len);
494 int updateParts(
const char*
buf, Uint32 part, Uint32 count);
495 int updatePart(
const char*
buf, Uint32 part,
const Uint16& len);
496 int deletePartsThrottled(Uint32 part, Uint32 count);
497 int deleteParts(Uint32 part, Uint32 count);
498 int deletePartsUnknown(Uint32 part);
500 int executePendingBlobReads();
501 int executePendingBlobWrites();
503 int invokeActiveHook();
508 const NdbRecord *key_record,
const char *key_row);
511 const char *keyinfo, Uint32 keyinfo_bytes);
522 int atNextResultNdbRecord(
const char *keyinfo, Uint32 keyinfo_bytes);
523 int atNextResultCommon();
526 void setErrorCode(
int anErrorCode,
bool invalidFlag =
false);
527 void setErrorCode(
NdbOperation* anOp,
bool invalidFlag =
false);
530 void next(
NdbBlob* obj) { theNext= obj;}
531 NdbBlob* next() {
return theNext;}