This section provides information about the
NdbScanFilter class.
- Parent class
None
- Child classes
None
- Description
-
NdbScanFilterprovides an alternative means of specifying filters for scan operations.Because development of this interface is ongoing, the characteristics of the
NdbScanFilterclass are subject to change in future releases. - Methods
-
The following table lists the public methods of this class and the purpose or use of each method:
Table 2.58 NdbScanFilter class methods and descriptions
Name Description NdbScanFilter()Constructor method ~NdbScanFilter()Destructor method begin()Begins a compound (set of conditions) cmp()Compares a column value with an arbitrary value cmp_param()Compares a column value with the value of a supplied parameter end()Ends a compound eq()Tests for equality ge()Tests for a greater-than-or-equal condition getNdbError()Provides access to error information getNdbOperation()Gets the associated NdbOperationgt()Tests for a greater-than condition isfalse()Defines a term in a compound as FALSEisnotnull()Tests whether a column value is not NULLisnull()Tests whether a column value is NULListrue()Defines a term in a compound as TRUEle()Tests for a less-than-or-equal condition lt()Tests for a less-than condition ne()Tests for inequality reset()Resets this NdbScanFilterobjectsetSqlCmpSemantics()Forces use of SQL-compliant NULLcomparison handling
- Types
-
The
NdbScanFilterclass defines two public types:BinaryCondition: The type of condition, such as lower bound or upper bound.Group: A logical grouping operator, such asANDorOR.
NdbScanFilter Integer Comparison Methods.
NdbScanFilter provides several convenience
methods which can be used in lieu of the
cmp() method when
the arbitrary value to be compared is an integer:
eq(),
ge(),
gt(),
le(),
lt(), and
ne().
Each of these methods is essentially a wrapper for
cmp() that includes an appropriate value of
BinaryCondition for
that method's condition parameter;
for example, NdbScanFilter::eq()
is defined like this:
int eq(int columnId, Uint32 value)
{
return cmp(BinaryCondition::COND_EQ, columnId, &value, 4);
}
- Description
This method is used to start a compound, and specifies the logical operator used to group the conditions making up the compound. The default is
AND.- Signature
int begin ( Group group = AND )- Parameters
A
Groupvalue: one ofAND,OR,NAND, orNOR. See NdbScanFilter::Group, for additional information.- Return value
0on success,-1on failure.
This section provides information about the
BinaryCondition data type.
- Description
-
This type represents a condition based on the comparison of a column value with some arbitrary value—that is, a bound condition. A value of this type is used as the first argument to the
cmp()method.When used in comparisons with
COND_EQ,COND_NE,COND_LT,COND_LE,COND_GT, orCOND_GE, fixed-length character and binary column values must be prefixed with the column size, and must be padded to length. This is not necessary for such values when used inCOND_LIKE,COND_NOTLIKE,COL_AND_MASK_EQ_MASK,COL_AND_MASK_NE_MASK,COL_AND_MASK_EQ_ZERO, orCOL_AND_MASK_NE_ZEROcomparisons.Strings compared using
COND_LIKEandCOND_NOTLIKEcan use the pattern metacharacters%and_. See NdbScanFilter::cmp(), for more information.The
BITcomparison operators areCOL_AND_MASK_EQ_MASK,COL_AND_MASK_NE_MASK,COL_AND_MASK_EQ_ZERO, andCOL_AND_MASK_NE_ZERO. Corresponding methods are available forNdbInterpretedCodeandNdbOperation; for more information about these methods, see NdbInterpretedCode Bitwise Comparison Operations. - Enumeration values
-
Possible values are shown, along with descriptions, in the following table:
Table 2.59 NdbScanFilter data type values and descriptions
Name Description Column type compared COND_EQEquality ( =)any COND_NEInequality ( <>or!=)any COND_LELower bound ( <=)any COND_LTStrict lower bound ( <)any COND_GEUpper bound ( >=)any COND_GTStrict upper bound (>) any COND_LIKELIKEconditionstring or binary COND_NOTLIKENOT LIKEconditionstring or binary COL_AND_MASK_EQ_MASKColumn value ANDed with bitmask is equal to bitmaskBITCOL_AND_MASK_NE_MASKColumn value ANDed with bitmask is not equal to bitmaskBITCOL_AND_MASK_EQ_ZEROColumn value ANDed with bitmask is equal to zeroBITCOL_AND_MASK_NE_ZEROColumn value ANDed with bitmask is not equal to zeroBIT
- Description
-
This method is used to define a comparison between a given value and the value of a column. In NDB 8.0, it can also be used to compare two columns. (This method does not actually execute the comparison, which is done later when performing the scan for which this
NdbScanFilteris defined.)In many cases, where the value to be compared is an integer, you can instead use one of several convenience methods provided by
NdbScanFilterfor this purpose. See NdbScanFilter Integer Comparison Methods. - Signature
-
int cmp ( BinaryCondition condition, int columnId, const void* value, Uint32 length = 0 )Addtionally, in NDB 8.0:
int cmp ( BinaryCondition condition, int ColumnId1, int ColumnId2 ) - Parameters
-
When used to compare a value with a column, this method takes the following parameters:
-
condition: This represents the condition to be tested which compares the value of the column having the column IDcolumnIDwith some arbitrary value. Theconditionis aBinaryConditionvalue; for permitted values and the relations that they represent, see NdbScanFilter::BinaryCondition.The
conditionvaluesCOND_LIKEorCOND_NOTLIKEare used to compare a column value with a string pattern. columnId: This is the column's identifier, which can be obtained using theColumn::getColumnNo()method.-
value: The value to be compared, represented as a pointer tovoid.When using a
COND_LIKEorCOND_NOTLIKEcomparison condition, thevalueis treated as a string pattern. This string must not be padded or use a prefix. The stringvaluecan include the pattern metacharacters or “wildcard” characters%and_, which have the meanings shown here:Table 2.60 Pattern metacharacters used with COND_LIKE and COND_NOTLIKE comparisons
Metacharacter Description %Matches zero or more characters _Matches exactly one character To match against a literal “%” or “_” character, use the backslash (
\) as an escape character. To match a literal “\” character, use\\.These are the same wildcard characters that are supported by the SQL
LIKEandNOT LIKEoperators, and are interpreted in the same way. See String Comparison Functions and Operators, for more information. length: The length of the value to be compared. The default value is0. Using0for thelengthhas the same effect as comparing toNULL, that is using theisnull()method.
When used to compare two columns,
cmp()takes the following parameters:condition: The condition to be tested when comparing the columns. The condition may be any one of theBinaryConditionvaluesEQ,NE,LT,LE,GT, orGE. Other values are not accepted.columnID1: ID of the first of the two columns to be compared.columnID1: ID of the second column.
Columns being compared using this method must be of exactly the same type. This includes length, precision, scale, and all other particulars.
-
- Return value
This method returns an integer:
0on success, and-1on failure.
- Description
-
This method is used to define a comparison between the value of a column and that of a parameter having the specified ID. The comparison is actually performed later when executing the scan for which this
NdbScanFilteris defined.This method was added in NDB 8.0.27.
- Signature
int cmp_param() ( BinaryCondition condition, int colId, int paramId )- Parameters
-
When used to compare a value with a column, this method takes the following parameters:
-
condition: This represents the condition to be tested which compares the value of the column having the column IDcolumnIDwith some arbitrary value. Theconditionis aBinaryConditionvalue; for permitted values and the relations that they represent, see NdbScanFilter::BinaryCondition.The
conditionvaluesCOND_LIKEorCOND_NOTLIKEare used to compare a column value with a string pattern. colId: This is the column's identifier, which can be obtained using theColumn::getColumnNo()method.paramId: The ID of the parameter whose value is to be compared.
Values being compared using this method must be of exactly the same type. This includes length, precision, scale, and all other particulars.
-
- Return value
This method returns an integer:
0on success, and-1on failure.
- Description
This is the constructor method for
NdbScanFilter, and creates a new instance of the class.- Signature
NdbScanFilter ( class NdbOperation* op )- Parameters
This method takes a single parameter, a pointer to the
NdbOperationto which the filter applies.- Return value
A new instance of
NdbScanFilter.- Destructor
The destructor takes no arguments and does not return a value. It should be called to remove the
NdbScanFilterobject when it is no longer needed.
- Description
This method completes a compound, signalling that there are no more conditions to be added to it.
- Signature
int end ( void )- Parameters
None.
- Return value
Returns
0on success, or-1on failure.
- Description
This method is used to perform an equality test on a column value and an integer.
- Signature
-
int eq ( int ColId, Uint32 value )or
int eq ( int ColId, Uint64 value ) - Parameters
-
This method takes two parameters, listed here:
The ID (
ColId) of the column whose value is to be testedAn integer with which to compare the column value; this integer may be either 32-bit or 64-bit, and is unsigned in either case.
- Return value
Returns
0on success, or-1on failure.
- Description
Defines a term of the current group as
FALSE.- Signature
int isfalse ( void )- Parameters
None.
- Return value
0on success, or-1on failure.
- Description
This method is used to check whether a column value is not
NULL.- Signature
int isnotnull ( int ColId )- Parameters
The ID of the column whose value is to be tested.
- Return value
Returns
0, if the column value is notNULL.
- Description
This method is used to check whether a column value is
NULL.- Signature
int isnull ( int ColId )- Parameters
The ID of the column whose value is to be tested.
- Return value
Returns
0, if the column value isNULL.
- Description
Defines a term of the current group as
TRUE.- Signature
int istrue ( void )- Parameters
None.
- Return value
Returns
0on success,-1on failure.
- Description
This method is used to perform a greater-than-or-equal test on a column value and an integer.
- Signature
-
This method accepts both 32-bit and 64-bit values, as shown here:
int ge ( int ColId, Uint32 value ) int ge ( int ColId, Uint64 value ) - Parameters
-
Like
eq(),lt(),le(), and the otherNdbScanFiltermethods of this type, this method takes two parameters:The ID (
ColId) of the column whose value is to be testedAn integer with which to compare the column value; this integer may be either 32-bit or 64-bit, and is unsigned in either case.
- Return value
0on success;-1on failure.
- Description
Because errors encountered when building an
NdbScanFilterdo not propagate to any involvedNdbOperationobject, it is necessary to use this method to access error information.- Signature
const NdbError& getNdbError ( void )- Parameters
None.
- Return value
A reference to an
NdbError.
- Description
If the
NdbScanFilterwas constructed with anNdbOperation, this method can be used to obtain a pointer to thatNdbOperationobject.- Signature
NdbOperation* getNdbOperation ( void )- Parameters
None.
- Return value
A pointer to the
NdbOperationassociated with thisNdbScanFilter, if there is one. Otherwise,NULL.
This section provides information about the
Group data type.
- Description
This type is used to describe logical (grouping) operators, and is used with the
begin()method. (See NdbScanFilter::begin().)- Enumeration values
-
Possible values are shown, along with descriptions, in the following table:
Table 2.61 NdbScanFilter::Group data type values and descriptions
Value Description ANDLogical AND:AANDBANDCORLogical OR:AORBORCNANDLogical NOT AND:NOT (AANDBANDC)NORLogical NOT OR:NOT (AORBORC)
- Description
This method is used to perform a greater-than (strict upper bound) test on a column value and an integer.
- Signature
-
This method accommodates both 32-bit and 64-bit values:
int gt ( int ColId, Uint32 value ) int gt ( int ColId, Uint64 value ) - Parameters
-
Like the other
NdbScanFiltermethods of this type, this method takes two parameters:The ID (
ColId) of the column whose value is to be testedAn integer with which to compare the column value; this integer may be either 32-bit or 64-bit, and is unsigned in either case.
- Return value
0on success;-1on failure.
- Description
This method is used to perform a less-than-or-equal test on a column value and an integer.
- Signature
This method has two variants, to accommodate 32-bit and 64-bit values:
int le
(
int ColId,
Uint32 value
)
int le
(
int ColId,
Uint64 value
)
- Parameters
-
Like the other
NdbScanFiltermethods of this type, this method takes two parameters:The ID (
ColId) of the column whose value is to be testedAn integer with which to compare the column value; this integer may be either 32-bit or 64-bit, and is unsigned in either case.
- Return value
Returns
0on success, or-1on failure.
- Description
This method is used to perform a less-than (strict lower bound) test on a column value and an integer.
- Signature
-
This method has 32-bit and 64-bit variants, as shown here:
int lt ( int ColId, Uint32 value ) int lt ( int ColId, Uint64 value ) - Parameters
-
Like
eq(),ne(), and the otherNdbScanFiltermethods of this type, this method takes two parameters, listed here:The ID (
ColId) of the column whose value is to be testedAn integer with which to compare the column value; this integer may be either 32-bit or 64-bit, and is unsigned in either case.
- Return value
Retrturns
0on success, or-1on failure.
- Description
This method is used to perform an inequality test on a column value and an integer.
- Signature
-
This method has 32-bit and 64-bit variants, as shown here:
int ne ( int ColId, Uint32 value ) int ne ( int ColId, Uint64 value ) - Parameters
-
Like
eq()and the otherNdbScanFiltermethods of this type, this method takes two parameters:The ID (
ColId) of the column whose value is to be testedAn integer with which to compare the column value; this integer may be either 32-bit or 64-bit, and is unsigned in either case.
- Return value
Returns
0on success, or-1on failure.
- Description
This method resets the
NdbScanFilterobject, discarding any previous filter definition and error state.- Signature
void reset ( void )- Parameters
None.
- Return value
None.
reset() has no effect on the SQL-compliant
NULL comparison mode set by
setSqlCmpSemantics().
This method was added in NDB 8.0.
- Description
-
Traditionally, when making comparisons involving
NULL,NdbScanFiltertreatsNULLas equal toNULL(and thus considersNULL == NULLto beTRUE). This is not the same as specified by the SQL Standard, which requires that any comparison withNULLreturnNULL, includingNULL == NULL.Beginning with NDB 8.0.26, it is possible to override this behavior by calling this method, which takes no arguments. Doing so causes the next
NdbScanFilterobject to be created to employ SQL-compliantNULLcomparison for all operations for its entire lifetime. This cannot be unset oncesetSqlCmpSemantics()is called; invokingreset()has no effect in this regard. The effect of this method extends only to the next instance ofNdbScanFilterto be created; any subsequent instance uses the traditional comparison mode unlesssetSqlCmpSemantics()is invoked beforehand.This method has no effect on
NULLsorting;NdbScanFilteralways considersNULLto be less than any other value. - Signature
void setSqlCmpSemantics ( void )- Parameters
None
- Return value
None
This method was added in NDB 8.0.26.