Skip to content

Commit 9e6b07e

Browse files
[FIX] XQuery, GUI: improved full-text caching
1 parent 11633a1 commit 9e6b07e

3 files changed

Lines changed: 22 additions & 9 deletions

File tree

basex-core/src/main/java/org/basex/query/QueryContext.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ public final class QueryContext extends Job implements Closeable {
8585
/** User. */
8686
public User user;
8787

88-
/** Full-text position data (needed for highlighting full-text results). */
89-
public FTPosData ftPosData = Prop.gui ? new FTPosData() : null;
88+
/** Cached full-text position data. */
89+
public FTPosData ftPosData;
9090
/** Current full-text lexer. */
9191
public FTLexer ftLexer;
9292
/** Current full-text options. */
@@ -146,7 +146,7 @@ public final class QueryContext extends Job implements Closeable {
146146
* @param parent parent context
147147
*/
148148
public QueryContext(final QueryContext parent) {
149-
this(parent.context, parent, parent.resources, parent.info);
149+
this(parent.context, parent, parent.info);
150150
parent.pushJob(this);
151151
updates = parent.updates;
152152
}
@@ -156,22 +156,21 @@ public QueryContext(final QueryContext parent) {
156156
* @param context database context
157157
*/
158158
public QueryContext(final Context context) {
159-
this(context, null, null, null);
159+
this(context, null, null);
160160
}
161161

162162
/**
163163
* Constructor.
164164
* @param context database context
165165
* @param parent parent context (can be {@code null})
166166
* @param info query info (can be {@code null})
167-
* @param resources resources (can be {@code null})
168167
*/
169-
public QueryContext(final Context context, final QueryContext parent,
170-
final QueryResources resources, final QueryInfo info) {
168+
public QueryContext(final Context context, final QueryContext parent, final QueryInfo info) {
171169
this.context = context;
172170
this.parent = parent;
173171
this.info = info != null ? info : new QueryInfo(context);
174-
this.resources = resources != null ? resources : new QueryResources(this);
172+
this.resources = parent != null ? parent.resources : new QueryResources(this);
173+
this.ftPosData = parent != null ? parent.ftPosData : FTPosData.get(context);
175174
this.user = context.user();
176175
}
177176

basex-core/src/main/java/org/basex/query/QueryProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public QueryProcessor(final String query, final Context ctx) {
4747
public QueryProcessor(final String query, final String uri, final Context ctx,
4848
final QueryInfo info) {
4949
this.query = query;
50-
qc = pushJob(new QueryContext(ctx, null, null, info));
50+
qc = pushJob(new QueryContext(ctx, null, info));
5151
sc = new StaticContext(qc);
5252
sc.baseURI(uri != null && uri.isEmpty() ? "./" : uri);
5353
}

basex-core/src/main/java/org/basex/query/util/ft/FTPosData.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.*;
44

5+
import org.basex.core.*;
56
import org.basex.data.*;
67
import org.basex.util.*;
78
import org.basex.util.hash.*;
@@ -23,6 +24,19 @@ public final class FTPosData {
2324
/** Number of values. */
2425
private int size;
2526

27+
/**
28+
* Creates a new instance of this class.
29+
* @param context database context
30+
* @return new instance or {@code null}
31+
*/
32+
public static FTPosData get(final Context context) {
33+
final Data data = context.data();
34+
if(data == null) return null;
35+
final FTPosData ftp = new FTPosData();
36+
ftp.dt = data;
37+
return ftp;
38+
}
39+
2640
/**
2741
* Adds position data.
2842
* @param data data reference

0 commit comments

Comments
 (0)