summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/go/go.mod2
-rw-r--r--client/go/go.sum2
-rw-r--r--client/js/app/yarn.lock32
-rw-r--r--container-search/abi-spec.json1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/StringInItem.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java19
-rw-r--r--container-search/src/test/java/com/yahoo/search/querytransform/LowercasingTestCase.java23
-rw-r--r--dependency-versions/pom.xml2
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java13
-rw-r--r--integration/intellij/build.gradle.kts2
-rw-r--r--jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/User.java13
-rw-r--r--searchlib/src/tests/ranksetup/verify_feature/verify_feature_test.cpp5
-rw-r--r--searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp3
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.cpp18
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h3
15 files changed, 114 insertions, 28 deletions
diff --git a/client/go/go.mod b/client/go/go.mod
index 0df2d465cd7..8d46118dea6 100644
--- a/client/go/go.mod
+++ b/client/go/go.mod
@@ -8,7 +8,7 @@ require (
github.com/fatih/color v1.16.0
// This is the most recent version compatible with Go 1.20. Upgrade when we upgrade our Go version
github.com/go-json-experiment/json v0.0.0-20230324203220-04923b7a9528
- github.com/klauspost/compress v1.17.3
+ github.com/klauspost/compress v1.17.4
github.com/mattn/go-colorable v0.1.13
github.com/mattn/go-isatty v0.0.20
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8
diff --git a/client/go/go.sum b/client/go/go.sum
index 1cc09fb4e9a..c4dd9837194 100644
--- a/client/go/go.sum
+++ b/client/go/go.sum
@@ -18,6 +18,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA=
github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
+github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4=
+github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
diff --git a/client/js/app/yarn.lock b/client/js/app/yarn.lock
index 984bdbd2f48..b7a77e10561 100644
--- a/client/js/app/yarn.lock
+++ b/client/js/app/yarn.lock
@@ -777,31 +777,31 @@
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.4.tgz#19654d1026cc410975d46445180e70a5089b3e7d"
integrity sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA==
-"@fortawesome/fontawesome-common-types@6.5.0":
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.0.tgz#5d3912d28a2fb3e6c867320eb27a71f23e7bcb29"
- integrity sha512-vYC8oN2l8meu05sRi1j3Iie/HNFAeIxpitYFhsUrBc11TxiMken9QdXnSQ0q16FYsOSt/6soxs5ghdk+VYGiog==
+"@fortawesome/fontawesome-common-types@6.5.1":
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.5.1.tgz#fdb1ec4952b689f5f7aa0bffe46180bb35490032"
+ integrity sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==
"@fortawesome/fontawesome-svg-core@^6":
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.0.tgz#4957e163bb890963442c110c5290703af21803d9"
- integrity sha512-5DrR+oxQr+ruRQ3CEVV8DSCT/q8Atm56+FzAs0P6eW/epW47OmecSpSwc/YTlJ3u5BfPKUBSGyPR2qjZ+5eIgA==
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.5.1.tgz#9d56d46bddad78a7ebb2043a97957039fcebcf0a"
+ integrity sha512-MfRCYlQPXoLlpem+egxjfkEuP9UQswTrlCOsknus/NcMoblTH2g0jPrapbcIb04KGA7E2GZxbAccGZfWoYgsrQ==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.5.0"
+ "@fortawesome/fontawesome-common-types" "6.5.1"
"@fortawesome/free-regular-svg-icons@^6":
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.5.0.tgz#c2c448695efc0b2a16d126ff8e3cb94e1544778b"
- integrity sha512-RaBW/y0jKcCyEPM+NYuBs3bQXuLYZHnXABQPmg6qwuRxNb2EUmyCcVUECUH2dkFmMjggh/xvl6n6y62Pl19JkA==
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.5.1.tgz#c98a91d2c9137ed54a7aa2362a916f46503e0627"
+ integrity sha512-m6ShXn+wvqEU69wSP84coxLbNl7sGVZb+Ca+XZq6k30SzuP3X4TfPqtycgUh9ASwlNh5OfQCd8pDIWxl+O+LlQ==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.5.0"
+ "@fortawesome/fontawesome-common-types" "6.5.1"
"@fortawesome/free-solid-svg-icons@^6":
- version "6.5.0"
- resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.0.tgz#bc50a291948fa43b1a9502548ac0b02e7b1f2433"
- integrity sha512-6ZPq8mme67Q7O9Fbp2O+Z7mPZbcWTsRv555JLftLaTodiV0Wq+99YgMhyQ8O6mgNQfComqS9OEvqs7M8ySA92g==
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.5.1.tgz#737b8d787debe88b400ab7528f47be333031274a"
+ integrity sha512-S1PPfU3mIJa59biTtXJz1oI0+KAXW6bkAb31XKhxdxtuXDiUIFsih4JR1v5BbxY7hVHsD1RKq+jRkVRaf773NQ==
dependencies:
- "@fortawesome/fontawesome-common-types" "6.5.0"
+ "@fortawesome/fontawesome-common-types" "6.5.1"
"@fortawesome/react-fontawesome@^0":
version "0.2.0"
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json
index f2348c58d4d..80833e3e27c 100644
--- a/container-search/abi-spec.json
+++ b/container-search/abi-spec.json
@@ -1582,6 +1582,7 @@
"public int getTermCount()",
"protected void appendBodyString(java.lang.StringBuilder)",
"public void addToken(java.lang.String)",
+ "public void removeToken(java.lang.String)",
"public java.util.Collection getTokens()",
"public boolean equals(java.lang.Object)",
"public int hashCode()"
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/StringInItem.java b/container-search/src/main/java/com/yahoo/prelude/query/StringInItem.java
index ebcf0de1a21..4473010082e 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/StringInItem.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/StringInItem.java
@@ -68,6 +68,10 @@ public class StringInItem extends InItem {
tokens.add(token);
}
+ public void removeToken(String token) {
+ tokens.remove(token);
+ }
+
public Collection<String> getTokens() { return Set.copyOf(tokens); }
@Override
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java
index d023c1f9143..1889c755833 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/LowercasingSearcher.java
@@ -64,6 +64,8 @@ public abstract class LowercasingSearcher extends Searcher {
}
} else if (next instanceof WordAlternativesItem) {
lowerCase((WordAlternativesItem) next, indexFacts);
+ } else if (next instanceof StringInItem) {
+ lowerCase((StringInItem) next, indexFacts);
}
}
}
@@ -144,6 +146,23 @@ public abstract class LowercasingSearcher extends Searcher {
}
+ private void lowerCase(StringInItem set, IndexFacts.Session indexFacts) {
+ if ( ! syntheticLowerCaseCheck(set.getIndexName(), indexFacts, true)) {
+ return;
+ }
+
+ // set.getTokens() uses Set.copyOf(), thus modification to original set is not reflected in
+ // set being iterated over.
+ var originalTokens = set.getTokens();
+ for (String originalToken : originalTokens) {
+ String token = toLowerCase(originalToken);
+ if (!originalToken.equals(token)) {
+ set.removeToken(originalToken);
+ set.addToken(token);
+ }
+ }
+ }
+
/**
* Override this to control whether a given term should be lowercased.
*
diff --git a/container-search/src/test/java/com/yahoo/search/querytransform/LowercasingTestCase.java b/container-search/src/test/java/com/yahoo/search/querytransform/LowercasingTestCase.java
index c02739e857b..bacc5483a16 100644
--- a/container-search/src/test/java/com/yahoo/search/querytransform/LowercasingTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/querytransform/LowercasingTestCase.java
@@ -11,6 +11,7 @@ import com.yahoo.prelude.IndexModel;
import static org.junit.jupiter.api.Assertions.assertEquals;
import com.yahoo.prelude.SearchDefinition;
import com.yahoo.prelude.query.SameElementItem;
+import com.yahoo.prelude.query.StringInItem;
import org.junit.jupiter.api.Test;
import com.yahoo.component.chain.Chain;
import com.yahoo.prelude.Index;
@@ -232,4 +233,26 @@ public class LowercasingTestCase {
assertEquals("def", w1.getWord());
}
+ @Test
+ void testIn() {
+ Query q = new Query();
+ AndItem root = new AndItem();
+ StringInItem tmp;
+ tmp = new StringInItem(BAMSE);
+ tmp.addToken("AbC");
+ root.addItem(tmp);
+ tmp = new StringInItem(TEDDY);
+ tmp.addToken("dEf");
+ root.addItem(tmp);
+ q.getModel().getQueryTree().setRoot(root);
+ Result r = createExecution().search(q);
+ root = (AndItem) r.getQuery().getModel().getQueryTree().getRoot();
+ StringInItem w0 = (StringInItem) root.getItem(0);
+ StringInItem w1 = (StringInItem) root.getItem(1);
+ assertEquals(1, w0.getTokens().size());
+ assertEquals(1, w1.getTokens().size());
+ assertEquals("abc", w0.getTokens().iterator().next());
+ assertEquals("dEf", w1.getTokens().iterator().next());
+ }
+
}
diff --git a/dependency-versions/pom.xml b/dependency-versions/pom.xml
index 05daa54f32b..62afa4b17f7 100644
--- a/dependency-versions/pom.xml
+++ b/dependency-versions/pom.xml
@@ -59,7 +59,7 @@
<antlr4.vespa.version>4.13.1</antlr4.vespa.version>
<apache.httpclient.vespa.version>4.5.14</apache.httpclient.vespa.version>
<apache.httpcore.vespa.version>4.4.16</apache.httpcore.vespa.version>
- <apache.httpclient5.vespa.version>5.2.1</apache.httpclient5.vespa.version>
+ <apache.httpclient5.vespa.version>5.2.3</apache.httpclient5.vespa.version>
<apache.httpcore5.vespa.version>5.2.4</apache.httpcore5.vespa.version>
<apiguardian.vespa.version>1.1.2</apiguardian.vespa.version>
<asm.vespa.version>9.6</asm.vespa.version>
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
index 7715eb0fb8d..95dc1cac9f2 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -243,7 +243,7 @@ public class Flags {
public static final UnboundBooleanFlag ENABLED_HORIZON_DASHBOARD = defineFeatureFlag(
"enabled-horizon-dashboard", false,
- List.of("olaa"), "2021-09-13", "2023-12-01",
+ List.of("olaa"), "2021-09-13", "2024-01-01",
"Enable Horizon dashboard",
"Takes effect immediately",
TENANT_ID, CONSOLE_USER_EMAIL
@@ -279,7 +279,7 @@ public class Flags {
public static final UnboundBooleanFlag SEPARATE_METRIC_CHECK_CONFIG = defineFeatureFlag(
"separate-metric-check-config", false,
- List.of("olaa"), "2022-07-04", "2023-12-01",
+ List.of("olaa"), "2022-07-04", "2024-01-01",
"Determines whether one metrics config check should be written per Vespa node",
"Takes effect on next tick",
HOSTNAME);
@@ -294,7 +294,7 @@ public class Flags {
public static final UnboundBooleanFlag ENABLE_OTELCOL = defineFeatureFlag(
"enable-otel-collector", false,
- List.of("olaa"), "2022-09-23", "2023-12-01",
+ List.of("olaa"), "2022-09-23", "2024-01-01",
"Whether an OpenTelemetry collector should be enabled",
"Takes effect at next tick",
INSTANCE_ID);
@@ -425,6 +425,13 @@ public class Flags {
"Takes effect immediately",
TENANT_ID, CONSOLE_USER_EMAIL);
+ public static final UnboundBooleanFlag CENTRALIZED_AUTHZ = defineFeatureFlag(
+ "centralized-authz", false,
+ List.of("mortent"), "2023-11-27", "2024-02-01",
+ "Use centralized authorization checks",
+ "Takes effect immediately",
+ CONSOLE_USER_EMAIL);
+
/** WARNING: public for testing: All flags should be defined in {@link Flags}. */
public static UnboundBooleanFlag defineFeatureFlag(String flagId, boolean defaultValue, List<String> owners,
String createdAt, String expiresAt, String description,
diff --git a/integration/intellij/build.gradle.kts b/integration/intellij/build.gradle.kts
index b437a1f5b28..502c09c58f8 100644
--- a/integration/intellij/build.gradle.kts
+++ b/integration/intellij/build.gradle.kts
@@ -4,7 +4,7 @@ import org.jetbrains.grammarkit.tasks.GenerateParserTask
plugins {
id("java-library")
- id("org.jetbrains.intellij") version "1.16.0"
+ id("org.jetbrains.intellij") version "1.16.1"
id("org.jetbrains.grammarkit") version "2022.3.2"
id("maven-publish") // to deploy the plugin into a Maven repo
}
diff --git a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/User.java b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/User.java
index f9ea6da3099..b573cf0c04a 100644
--- a/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/User.java
+++ b/jdisc-security-filters/src/main/java/com/yahoo/jdisc/http/filter/security/misc/User.java
@@ -80,4 +80,17 @@ public class User {
public int hashCode() {
return Objects.hash(name, email, nickname, picture, lastLogin, loginCount, isVerified);
}
+
+ @Override
+ public String toString() {
+ return "User{" +
+ "email='" + email + '\'' +
+ ", name='" + name + '\'' +
+ ", nickname='" + nickname + '\'' +
+ ", picture='" + picture + '\'' +
+ ", isVerified=" + isVerified +
+ ", loginCount=" + loginCount +
+ ", lastLogin=" + lastLogin +
+ '}';
+ }
}
diff --git a/searchlib/src/tests/ranksetup/verify_feature/verify_feature_test.cpp b/searchlib/src/tests/ranksetup/verify_feature/verify_feature_test.cpp
index feee5128493..4fdcc7f1d8a 100644
--- a/searchlib/src/tests/ranksetup/verify_feature/verify_feature_test.cpp
+++ b/searchlib/src/tests/ranksetup/verify_feature/verify_feature_test.cpp
@@ -28,6 +28,7 @@ std::ostream &operator<<(std::ostream &os, Level level) {
}
bool equal(const vespalib::string & a, const vespalib::string &b) {
+ EXPECT_EQUAL(a, b);
return a == b;
}
@@ -53,6 +54,10 @@ struct RankFixture {
EXPECT_EQUAL(errors[i].first, expected[i].second.first);
EXPECT_TRUE(expected[i].first(errors[i].second, expected[i].second.second));
}
+ for (size_t i(expected.size()); i < errors.size(); i++) {
+ EXPECT_EQUAL(errors[i].first, Level::INFO);
+ EXPECT_EQUAL(errors[i].second, "");
+ }
return ok;
}
};
diff --git a/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp b/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp
index 4436ea203ce..3ff5c749899 100644
--- a/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/postinglistsearchcontext.hpp
@@ -73,8 +73,7 @@ void
PostingListSearchContextT<DataT>::fillBitVector()
{
for (auto it(_lowerDictItr); it != _upperDictItr; ++it) {
- _merger.addToBitVector(PostingListTraverser<PostingStore>(_posting_store,
- it.getData().load_acquire()));
+ _merger.addToBitVector(PostingListTraverser<PostingStore>(_posting_store, it.getData().load_acquire()));
}
}
diff --git a/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.cpp b/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.cpp
index 7e4ec966dda..27ff0d235a3 100644
--- a/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.cpp
@@ -87,21 +87,33 @@ CreateBlueprintVisitorHelper::createWeightedSet(std::unique_ptr<WS> bp, NODE &n)
bp->complete(estimate);
setResult(std::move(bp));
}
+
void
-CreateBlueprintVisitorHelper::visitWeightedSetTerm(query::WeightedSetTerm &n) {
+CreateBlueprintVisitorHelper::visitWeightedSetTerm(query::WeightedSetTerm &n)
+{
createWeightedSet(std::make_unique<WeightedSetTermBlueprint>(_field), n);
}
+
void
-CreateBlueprintVisitorHelper::visitDotProduct(query::DotProduct &n) {
+CreateBlueprintVisitorHelper::visitDotProduct(query::DotProduct &n)
+{
createWeightedSet(std::make_unique<DotProductBlueprint>(_field), n);
}
+
void
-CreateBlueprintVisitorHelper::visitWandTerm(query::WandTerm &n) {
+CreateBlueprintVisitorHelper::visitWandTerm(query::WandTerm &n)
+{
createWeightedSet(std::make_unique<ParallelWeakAndBlueprint>(_field, n.getTargetNumHits(),
n.getScoreThreshold(), n.getThresholdBoostFactor()),
n);
}
+void
+CreateBlueprintVisitorHelper::visitInTerm(query::InTerm &n)
+{
+ createWeightedSet(std::make_unique<WeightedSetTermBlueprint>(_field), n);
+}
+
void CreateBlueprintVisitorHelper::visit(query::TrueQueryNode &) {
setResult(std::make_unique<AlwaysTrueBlueprint>());
}
diff --git a/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h b/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h
index 26d6f1d384d..98f62fa3249 100644
--- a/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h
+++ b/searchlib/src/vespa/searchlib/queryeval/create_blueprint_visitor_helper.h
@@ -48,6 +48,7 @@ public:
void visitDotProduct(query::DotProduct &n);
void visitWandTerm(query::WandTerm &n);
void visitNearestNeighborTerm(query::NearestNeighborTerm &n);
+ void visitInTerm(query::InTerm &n);
void handleNumberTermAsText(query::NumberTerm &n);
@@ -69,7 +70,7 @@ public:
void visit(query::WeightedSetTerm &n) override { visitWeightedSetTerm(n); }
void visit(query::DotProduct &n) override { visitDotProduct(n); }
void visit(query::WandTerm &n) override { visitWandTerm(n); }
- void visit(query::InTerm&) override { illegalVisit(); }
+ void visit(query::InTerm& n) override { visitInTerm(n); }
void visit(query::NumberTerm &n) override = 0;
void visit(query::LocationTerm &n) override = 0;