66import com .microsoft .semantickernel .connectors .data .mysql .MySQLVectorStoreQueryProvider ;
77import com .microsoft .semantickernel .connectors .data .postgres .PostgreSQLVectorStoreQueryProvider ;
88import com .microsoft .semantickernel .connectors .data .jdbc .filter .SQLEqualToFilterClause ;
9+ import com .microsoft .semantickernel .connectors .data .sqlite .SQLiteVectorStoreQueryProvider ;
910import com .microsoft .semantickernel .data .vectorsearch .VectorSearchFilter ;
1011import com .microsoft .semantickernel .data .vectorsearch .VectorSearchResult ;
1112import com .microsoft .semantickernel .data .vectorstorage .options .GetRecordOptions ;
1718import org .junit .jupiter .params .provider .EnumSource ;
1819import org .junit .jupiter .params .provider .MethodSource ;
1920import org .postgresql .ds .PGSimpleDataSource ;
21+ import org .sqlite .SQLiteDataSource ;
2022import org .testcontainers .containers .MySQLContainer ;
2123import org .testcontainers .containers .PostgreSQLContainer ;
2224import org .testcontainers .junit .jupiter .Container ;
@@ -47,7 +49,8 @@ public class JDBCVectorStoreRecordCollectionTest {
4749
4850 public enum QueryProvider {
4951 MySQL ,
50- PostgreSQL
52+ PostgreSQL ,
53+ SQLite
5154 }
5255
5356 private JDBCVectorStoreRecordCollection <Hotel > buildRecordCollection (QueryProvider provider , @ Nonnull String collectionName ) {
@@ -75,6 +78,14 @@ private JDBCVectorStoreRecordCollection<Hotel> buildRecordCollection(QueryProvid
7578 .withDataSource (dataSource )
7679 .build ();
7780 break ;
81+ case SQLite :
82+ SQLiteDataSource sqliteDataSource = new SQLiteDataSource ();
83+ sqliteDataSource .setUrl ("jdbc:sqlite:file:testdb" );
84+ dataSource = sqliteDataSource ;
85+ queryProvider = SQLiteVectorStoreQueryProvider .builder ()
86+ .withDataSource (sqliteDataSource )
87+ .build ();
88+ break ;
7889 default :
7990 throw new IllegalArgumentException ("Unknown query provider: " + provider );
8091 }
@@ -131,7 +142,7 @@ public void upsertAndGetRecordAsync(QueryProvider provider) {
131142
132143 // Upsert the first time
133144 for (Hotel hotel : hotels ) {
134- Hotel retrievedHotel = recordCollection .getAsync (hotel .getId (), null ).block ();
145+ Hotel retrievedHotel = recordCollection .getAsync (hotel .getId (), null ).block ();
135146 assertNotNull (retrievedHotel );
136147 assertEquals (hotel .getId (), retrievedHotel .getId ());
137148 assertEquals (hotel .getRating (), retrievedHotel .getRating ());
@@ -146,7 +157,7 @@ public void upsertAndGetRecordAsync(QueryProvider provider) {
146157 }
147158
148159 for (Hotel hotel : hotels ) {
149- Hotel retrievedHotel = recordCollection .getAsync (hotel .getId (), null ).block ();
160+ Hotel retrievedHotel = recordCollection .getAsync (hotel .getId (), null ).block ();
150161 assertNotNull (retrievedHotel );
151162 assertEquals (hotel .getId (), retrievedHotel .getId ());
152163 assertEquals (1.0 , retrievedHotel .getRating ());
@@ -157,7 +168,7 @@ public void upsertAndGetRecordAsync(QueryProvider provider) {
157168 @ EnumSource (QueryProvider .class )
158169 public void getBatchAsync (QueryProvider provider ) {
159170 String collectionName = "getBatchAsync" ;
160- JDBCVectorStoreRecordCollection <Hotel > recordCollection = buildRecordCollection (provider , collectionName );
171+ JDBCVectorStoreRecordCollection <Hotel > recordCollection = buildRecordCollection (provider , collectionName );
161172
162173 List <Hotel > hotels = getHotels ();
163174 for (Hotel hotel : hotels ) {
@@ -169,7 +180,7 @@ public void getBatchAsync(QueryProvider provider) {
169180 keys .add (hotel .getId ());
170181 }
171182
172- List <Hotel > retrievedHotels = recordCollection .getBatchAsync (keys , null ).block ();
183+ List <Hotel > retrievedHotels = recordCollection .getBatchAsync (keys , null ).block ();
173184 assertNotNull (retrievedHotels );
174185 assertEquals (hotels .size (), retrievedHotels .size ());
175186 }
@@ -178,7 +189,7 @@ public void getBatchAsync(QueryProvider provider) {
178189 @ EnumSource (QueryProvider .class )
179190 public void upsertBatchAndGetBatchAsync (QueryProvider provider ) {
180191 String collectionName = "upsertBatchAndGetBatchAsync" ;
181- JDBCVectorStoreRecordCollection <Hotel > recordCollection = buildRecordCollection (provider , collectionName );
192+ JDBCVectorStoreRecordCollection <Hotel > recordCollection = buildRecordCollection (provider , collectionName );
182193
183194 List <Hotel > hotels = getHotels ();
184195 recordCollection .upsertBatchAsync (hotels , null ).block ();
@@ -188,7 +199,7 @@ public void upsertBatchAndGetBatchAsync(QueryProvider provider) {
188199 keys .add (hotel .getId ());
189200 }
190201
191- List <Hotel > retrievedHotels = recordCollection .getBatchAsync (keys , null ).block ();
202+ List <Hotel > retrievedHotels = recordCollection .getBatchAsync (keys , null ).block ();
192203 assertNotNull (retrievedHotels );
193204 assertEquals (hotels .size (), retrievedHotels .size ());
194205 }
@@ -209,7 +220,7 @@ public void insertAndReplaceAsync(QueryProvider provider) {
209220 keys .add (hotel .getId ());
210221 }
211222
212- List <Hotel > retrievedHotels = recordCollection .getBatchAsync (keys , null ).block ();
223+ List <Hotel > retrievedHotels = recordCollection .getBatchAsync (keys , null ).block ();
213224 assertNotNull (retrievedHotels );
214225 assertEquals (hotels .size (), retrievedHotels .size ());
215226 }
@@ -225,7 +236,7 @@ public void deleteRecordAsync(QueryProvider provider) {
225236
226237 for (Hotel hotel : hotels ) {
227238 recordCollection .deleteAsync (hotel .getId (), null ).block ();
228- Hotel retrievedHotel = recordCollection .getAsync (hotel .getId (), null ).block ();
239+ Hotel retrievedHotel = recordCollection .getAsync (hotel .getId (), null ).block ();
229240 assertNull (retrievedHotel );
230241 }
231242 }
@@ -247,7 +258,7 @@ public void deleteBatchAsync(QueryProvider provider) {
247258 recordCollection .deleteBatchAsync (keys , null ).block ();
248259
249260 for (String key : keys ) {
250- Hotel retrievedHotel = recordCollection .getAsync (key , null ).block ();
261+ Hotel retrievedHotel = recordCollection .getAsync (key , null ).block ();
251262 assertNull (retrievedHotel );
252263 }
253264 }
@@ -266,7 +277,7 @@ public void getWithNoVectors(QueryProvider provider) {
266277 .build ();
267278
268279 for (Hotel hotel : hotels ) {
269- Hotel retrievedHotel = recordCollection .getAsync (hotel .getId (), options ).block ();
280+ Hotel retrievedHotel = recordCollection .getAsync (hotel .getId (), options ).block ();
270281 assertNotNull (retrievedHotel );
271282 assertEquals (hotel .getId (), retrievedHotel .getId ());
272283 assertNull (retrievedHotel .getEuclidean ());
@@ -277,7 +288,7 @@ public void getWithNoVectors(QueryProvider provider) {
277288 .build ();
278289
279290 for (Hotel hotel : hotels ) {
280- Hotel retrievedHotel = recordCollection .getAsync (hotel .getId (), options ).block ();
291+ Hotel retrievedHotel = recordCollection .getAsync (hotel .getId (), options ).block ();
281292 assertNotNull (retrievedHotel );
282293 assertEquals (hotel .getId (), retrievedHotel .getId ());
283294 assertNotNull (retrievedHotel .getEuclidean ());
@@ -302,7 +313,7 @@ public void getBatchWithNoVectors(QueryProvider provider) {
302313 keys .add (hotel .getId ());
303314 }
304315
305- List <Hotel > retrievedHotels = recordCollection .getBatchAsync (keys , options ).block ();
316+ List <Hotel > retrievedHotels = recordCollection .getBatchAsync (keys , options ).block ();
306317 assertNotNull (retrievedHotels );
307318 assertEquals (hotels .size (), retrievedHotels .size ());
308319
@@ -314,7 +325,7 @@ public void getBatchWithNoVectors(QueryProvider provider) {
314325 .includeVectors (true )
315326 .build ();
316327
317- retrievedHotels = recordCollection .getBatchAsync (keys , options ).block ();
328+ retrievedHotels = recordCollection .getBatchAsync (keys , options ).block ();
318329 assertNotNull (retrievedHotels );
319330 assertEquals (hotels .size (), retrievedHotels .size ());
320331
0 commit comments