@@ -134,26 +134,40 @@ public void testPartitionKeyComponentWithClustering() throws Throwable
134
134
{
135
135
createTable ("CREATE TABLE %s (k1 int, k2 vector<float, 2>, c int, v int, PRIMARY KEY((k1, k2), c))" );
136
136
createIndex ("CREATE CUSTOM INDEX ON %s(k2) USING 'StorageAttachedIndex'" );
137
+ createIndex ("CREATE CUSTOM INDEX ON %s(v) USING 'StorageAttachedIndex'" );
137
138
138
- String insert = "INSERT INTO %s (k1, k2, c) VALUES (?, ?, ?)" ;
139
- execute (insert , row (1 , vector (0.1f , 0.1f ), 0 ));
140
- execute (insert , row (2 , vector (0.1f , 0.2f ), 0 ));
141
- execute (insert , row (3 , vector (0.1f , 0.3f ), 0 ));
142
- execute (insert , row (4 , vector (0.1f , 0.4f ), 0 ));
139
+ // insert static rows and non-static rows all at once
140
+ String insert = "INSERT INTO %s (k1, k2, c, v) VALUES (?, ?, ?, ?)" ;
141
+ execute (insert , row (1 , vector (0.1f , 0.1f ), 10 , 0 ));
142
+ execute (insert , row (2 , vector (0.1f , 0.2f ), 20 , 0 ));
143
+ execute (insert , row (3 , vector (0.1f , 0.3f ), 30 , 1 ));
144
+ execute (insert , row (4 , vector (0.1f , 0.4f ), 40 , 1 ));
143
145
beforeAndAfterFlush (() -> {
146
+ // query with ANN only
144
147
assertRows (execute ("SELECT k1 FROM %s ORDER BY k2 ANN OF [0.1, 0.1] LIMIT 10" ), row (1 ), row (2 ), row (3 ), row (4 ));
145
148
assertRows (execute ("SELECT k1 FROM %s ORDER BY k2 ANN OF [0.1, 0.1] LIMIT 2" ), row (1 ), row (2 ));
149
+
150
+ // query with hybrid search
151
+ assertRows (execute ("SELECT k1 FROM %s WHERE v>=0 ORDER BY k2 ANN OF [0.1, 0.1] LIMIT 10" ), row (1 ), row (2 ), row (3 ), row (4 ));
152
+ assertRows (execute ("SELECT k1 FROM %s WHERE v=0 ORDER BY k2 ANN OF [0.1, 0.1] LIMIT 10" ), row (1 ), row (2 ));
153
+ assertRows (execute ("SELECT k1 FROM %s WHERE v>0 ORDER BY k2 ANN OF [0.1, 0.1] LIMIT 10" ), row (3 ), row (4 ));
146
154
});
147
155
148
156
// test again with a different order
149
157
execute ("TRUNCATE TABLE %s" );
150
- execute (insert , row (1 , vector (0.1f , 0.4f ), 0 ));
151
- execute (insert , row (2 , vector (0.1f , 0.3f ), 0 ));
152
- execute (insert , row (3 , vector (0.1f , 0.2f ), 0 ));
153
- execute (insert , row (4 , vector (0.1f , 0.1f ), 0 ));
158
+ execute (insert , row (1 , vector (0.1f , 0.4f ), 10 , 0 ));
159
+ execute (insert , row (2 , vector (0.1f , 0.3f ), 20 , 0 ));
160
+ execute (insert , row (3 , vector (0.1f , 0.2f ), 30 , 1 ));
161
+ execute (insert , row (4 , vector (0.1f , 0.1f ), 40 , 1 ));
154
162
beforeAndAfterFlush (() -> {
163
+ // query with ANN only
155
164
assertRows (execute ("SELECT k1 FROM %s ORDER BY k2 ANN OF [0.1, 0.1] LIMIT 10" ), row (4 ), row (3 ), row (2 ), row (1 ));
156
165
assertRows (execute ("SELECT k1 FROM %s ORDER BY k2 ANN OF [0.1, 0.1] LIMIT 2" ), row (4 ), row (3 ));
166
+
167
+ // query with hybrid search
168
+ assertRows (execute ("SELECT k1 FROM %s WHERE v>=0 ORDER BY k2 ANN OF [0.1, 0.1] LIMIT 10" ), row (4 ), row (3 ), row (2 ), row (1 ));
169
+ assertRows (execute ("SELECT k1 FROM %s WHERE v=0 ORDER BY k2 ANN OF [0.1, 0.1] LIMIT 10" ), row (2 ), row (1 ));
170
+ assertRows (execute ("SELECT k1 FROM %s WHERE v>0 ORDER BY k2 ANN OF [0.1, 0.1] LIMIT 10" ), row (4 ), row (3 ));
157
171
});
158
172
}
159
173
0 commit comments