Skip to content

Commit 06ed20e

Browse files
committed
Fix some JDBC SQL
Signed-off-by: Łukasz Jernaś <[email protected]>
1 parent 133eb40 commit 06ed20e

File tree

3 files changed

+13
-16
lines changed
  • vector-stores

3 files changed

+13
-16
lines changed

vector-stores/spring-ai-mariadb-store/src/main/java/org/springframework/ai/vectorstore/mariadb/MariaDBVectorStore.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -332,11 +332,11 @@ protected void doDelete(Filter.Expression filterExpression) {
332332
try {
333333
String nativeFilterExpression = this.filterExpressionConverter.convertExpression(filterExpression);
334334

335-
String sql = String.format("DELETE FROM %s WHERE %s", getFullyQualifiedTableName(), nativeFilterExpression);
335+
String sql = "DELETE FROM ? WHERE ?";
336336

337337
logger.debug("Executing delete with filter: {}", sql);
338338

339-
this.jdbcTemplate.update(sql);
339+
this.jdbcTemplate.update(sql, getFullyQualifiedTableName(), nativeFilterExpression);
340340
}
341341
catch (Exception e) {
342342
logger.error("Failed to delete documents by filter: {}", e.getMessage(), e);
@@ -353,21 +353,19 @@ public List<Document> doSimilaritySearch(SearchRequest request) {
353353
String jsonPathFilter = "";
354354

355355
if (StringUtils.hasText(nativeFilterExpression)) {
356-
jsonPathFilter = "and " + nativeFilterExpression + " ";
356+
jsonPathFilter = "and ? ";
357357
}
358358
String distanceType = this.distanceType.name().toLowerCase(Locale.ROOT);
359359

360360
double distance = 1 - request.getSimilarityThreshold();
361-
final String sql = String.format(
362-
"SELECT * FROM (select %s, %s, %s, vec_distance_%s(%s, ?) as distance "
363-
+ "from %s) as t where distance < ? %sorder by distance asc LIMIT ?",
364-
this.idFieldName, this.contentFieldName, this.metadataFieldName, distanceType, this.embeddingFieldName,
365-
getFullyQualifiedTableName(), jsonPathFilter);
361+
final String sql = "SELECT * FROM (select ?, ?, ?, vec_distance_?(?, ?) as distance "
362+
+ "from ?) as t where distance < ? ?order by distance asc LIMIT ?";
366363

367364
logger.debug("SQL query: {}", sql);
368365

369-
return this.jdbcTemplate.query(sql, new DocumentRowMapper(this.objectMapper), embedding, distance,
370-
request.getTopK());
366+
return this.jdbcTemplate.query(sql, new DocumentRowMapper(this.objectMapper), this.idFieldName,
367+
this.contentFieldName, this.metadataFieldName, distanceType, this.embeddingFieldName,
368+
getFullyQualifiedTableName(), jsonPathFilter, embedding, distance, request.getTopK());
371369
}
372370

373371
// ---------------------------------------------------------------------------------

vector-stores/spring-ai-oracle-store/src/main/java/org/springframework/ai/vectorstore/oracle/OracleVectorStore.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -312,11 +312,11 @@ protected void doDelete(Filter.Expression filterExpression) {
312312

313313
try {
314314
String jsonPath = this.filterExpressionConverter.convertExpression(filterExpression);
315-
String sql = String.format("DELETE FROM %s WHERE JSON_EXISTS(metadata, '%s')", this.tableName, jsonPath);
315+
String sql = "DELETE FROM ? WHERE JSON_EXISTS(metadata, '?')";
316316

317-
logger.debug("Executing delete with filter: {}", sql);
317+
logger.debug("Executing delete with filter: {} with params: {} {}", sql, this.tableName, jsonPath);
318318

319-
int deletedCount = this.jdbcTemplate.update(sql);
319+
int deletedCount = this.jdbcTemplate.update(sql, this.tableName, jsonPath);
320320
logger.debug("Deleted {} documents matching filter expression", deletedCount);
321321
}
322322
catch (Exception e) {

vector-stores/spring-ai-pgvector-store/src/main/java/org/springframework/ai/vectorstore/pgvector/PgVectorStore.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -345,12 +345,11 @@ public int getBatchSize() {
345345
protected void doDelete(Filter.Expression filterExpression) {
346346
String nativeFilterExpression = this.filterExpressionConverter.convertExpression(filterExpression);
347347

348-
String sql = "DELETE FROM " + getFullyQualifiedTableName() + " WHERE metadata::jsonb @@ '"
349-
+ nativeFilterExpression + "'::jsonpath";
348+
String sql = "DELETE FROM ? WHERE metadata::jsonb @@ '?'::jsonpath";
350349

351350
// Execute the delete
352351
try {
353-
this.jdbcTemplate.update(sql);
352+
this.jdbcTemplate.update(sql, getFullyQualifiedTableName(), nativeFilterExpression);
354353
}
355354
catch (Exception e) {
356355
throw new IllegalStateException("Failed to delete documents by filter", e);

0 commit comments

Comments
 (0)