Loading mysql-test/r/ndb_condition_pushdown.result +6 −2 Original line number Diff line number Diff line Loading @@ -235,13 +235,17 @@ auto 4 select auto from t1 where string like "b%" and vstring like "b%" vstring like "b%" and bin like concat(0xBB, '%') and vbin like concat(0xBB, '%') order by auto; auto 2 select auto from t1 where string not like "b%" and vstring not like "b%" vstring not like "b%" and bin not like concat(0xBB, '%') and vbin not like concat(0xBB, '%') order by auto; auto 1 Loading mysql-test/t/ndb_condition_pushdown.test +6 −2 Original line number Diff line number Diff line Loading @@ -236,12 +236,16 @@ order by auto; # Test LIKE/NOT LIKE select auto from t1 where string like "b%" and vstring like "b%" vstring like "b%" and bin like concat(0xBB, '%') and vbin like concat(0xBB, '%') order by auto; select auto from t1 where string not like "b%" and vstring not like "b%" vstring not like "b%" and bin not like concat(0xBB, '%') and vbin not like concat(0xBB, '%') order by auto; # Various tests Loading ndb/src/ndbapi/NdbDictionaryImpl.hpp +13 −0 Original line number Diff line number Diff line Loading @@ -76,8 +76,10 @@ public: Uint32 m_attrSize; // element size (size when arraySize==1) Uint32 m_arraySize; // length or length+2 for Var* types Uint32 m_keyInfoPos; // TODO: use bits in attr desc 2 bool getInterpretableType() const ; bool getCharType() const; bool getStringType() const; bool getBlobType() const; /** Loading Loading @@ -469,6 +471,17 @@ NdbColumnImpl::getCharType() const { m_type == NdbDictionary::Column::Longvarchar); } inline bool NdbColumnImpl::getStringType() const { return (m_type == NdbDictionary::Column::Char || m_type == NdbDictionary::Column::Varchar || m_type == NdbDictionary::Column::Longvarchar || m_type == NdbDictionary::Column::Binary || m_type == NdbDictionary::Column::Varbinary || m_type == NdbDictionary::Column::Longvarbinary); } inline bool NdbColumnImpl::getBlobType() const { Loading ndb/src/ndbapi/NdbOperationInt.cpp +13 −7 Original line number Diff line number Diff line Loading @@ -1014,8 +1014,14 @@ NdbOperation::branch_col(Uint32 type, Uint32 ColId, const void * val, Uint32 len, bool nopad, Uint32 Label){ DBUG_ENTER("NdbOperation::branch_col"); DBUG_PRINT("enter", ("type=%u col=%u val=0x%x len=%u label=%u", type, ColId, val, len, Label)); if (val != NULL) DBUG_DUMP("value", (char*)val, len); if (initial_interpreterCheck() == -1) return -1; DBUG_RETURN(-1); Interpreter::BinaryCondition c = (Interpreter::BinaryCondition)type; Loading @@ -1029,26 +1035,26 @@ NdbOperation::branch_col(Uint32 type, if (val == NULL) len = 0; else { if (! col->getCharType()) { if (! col->getStringType()) { // prevent assert in NdbSqlUtil on length error Uint32 sizeInBytes = col->m_attrSize * col->m_arraySize; if (len != 0 && len != sizeInBytes) { setErrorCodeAbort(4209); return -1; DBUG_RETURN(-1); } len = sizeInBytes; } } if (insertATTRINFO(Interpreter::BranchCol(c, 0, 0, false)) == -1) return -1; DBUG_RETURN(-1); if (insertBranch(Label) == -1) return -1; DBUG_RETURN(-1); if (insertATTRINFO(Interpreter::BranchCol_2(ColId, len))) return -1; DBUG_RETURN(-1); Uint32 len2 = Interpreter::mod4(len); if(len2 == len){ Loading @@ -1065,7 +1071,7 @@ NdbOperation::branch_col(Uint32 type, } theErrorLine++; return 0; DBUG_RETURN(0); } int Loading ndb/src/ndbapi/NdbScanFilter.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -405,8 +405,8 @@ NdbScanFilterImpl::cond_col_const(Interpreter::BinaryCondition op, return -1; } (m_operation->* branch)(AttrId, value, len, false, m_current.m_ownLabel); return 0; int ret = (m_operation->* branch)(AttrId, value, len, false, m_current.m_ownLabel); return ret; } int Loading Loading
mysql-test/r/ndb_condition_pushdown.result +6 −2 Original line number Diff line number Diff line Loading @@ -235,13 +235,17 @@ auto 4 select auto from t1 where string like "b%" and vstring like "b%" vstring like "b%" and bin like concat(0xBB, '%') and vbin like concat(0xBB, '%') order by auto; auto 2 select auto from t1 where string not like "b%" and vstring not like "b%" vstring not like "b%" and bin not like concat(0xBB, '%') and vbin not like concat(0xBB, '%') order by auto; auto 1 Loading
mysql-test/t/ndb_condition_pushdown.test +6 −2 Original line number Diff line number Diff line Loading @@ -236,12 +236,16 @@ order by auto; # Test LIKE/NOT LIKE select auto from t1 where string like "b%" and vstring like "b%" vstring like "b%" and bin like concat(0xBB, '%') and vbin like concat(0xBB, '%') order by auto; select auto from t1 where string not like "b%" and vstring not like "b%" vstring not like "b%" and bin not like concat(0xBB, '%') and vbin not like concat(0xBB, '%') order by auto; # Various tests Loading
ndb/src/ndbapi/NdbDictionaryImpl.hpp +13 −0 Original line number Diff line number Diff line Loading @@ -76,8 +76,10 @@ public: Uint32 m_attrSize; // element size (size when arraySize==1) Uint32 m_arraySize; // length or length+2 for Var* types Uint32 m_keyInfoPos; // TODO: use bits in attr desc 2 bool getInterpretableType() const ; bool getCharType() const; bool getStringType() const; bool getBlobType() const; /** Loading Loading @@ -469,6 +471,17 @@ NdbColumnImpl::getCharType() const { m_type == NdbDictionary::Column::Longvarchar); } inline bool NdbColumnImpl::getStringType() const { return (m_type == NdbDictionary::Column::Char || m_type == NdbDictionary::Column::Varchar || m_type == NdbDictionary::Column::Longvarchar || m_type == NdbDictionary::Column::Binary || m_type == NdbDictionary::Column::Varbinary || m_type == NdbDictionary::Column::Longvarbinary); } inline bool NdbColumnImpl::getBlobType() const { Loading
ndb/src/ndbapi/NdbOperationInt.cpp +13 −7 Original line number Diff line number Diff line Loading @@ -1014,8 +1014,14 @@ NdbOperation::branch_col(Uint32 type, Uint32 ColId, const void * val, Uint32 len, bool nopad, Uint32 Label){ DBUG_ENTER("NdbOperation::branch_col"); DBUG_PRINT("enter", ("type=%u col=%u val=0x%x len=%u label=%u", type, ColId, val, len, Label)); if (val != NULL) DBUG_DUMP("value", (char*)val, len); if (initial_interpreterCheck() == -1) return -1; DBUG_RETURN(-1); Interpreter::BinaryCondition c = (Interpreter::BinaryCondition)type; Loading @@ -1029,26 +1035,26 @@ NdbOperation::branch_col(Uint32 type, if (val == NULL) len = 0; else { if (! col->getCharType()) { if (! col->getStringType()) { // prevent assert in NdbSqlUtil on length error Uint32 sizeInBytes = col->m_attrSize * col->m_arraySize; if (len != 0 && len != sizeInBytes) { setErrorCodeAbort(4209); return -1; DBUG_RETURN(-1); } len = sizeInBytes; } } if (insertATTRINFO(Interpreter::BranchCol(c, 0, 0, false)) == -1) return -1; DBUG_RETURN(-1); if (insertBranch(Label) == -1) return -1; DBUG_RETURN(-1); if (insertATTRINFO(Interpreter::BranchCol_2(ColId, len))) return -1; DBUG_RETURN(-1); Uint32 len2 = Interpreter::mod4(len); if(len2 == len){ Loading @@ -1065,7 +1071,7 @@ NdbOperation::branch_col(Uint32 type, } theErrorLine++; return 0; DBUG_RETURN(0); } int Loading
ndb/src/ndbapi/NdbScanFilter.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -405,8 +405,8 @@ NdbScanFilterImpl::cond_col_const(Interpreter::BinaryCondition op, return -1; } (m_operation->* branch)(AttrId, value, len, false, m_current.m_ownLabel); return 0; int ret = (m_operation->* branch)(AttrId, value, len, false, m_current.m_ownLabel); return ret; } int Loading