Loading mysql-test/r/ndb_condition_pushdown.result +6 −0 Original line number Diff line number Diff line Loading @@ -1904,6 +1904,12 @@ a b d 10 1 4369 20 2 8738 50 5 21845 -- big filter just below limit a b d 10 1 4369 20 2 8738 50 5 21845 -- big filter just above limit a b d 10 1 4369 20 2 8738 Loading mysql-test/t/ndb_condition_pushdown.test +12 −739 File changed.Preview size limit exceeded, changes collapsed. Show changes ndb/include/ndbapi/ndbapi_limits.h +2 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #define NDB_MAX_TUPLE_SIZE (NDB_MAX_TUPLE_SIZE_IN_WORDS*4) #define NDB_MAX_ACTIVE_EVENTS 100 #define NDB_MAX_SCANFILTER_SIZE_IN_WORDS 50000 /* TUP ZATTR_BUFFER_SIZE 16384 (minus 1) minus place for getValue()s */ #define NDB_MAX_SCANFILTER_SIZE_IN_WORDS (16384 - 1 - 1024) #endif ndb/src/kernel/blocks/dbtup/Dbtup.hpp +3 −1 Original line number Diff line number Diff line Loading @@ -198,6 +198,7 @@ #define ZUNSUPPORTED_BRANCH 892 #define ZSTORED_SEIZE_ATTRINBUFREC_ERROR 873 // Part of Scan #define ZSTORED_TOO_MUCH_ATTRINFO_ERROR 874 #define ZREAD_ONLY_CONSTRAINT_VIOLATION 893 #define ZVAR_SIZED_NOT_SUPPORTED 894 Loading Loading @@ -2173,7 +2174,8 @@ private: Operationrec* regOperPtr, Uint32 lenAttrInfo); void storedSeizeAttrinbufrecErrorLab(Signal* signal, Operationrec* regOperPtr); Operationrec* regOperPtr, Uint32 errorCode); bool storedProcedureAttrInfo(Signal* signal, Operationrec* regOperPtr, Uint32 length, Loading ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,14 @@ void Dbtup::copyAttrinfo(Signal* signal, RbufLen = copyAttrBufPtr.p->attrbuf[ZBUF_DATA_LEN]; Rnext = copyAttrBufPtr.p->attrbuf[ZBUF_NEXT]; Rfirst = cfirstfreeAttrbufrec; /* * ATTRINFO comes from 2 mutually exclusive places: * 1) TUPKEYREQ (also interpreted part) * 2) STORED_PROCREQ before scan start * Assert here that both have a check for overflow. * The "<" instead of "<=" is intentional. */ ndbrequire(RinBufIndex + RbufLen < ZATTR_BUFFER_SIZE); MEMCOPY_NO_WORDS(&inBuffer[RinBufIndex], ©AttrBufPtr.p->attrbuf[0], RbufLen); Loading Loading
mysql-test/r/ndb_condition_pushdown.result +6 −0 Original line number Diff line number Diff line Loading @@ -1904,6 +1904,12 @@ a b d 10 1 4369 20 2 8738 50 5 21845 -- big filter just below limit a b d 10 1 4369 20 2 8738 50 5 21845 -- big filter just above limit a b d 10 1 4369 20 2 8738 Loading
mysql-test/t/ndb_condition_pushdown.test +12 −739 File changed.Preview size limit exceeded, changes collapsed. Show changes
ndb/include/ndbapi/ndbapi_limits.h +2 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ #define NDB_MAX_TUPLE_SIZE (NDB_MAX_TUPLE_SIZE_IN_WORDS*4) #define NDB_MAX_ACTIVE_EVENTS 100 #define NDB_MAX_SCANFILTER_SIZE_IN_WORDS 50000 /* TUP ZATTR_BUFFER_SIZE 16384 (minus 1) minus place for getValue()s */ #define NDB_MAX_SCANFILTER_SIZE_IN_WORDS (16384 - 1 - 1024) #endif
ndb/src/kernel/blocks/dbtup/Dbtup.hpp +3 −1 Original line number Diff line number Diff line Loading @@ -198,6 +198,7 @@ #define ZUNSUPPORTED_BRANCH 892 #define ZSTORED_SEIZE_ATTRINBUFREC_ERROR 873 // Part of Scan #define ZSTORED_TOO_MUCH_ATTRINFO_ERROR 874 #define ZREAD_ONLY_CONSTRAINT_VIOLATION 893 #define ZVAR_SIZED_NOT_SUPPORTED 894 Loading Loading @@ -2173,7 +2174,8 @@ private: Operationrec* regOperPtr, Uint32 lenAttrInfo); void storedSeizeAttrinbufrecErrorLab(Signal* signal, Operationrec* regOperPtr); Operationrec* regOperPtr, Uint32 errorCode); bool storedProcedureAttrInfo(Signal* signal, Operationrec* regOperPtr, Uint32 length, Loading
ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,14 @@ void Dbtup::copyAttrinfo(Signal* signal, RbufLen = copyAttrBufPtr.p->attrbuf[ZBUF_DATA_LEN]; Rnext = copyAttrBufPtr.p->attrbuf[ZBUF_NEXT]; Rfirst = cfirstfreeAttrbufrec; /* * ATTRINFO comes from 2 mutually exclusive places: * 1) TUPKEYREQ (also interpreted part) * 2) STORED_PROCREQ before scan start * Assert here that both have a check for overflow. * The "<" instead of "<=" is intentional. */ ndbrequire(RinBufIndex + RbufLen < ZATTR_BUFFER_SIZE); MEMCOPY_NO_WORDS(&inBuffer[RinBufIndex], ©AttrBufPtr.p->attrbuf[0], RbufLen); Loading