mirror of
https://github.com/MariaDB/server.git
synced 2025-08-05 13:16:09 +03:00
Merge pnousiainen@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into mysql.com:/space/pekka/ndb/version/my50-ndb
This commit is contained in:
@@ -235,13 +235,17 @@ auto
|
|||||||
4
|
4
|
||||||
select auto from t1 where
|
select auto from t1 where
|
||||||
string like "b%" and
|
string like "b%" and
|
||||||
vstring like "b%"
|
vstring like "b%" and
|
||||||
|
bin like concat(0xBB, '%') and
|
||||||
|
vbin like concat(0xBB, '%')
|
||||||
order by auto;
|
order by auto;
|
||||||
auto
|
auto
|
||||||
2
|
2
|
||||||
select auto from t1 where
|
select auto from t1 where
|
||||||
string not like "b%" and
|
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;
|
order by auto;
|
||||||
auto
|
auto
|
||||||
1
|
1
|
||||||
|
@@ -236,12 +236,16 @@ order by auto;
|
|||||||
# Test LIKE/NOT LIKE
|
# Test LIKE/NOT LIKE
|
||||||
select auto from t1 where
|
select auto from t1 where
|
||||||
string like "b%" and
|
string like "b%" and
|
||||||
vstring like "b%"
|
vstring like "b%" and
|
||||||
|
bin like concat(0xBB, '%') and
|
||||||
|
vbin like concat(0xBB, '%')
|
||||||
order by auto;
|
order by auto;
|
||||||
|
|
||||||
select auto from t1 where
|
select auto from t1 where
|
||||||
string not like "b%" and
|
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;
|
order by auto;
|
||||||
|
|
||||||
# Various tests
|
# Various tests
|
||||||
|
@@ -76,8 +76,10 @@ public:
|
|||||||
Uint32 m_attrSize; // element size (size when arraySize==1)
|
Uint32 m_attrSize; // element size (size when arraySize==1)
|
||||||
Uint32 m_arraySize; // length or length+2 for Var* types
|
Uint32 m_arraySize; // length or length+2 for Var* types
|
||||||
Uint32 m_keyInfoPos;
|
Uint32 m_keyInfoPos;
|
||||||
|
// TODO: use bits in attr desc 2
|
||||||
bool getInterpretableType() const ;
|
bool getInterpretableType() const ;
|
||||||
bool getCharType() const;
|
bool getCharType() const;
|
||||||
|
bool getStringType() const;
|
||||||
bool getBlobType() const;
|
bool getBlobType() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -468,6 +470,17 @@ NdbColumnImpl::getCharType() const {
|
|||||||
m_type == NdbDictionary::Column::Text ||
|
m_type == NdbDictionary::Column::Text ||
|
||||||
m_type == NdbDictionary::Column::Longvarchar);
|
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
|
inline
|
||||||
bool
|
bool
|
||||||
|
@@ -1014,8 +1014,14 @@ NdbOperation::branch_col(Uint32 type,
|
|||||||
Uint32 ColId, const void * val, Uint32 len,
|
Uint32 ColId, const void * val, Uint32 len,
|
||||||
bool nopad, Uint32 Label){
|
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)
|
if (initial_interpreterCheck() == -1)
|
||||||
return -1;
|
DBUG_RETURN(-1);
|
||||||
|
|
||||||
Interpreter::BinaryCondition c = (Interpreter::BinaryCondition)type;
|
Interpreter::BinaryCondition c = (Interpreter::BinaryCondition)type;
|
||||||
|
|
||||||
@@ -1029,26 +1035,26 @@ NdbOperation::branch_col(Uint32 type,
|
|||||||
if (val == NULL)
|
if (val == NULL)
|
||||||
len = 0;
|
len = 0;
|
||||||
else {
|
else {
|
||||||
if (! col->getCharType()) {
|
if (! col->getStringType()) {
|
||||||
// prevent assert in NdbSqlUtil on length error
|
// prevent assert in NdbSqlUtil on length error
|
||||||
Uint32 sizeInBytes = col->m_attrSize * col->m_arraySize;
|
Uint32 sizeInBytes = col->m_attrSize * col->m_arraySize;
|
||||||
if (len != 0 && len != sizeInBytes)
|
if (len != 0 && len != sizeInBytes)
|
||||||
{
|
{
|
||||||
setErrorCodeAbort(4209);
|
setErrorCodeAbort(4209);
|
||||||
return -1;
|
DBUG_RETURN(-1);
|
||||||
}
|
}
|
||||||
len = sizeInBytes;
|
len = sizeInBytes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (insertATTRINFO(Interpreter::BranchCol(c, 0, 0, false)) == -1)
|
if (insertATTRINFO(Interpreter::BranchCol(c, 0, 0, false)) == -1)
|
||||||
return -1;
|
DBUG_RETURN(-1);
|
||||||
|
|
||||||
if (insertBranch(Label) == -1)
|
if (insertBranch(Label) == -1)
|
||||||
return -1;
|
DBUG_RETURN(-1);
|
||||||
|
|
||||||
if (insertATTRINFO(Interpreter::BranchCol_2(ColId, len)))
|
if (insertATTRINFO(Interpreter::BranchCol_2(ColId, len)))
|
||||||
return -1;
|
DBUG_RETURN(-1);
|
||||||
|
|
||||||
Uint32 len2 = Interpreter::mod4(len);
|
Uint32 len2 = Interpreter::mod4(len);
|
||||||
if(len2 == len){
|
if(len2 == len){
|
||||||
@@ -1065,7 +1071,7 @@ NdbOperation::branch_col(Uint32 type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
theErrorLine++;
|
theErrorLine++;
|
||||||
return 0;
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@@ -405,8 +405,8 @@ NdbScanFilterImpl::cond_col_const(Interpreter::BinaryCondition op,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
(m_operation->* branch)(AttrId, value, len, false, m_current.m_ownLabel);
|
int ret = (m_operation->* branch)(AttrId, value, len, false, m_current.m_ownLabel);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
Reference in New Issue
Block a user