Skip to content

Commit 27a0143

Browse files
committed
Fix searching
1 parent a0cc539 commit 27a0143

File tree

5 files changed

+38
-34
lines changed

5 files changed

+38
-34
lines changed

src/main/java/org/jabref/logic/search/IndexManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ public SearchResults search(SearchQuery query) {
232232
if (query.getSearchFlags().contains(SearchFlags.FULLTEXT)) {
233233
// TODO: merge results from lucene and postgres
234234
} else {
235-
query.setSearchResults(bibFieldsSearcher.search(query.getSqlQuery(bibFieldsIndexer.getMainTable())));
235+
query.setSearchResults(bibFieldsSearcher.search(query.getSqlQuery(bibFieldsIndexer.getTable())));
236236
}
237237
return query.getSearchResults();
238238
}

src/main/java/org/jabref/logic/search/indexing/BibFieldsIndexer.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,12 @@ public BibFieldsIndexer(BibEntryPreferences bibEntryPreferences, BibDatabaseCont
5656
this.mainTable = databaseContext.getUniqueName();
5757
this.splitValuesTable = mainTable + SPLIT_TABLE_SUFFIX;
5858

59-
this.schemaMainTableReference = """
60-
"%s"."%s"
61-
""".formatted(PostgreConstants.BIB_FIELDS_SCHEME, mainTable);
62-
this.schemaSplitValuesTableReference = """
63-
"%s"."%s"
64-
""".formatted(PostgreConstants.BIB_FIELDS_SCHEME, splitValuesTable);
59+
this.schemaMainTableReference = PostgreConstants.getMainTableSchemaReference(mainTable);
60+
this.schemaSplitValuesTableReference = PostgreConstants.getSplitTableSchemaReference(mainTable);
6561
// TODO: Set-up should be in a background task
6662
setup();
6763
}
6864

69-
public String getMainTable() {
70-
return mainTable;
71-
}
72-
7365
/**
7466
* Creates a table for the library in the database, and sets up indexes on the columns.
7567
*/
@@ -382,6 +374,10 @@ public void updateEntry(BibEntry entry, Field field, String oldValue, String new
382374
}
383375
}
384376

377+
public String getTable() {
378+
return mainTable;
379+
}
380+
385381
public void close() {
386382
HeadlessExecutorService.INSTANCE.execute(this::closeIndex);
387383
}

src/main/java/org/jabref/logic/search/query/SearchToSqlVisitor.java

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.jabref.logic.search.indexing.BibFieldsIndexer;
99
import org.jabref.model.entry.field.InternalField;
1010
import org.jabref.model.entry.field.StandardField;
11+
import org.jabref.model.search.PostgreConstants;
1112
import org.jabref.search.SearchBaseVisitor;
1213
import org.jabref.search.SearchParser;
1314

@@ -18,7 +19,6 @@
1819
import static org.jabref.model.search.PostgreConstants.FIELD_NAME;
1920
import static org.jabref.model.search.PostgreConstants.FIELD_VALUE_LITERAL;
2021
import static org.jabref.model.search.PostgreConstants.FIELD_VALUE_TRANSFORMED;
21-
import static org.jabref.model.search.PostgreConstants.SPLIT_TABLE_SUFFIX;
2222

2323
/**
2424
* Converts to a query processable by the scheme created by {@link BibFieldsIndexer}.
@@ -38,9 +38,9 @@ public class SearchToSqlVisitor extends SearchBaseVisitor<String> {
3838
private final List<String> ctes = new ArrayList<>();
3939
private int cteCounter = 0;
4040

41-
public SearchToSqlVisitor(String mainTableName) {
42-
this.mainTableName = mainTableName;
43-
this.splitValuesTableName = mainTableName + SPLIT_TABLE_SUFFIX;
41+
public SearchToSqlVisitor(String table) {
42+
this.mainTableName = PostgreConstants.getMainTableSchemaReference(table);
43+
this.splitValuesTableName = PostgreConstants.getSplitTableSchemaReference(table);
4444
}
4545

4646
private enum SearchTermFlag {
@@ -73,7 +73,7 @@ public String visitUnaryExpression(SearchParser.UnaryExpressionContext ctx) {
7373
String cte = """
7474
cte%d AS (
7575
SELECT %s.%s
76-
FROM "%s" AS %s
76+
FROM %s AS %s
7777
WHERE %s.%s NOT IN (
7878
SELECT %s
7979
FROM %s
@@ -223,7 +223,7 @@ private String buildContainsFieldQuery(String field, String operator, String pre
223223
return """
224224
cte%d AS (
225225
SELECT %s.%s
226-
FROM "%s" AS %s
226+
FROM %s AS %s
227227
WHERE (%s.%s = '%s') AND ((%s.%s %s '%s%s%s') OR (%s.%s %s '%s%s%s'))
228228
)
229229
""".formatted(
@@ -244,10 +244,10 @@ private String buildContainsNegationFieldQuery(String field, String operator, St
244244
return """
245245
cte%d AS (
246246
SELECT %s.%s
247-
FROM "%s" AS %s
247+
FROM %s AS %s
248248
WHERE %s.%s NOT IN (
249249
SELECT %s.%s
250-
FROM "%s" AS %s
250+
FROM %s AS %s
251251
WHERE (%s.%s = '%s') AND ((%s.%s %s '%s%s%s') OR (%s.%s %s '%s%s%s'))
252252
)
253253
)
@@ -272,8 +272,8 @@ private String buildExactFieldQuery(String field, String operator, String term)
272272
return """
273273
cte%d AS (
274274
SELECT %s.%s
275-
FROM "%s" AS %s
276-
LEFT JOIN "%s" AS %s
275+
FROM %s AS %s
276+
LEFT JOIN %s AS %s
277277
ON (%s.%s = %s.%s AND %s.%s = %s.%s)
278278
WHERE (
279279
(%s.%s = '%s') AND ((%s.%s %s '%s') OR (%s.%s %s '%s'))
@@ -300,11 +300,11 @@ private String buildExactNegationFieldQuery(String field, String operator, Strin
300300
return """
301301
cte%d AS (
302302
SELECT %s.%s
303-
FROM "%s" AS %s
303+
FROM %s AS %s
304304
WHERE %s.%s NOT IN (
305305
SELECT %s.%s
306-
FROM "%s" AS %s
307-
LEFT JOIN "%s" AS %s
306+
FROM %s AS %s
307+
LEFT JOIN %s AS %s
308308
ON (%s.%s = %s.%s AND %s.%s = %s.%s)
309309
WHERE (
310310
(%s.%s = '%s') AND ((%s.%s %s '%s') OR (%s.%s %s '%s'))
@@ -335,7 +335,7 @@ private String buildContainsAnyFieldQuery(String operator, String prefixSuffix,
335335
return """
336336
cte%d AS (
337337
SELECT %s.%s
338-
FROM "%s" AS %s
338+
FROM %s AS %s
339339
WHERE ((%s.%s %s '%s%s%s') OR (%s.%s %s '%s%s%s'))
340340
)
341341
""".formatted(
@@ -354,8 +354,8 @@ private String buildExactAnyFieldQuery(String operator, String term) {
354354
return """
355355
cte%d AS (
356356
SELECT %s.%s
357-
FROM "%s" AS %s
358-
LEFT JOIN "%s" AS %s
357+
FROM %s AS %s
358+
LEFT JOIN %s AS %s
359359
ON (%s.%s = %s.%s AND %s.%s = %s.%s)
360360
WHERE (
361361
(%s.%s %s '%s') OR (%s.%s %s '%s')
@@ -380,11 +380,11 @@ private String buildExactNegationAnyFieldQuery(String operator, String term) {
380380
return """
381381
cte%d AS (
382382
SELECT %s.%s
383-
FROM "%s" AS %s
383+
FROM %s AS %s
384384
WHERE %s.%s NOT IN (
385385
SELECT %s.%s
386-
FROM "%s" AS %s
387-
LEFT JOIN "%s" AS %s
386+
FROM %s AS %s
387+
LEFT JOIN %s AS %s
388388
ON (%s.%s = %s.%s AND %s.%s = %s.%s)
389389
WHERE (
390390
(%s.%s %s '%s') OR (%s.%s %s '%s')
@@ -413,10 +413,10 @@ private String buildContainsNegationAnyFieldQuery(String operator, String prefix
413413
return """
414414
cte%d AS (
415415
SELECT %s.%s
416-
FROM "%s" AS %s
416+
FROM %s AS %s
417417
WHERE %s.%s NOT IN (
418418
SELECT %s.%s
419-
FROM "%s" AS %s
419+
FROM %s AS %s
420420
WHERE ((%s.%s %s '%s%s%s') OR (%s.%s %s '%s%s%s'))
421421
)
422422
)

src/main/java/org/jabref/model/search/PostgreConstants.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ public enum PostgreConstants {
2222
this.value = value;
2323
}
2424

25+
public static String getMainTableSchemaReference(String mainTable) {
26+
return BIB_FIELDS_SCHEME + ".\"" + mainTable + "\"";
27+
}
28+
29+
public static String getSplitTableSchemaReference(String mainTable) {
30+
return BIB_FIELDS_SCHEME + ".\"" + mainTable + SPLIT_TABLE_SUFFIX + "\"";
31+
}
32+
2533
@Override
2634
public String toString() {
2735
return value;

src/main/java/org/jabref/model/search/query/SearchQuery.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ public SearchQuery(String query, EnumSet<SearchFlags> searchFlags) {
101101
}
102102
}
103103

104-
public SqlSearchQuery getSqlQuery(String tableName) {
105-
return new SqlSearchQuery(SearchToSqlConversion.searchToSql(tableName, query));
104+
public SqlSearchQuery getSqlQuery(String table) {
105+
return new SqlSearchQuery(SearchToSqlConversion.searchToSql(table, query));
106106
}
107107

108108
public String getSearchExpression() {

0 commit comments

Comments
 (0)