.Dd January 24, 2024 .Dt SQLITE_INDEX_CONSTRAINT_EQ 3 .Os .Sh NAME .Nm SQLITE_INDEX_CONSTRAINT_EQ , .Nm SQLITE_INDEX_CONSTRAINT_GT , .Nm SQLITE_INDEX_CONSTRAINT_LE , .Nm SQLITE_INDEX_CONSTRAINT_LT , .Nm SQLITE_INDEX_CONSTRAINT_GE , .Nm SQLITE_INDEX_CONSTRAINT_MATCH , .Nm SQLITE_INDEX_CONSTRAINT_LIKE , .Nm SQLITE_INDEX_CONSTRAINT_GLOB , .Nm SQLITE_INDEX_CONSTRAINT_REGEXP , .Nm SQLITE_INDEX_CONSTRAINT_NE , .Nm SQLITE_INDEX_CONSTRAINT_ISNOT , .Nm SQLITE_INDEX_CONSTRAINT_ISNOTNULL , .Nm SQLITE_INDEX_CONSTRAINT_ISNULL , .Nm SQLITE_INDEX_CONSTRAINT_IS , .Nm SQLITE_INDEX_CONSTRAINT_LIMIT , .Nm SQLITE_INDEX_CONSTRAINT_OFFSET , .Nm SQLITE_INDEX_CONSTRAINT_FUNCTION .Nd virtual table constraint operator codes .Sh SYNOPSIS .In sqlite3.h .Fd #define SQLITE_INDEX_CONSTRAINT_EQ .Fd #define SQLITE_INDEX_CONSTRAINT_GT .Fd #define SQLITE_INDEX_CONSTRAINT_LE .Fd #define SQLITE_INDEX_CONSTRAINT_LT .Fd #define SQLITE_INDEX_CONSTRAINT_GE .Fd #define SQLITE_INDEX_CONSTRAINT_MATCH .Fd #define SQLITE_INDEX_CONSTRAINT_LIKE .Fd #define SQLITE_INDEX_CONSTRAINT_GLOB .Fd #define SQLITE_INDEX_CONSTRAINT_REGEXP .Fd #define SQLITE_INDEX_CONSTRAINT_NE .Fd #define SQLITE_INDEX_CONSTRAINT_ISNOT .Fd #define SQLITE_INDEX_CONSTRAINT_ISNOTNULL .Fd #define SQLITE_INDEX_CONSTRAINT_ISNULL .Fd #define SQLITE_INDEX_CONSTRAINT_IS .Fd #define SQLITE_INDEX_CONSTRAINT_LIMIT .Fd #define SQLITE_INDEX_CONSTRAINT_OFFSET .Fd #define SQLITE_INDEX_CONSTRAINT_FUNCTION .Sh DESCRIPTION These macros define the allowed values for the sqlite3_index_info.aConstraint[].op field. Each value represents an operator that is part of a constraint term in the WHERE clause of a query that uses a virtual table. .Pp The left-hand operand of the operator is given by the corresponding aConstraint[].iColumn field. An iColumn of -1 indicates the left-hand operand is the rowid. The SQLITE_INDEX_CONSTRAINT_LIMIT and SQLITE_INDEX_CONSTRAINT_OFFSET operators have no left-hand operand, and so for those operators the corresponding aConstraint[].iColumn is meaningless and should not be used. .Pp All operator values from SQLITE_INDEX_CONSTRAINT_FUNCTION through value 255 are reserved to represent functions that are overloaded by the xFindFunction method of the virtual table implementation. .Pp The right-hand operands for each constraint might be accessible using the .Fn sqlite3_vtab_rhs_value interface. Usually the right-hand operand is only available if it appears as a single constant literal in the input SQL. If the right-hand operand is another column or an expression (even a constant expression) or a parameter, then the sqlite3_vtab_rhs_value() probably will not be able to extract it. The SQLITE_INDEX_CONSTRAINT_ISNULL and SQLITE_INDEX_CONSTRAINT_ISNOTNULL operators have no right-hand operand and hence calls to sqlite3_vtab_rhs_value() for those operators will always return SQLITE_NOTFOUND. .Pp The collating sequence to be used for comparison can be found using the .Fn sqlite3_vtab_collation interface. For most real-world virtual tables, the collating sequence of constraints does not matter (for example because the constraints are numeric) and so the sqlite3_vtab_collation() interface is not commonly needed. .Sh IMPLEMENTATION NOTES These declarations were extracted from the interface documentation at line 7474. .Bd -literal #define SQLITE_INDEX_CONSTRAINT_EQ 2 #define SQLITE_INDEX_CONSTRAINT_GT 4 #define SQLITE_INDEX_CONSTRAINT_LE 8 #define SQLITE_INDEX_CONSTRAINT_LT 16 #define SQLITE_INDEX_CONSTRAINT_GE 32 #define SQLITE_INDEX_CONSTRAINT_MATCH 64 #define SQLITE_INDEX_CONSTRAINT_LIKE 65 #define SQLITE_INDEX_CONSTRAINT_GLOB 66 #define SQLITE_INDEX_CONSTRAINT_REGEXP 67 #define SQLITE_INDEX_CONSTRAINT_NE 68 #define SQLITE_INDEX_CONSTRAINT_ISNOT 69 #define SQLITE_INDEX_CONSTRAINT_ISNOTNULL 70 #define SQLITE_INDEX_CONSTRAINT_ISNULL 71 #define SQLITE_INDEX_CONSTRAINT_IS 72 #define SQLITE_INDEX_CONSTRAINT_LIMIT 73 #define SQLITE_INDEX_CONSTRAINT_OFFSET 74 #define SQLITE_INDEX_CONSTRAINT_FUNCTION 150 .Ed .Sh SEE ALSO .Xr sqlite3_index_info 3 , .Xr sqlite3_vtab_collation 3 , .Xr sqlite3_vtab_rhs_value 3