xref: /netbsd-src/external/public-domain/sqlite/man/SQLITE_INDEX_CONSTRAINT_EQ.3 (revision b9988867a8ad969c45a52aa7628bc932ec98d46b)
1.Dd January 24, 2024
2.Dt SQLITE_INDEX_CONSTRAINT_EQ 3
3.Os
4.Sh NAME
5.Nm SQLITE_INDEX_CONSTRAINT_EQ ,
6.Nm SQLITE_INDEX_CONSTRAINT_GT ,
7.Nm SQLITE_INDEX_CONSTRAINT_LE ,
8.Nm SQLITE_INDEX_CONSTRAINT_LT ,
9.Nm SQLITE_INDEX_CONSTRAINT_GE ,
10.Nm SQLITE_INDEX_CONSTRAINT_MATCH ,
11.Nm SQLITE_INDEX_CONSTRAINT_LIKE ,
12.Nm SQLITE_INDEX_CONSTRAINT_GLOB ,
13.Nm SQLITE_INDEX_CONSTRAINT_REGEXP ,
14.Nm SQLITE_INDEX_CONSTRAINT_NE ,
15.Nm SQLITE_INDEX_CONSTRAINT_ISNOT ,
16.Nm SQLITE_INDEX_CONSTRAINT_ISNOTNULL ,
17.Nm SQLITE_INDEX_CONSTRAINT_ISNULL ,
18.Nm SQLITE_INDEX_CONSTRAINT_IS ,
19.Nm SQLITE_INDEX_CONSTRAINT_LIMIT ,
20.Nm SQLITE_INDEX_CONSTRAINT_OFFSET ,
21.Nm SQLITE_INDEX_CONSTRAINT_FUNCTION
22.Nd virtual table constraint operator codes
23.Sh SYNOPSIS
24.In sqlite3.h
25.Fd #define SQLITE_INDEX_CONSTRAINT_EQ
26.Fd #define SQLITE_INDEX_CONSTRAINT_GT
27.Fd #define SQLITE_INDEX_CONSTRAINT_LE
28.Fd #define SQLITE_INDEX_CONSTRAINT_LT
29.Fd #define SQLITE_INDEX_CONSTRAINT_GE
30.Fd #define SQLITE_INDEX_CONSTRAINT_MATCH
31.Fd #define SQLITE_INDEX_CONSTRAINT_LIKE
32.Fd #define SQLITE_INDEX_CONSTRAINT_GLOB
33.Fd #define SQLITE_INDEX_CONSTRAINT_REGEXP
34.Fd #define SQLITE_INDEX_CONSTRAINT_NE
35.Fd #define SQLITE_INDEX_CONSTRAINT_ISNOT
36.Fd #define SQLITE_INDEX_CONSTRAINT_ISNOTNULL
37.Fd #define SQLITE_INDEX_CONSTRAINT_ISNULL
38.Fd #define SQLITE_INDEX_CONSTRAINT_IS
39.Fd #define SQLITE_INDEX_CONSTRAINT_LIMIT
40.Fd #define SQLITE_INDEX_CONSTRAINT_OFFSET
41.Fd #define SQLITE_INDEX_CONSTRAINT_FUNCTION
42.Sh DESCRIPTION
43These macros define the allowed values for the sqlite3_index_info.aConstraint[].op
44field.
45Each value represents an operator that is part of a constraint term
46in the WHERE clause of a query that uses a virtual table.
47.Pp
48The left-hand operand of the operator is given by the corresponding
49aConstraint[].iColumn field.
50An iColumn of -1 indicates the left-hand operand is the rowid.
51The SQLITE_INDEX_CONSTRAINT_LIMIT and SQLITE_INDEX_CONSTRAINT_OFFSET
52operators have no left-hand operand, and so for those operators the
53corresponding aConstraint[].iColumn is meaningless and should not be
54used.
55.Pp
56All operator values from SQLITE_INDEX_CONSTRAINT_FUNCTION through value
57255 are reserved to represent functions that are overloaded by the
58xFindFunction method of the virtual table implementation.
59.Pp
60The right-hand operands for each constraint might be accessible using
61the
62.Fn sqlite3_vtab_rhs_value
63interface.
64Usually the right-hand operand is only available if it appears as a
65single constant literal in the input SQL.
66If the right-hand operand is another column or an expression (even
67a constant expression) or a parameter, then the sqlite3_vtab_rhs_value()
68probably will not be able to extract it.
69The SQLITE_INDEX_CONSTRAINT_ISNULL and SQLITE_INDEX_CONSTRAINT_ISNOTNULL
70operators have no right-hand operand and hence calls to sqlite3_vtab_rhs_value()
71for those operators will always return SQLITE_NOTFOUND.
72.Pp
73The collating sequence to be used for comparison can be found using
74the
75.Fn sqlite3_vtab_collation
76interface.
77For most real-world virtual tables, the collating sequence of constraints
78does not matter (for example because the constraints are numeric) and
79so the sqlite3_vtab_collation() interface is not commonly needed.
80.Sh IMPLEMENTATION NOTES
81These declarations were extracted from the
82interface documentation at line 7474.
83.Bd -literal
84#define SQLITE_INDEX_CONSTRAINT_EQ          2
85#define SQLITE_INDEX_CONSTRAINT_GT          4
86#define SQLITE_INDEX_CONSTRAINT_LE          8
87#define SQLITE_INDEX_CONSTRAINT_LT         16
88#define SQLITE_INDEX_CONSTRAINT_GE         32
89#define SQLITE_INDEX_CONSTRAINT_MATCH      64
90#define SQLITE_INDEX_CONSTRAINT_LIKE       65
91#define SQLITE_INDEX_CONSTRAINT_GLOB       66
92#define SQLITE_INDEX_CONSTRAINT_REGEXP     67
93#define SQLITE_INDEX_CONSTRAINT_NE         68
94#define SQLITE_INDEX_CONSTRAINT_ISNOT      69
95#define SQLITE_INDEX_CONSTRAINT_ISNOTNULL  70
96#define SQLITE_INDEX_CONSTRAINT_ISNULL     71
97#define SQLITE_INDEX_CONSTRAINT_IS         72
98#define SQLITE_INDEX_CONSTRAINT_LIMIT      73
99#define SQLITE_INDEX_CONSTRAINT_OFFSET     74
100#define SQLITE_INDEX_CONSTRAINT_FUNCTION  150
101.Ed
102.Sh SEE ALSO
103.Xr sqlite3_index_info 3 ,
104.Xr sqlite3_vtab_collation 3 ,
105.Xr sqlite3_vtab_rhs_value 3
106