Skip to content

Commit

Permalink
Merge branch 'master' into deprecate-remove-field
Browse files Browse the repository at this point in the history
  • Loading branch information
gally47 authored Jan 29, 2025
2 parents d96108d + 6ed9c02 commit 34b2b38
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 11 deletions.
5 changes: 5 additions & 0 deletions changelog/unreleased/issue-9368.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
type = "fixed"
message = "Fixed query validation with parameter usage. Parameters representing field names do not cause 'unknown field' warnings anymore."

issues = ["9368"]
pulls = ["21469"]
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
*/
package org.graylog.plugins.views.search.validation.validators;

import jakarta.inject.Singleton;
import org.graylog.plugins.views.search.engine.QueryPosition;
import org.graylog.plugins.views.search.rest.MappedFieldTypeDTO;
import org.graylog.plugins.views.search.validation.ParsedTerm;
Expand All @@ -26,8 +27,6 @@
import org.graylog.plugins.views.search.validation.ValidationType;
import org.graylog.plugins.views.search.validation.validators.util.UnknownFieldsListLimiter;

import jakarta.inject.Singleton;

import java.util.List;
import java.util.Map;
import java.util.Set;
Expand Down Expand Up @@ -66,6 +65,7 @@ public List<ValidationMessage> validate(final ValidationContext context) {
List<ParsedTerm> identifyUnknownFields(final Set<String> availableFields, final List<ParsedTerm> terms) {
final Map<String, List<ParsedTerm>> groupedByField = terms.stream()
.filter(t -> !t.isDefaultField())
.filter(term -> !isParameter(term.getRealFieldName()))
.filter(term -> !SEARCHABLE_ES_FIELDS.contains(term.getRealFieldName()))
.filter(term -> !RESERVED_SETTABLE_FIELDS.contains(term.getRealFieldName()))
.filter(term -> !availableFields.contains(term.getRealFieldName()))
Expand All @@ -74,4 +74,8 @@ List<ParsedTerm> identifyUnknownFields(final Set<String> availableFields, final

return unknownFieldsListLimiter.filterElementsContainingUsefulInformation(groupedByField);
}

private boolean isParameter(final String term) {
return term.startsWith("$") && term.endsWith("$");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,16 @@ void testDoesNotIdentifyAvailableFieldAsUnknown() {
assertTrue(unknownFields.isEmpty());
}

@Test
void testDoesNotIdentifyParameterFieldAsUnknownField() {
final List<ParsedTerm> unknownFields = toTest.identifyUnknownFields(
Set.of("some_normal_field"),
List.of(ParsedTerm.create("$param_representing_field$", "GET"), //param can be used for field name
ParsedTerm.create("_exists_", "$param_representing_field$")) //...even in exists query
);
assertTrue(unknownFields.isEmpty());
}

@Test
void testIdentifiesUnknownField() {
final ParsedTerm unknownField = ParsedTerm.create("strange_field", "!!!");
Expand Down
18 changes: 9 additions & 9 deletions graylog2-web-interface/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -7444,7 +7444,7 @@ [email protected]:
eslint-config-airbnb "19.0.4"
eslint-import-resolver-webpack "0.13.10"
eslint-plugin-compat "4.2.0"
eslint-plugin-graylog "file:../../../../.cache/yarn/v6/npm-eslint-config-graylog-1.3.0-b018d78b-68eb-4ab9-9ab5-603b868f303c-1738066234730/node_modules/eslint-plugin-graylog"
eslint-plugin-graylog "file:../../../../.cache/yarn/v6/npm-eslint-config-graylog-1.3.0-4228572c-36c3-45ec-a426-d6ad9abe0608-1738152635323/node_modules/eslint-plugin-graylog"
eslint-plugin-import "2.25.3"
eslint-plugin-jest "28.11.0"
eslint-plugin-jest-dom "5.5.0"
Expand Down Expand Up @@ -9008,15 +9008,15 @@ graphemer@^1.4.0:
"@tanstack/react-query" "4.36.1"
"@types/jquery" "3.5.32"
"@types/react" "18.3.13"
babel-preset-graylog "file:../../../../.cache/yarn/v6/npm-graylog-web-plugin-6.2.0-SNAPSHOT-3f535fa4-a2ab-40bb-a5d5-cab3a6d949aa-1738066234677/node_modules/babel-preset-graylog"
eslint-config-graylog "file:../../../../.cache/yarn/v6/npm-graylog-web-plugin-6.2.0-SNAPSHOT-3f535fa4-a2ab-40bb-a5d5-cab3a6d949aa-1738066234677/node_modules/eslint-config-graylog"
babel-preset-graylog "file:../../../../.cache/yarn/v6/npm-graylog-web-plugin-6.2.0-SNAPSHOT-05f95a4e-b158-4fcb-a1d1-2428ffee0811-1738152635034/node_modules/babel-preset-graylog"
eslint-config-graylog "file:../../../../.cache/yarn/v6/npm-graylog-web-plugin-6.2.0-SNAPSHOT-05f95a4e-b158-4fcb-a1d1-2428ffee0811-1738152635034/node_modules/eslint-config-graylog"
formik "2.4.6"
history "^5.3.0"
html-webpack-plugin "^5.5.0"
jest-preset-graylog "file:../../../../.cache/yarn/v6/npm-graylog-web-plugin-6.2.0-SNAPSHOT-3f535fa4-a2ab-40bb-a5d5-cab3a6d949aa-1738066234677/node_modules/jest-preset-graylog"
jest-preset-graylog "file:../../../../.cache/yarn/v6/npm-graylog-web-plugin-6.2.0-SNAPSHOT-05f95a4e-b158-4fcb-a1d1-2428ffee0811-1738152635034/node_modules/jest-preset-graylog"
jquery "3.7.1"
moment "2.30.1"
moment-timezone "0.5.46"
moment-timezone "0.5.47"
prop-types "15.8.1"
react "18.3.1"
react-dom "18.2.0"
Expand Down Expand Up @@ -11982,10 +11982,10 @@ moment-precise-range-plugin@^1.3.0:
resolved "https://registry.yarnpkg.com/moment-precise-range-plugin/-/moment-precise-range-plugin-1.3.0.tgz#60ac075fdfd14689f6d102af751d171a80b4ab60"
integrity sha1-YKwHX9/RRon20QKvdR0XGoC0q2A=

[email protected].46:
version "0.5.46"
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.46.tgz#a21aa6392b3c6b3ed916cd5e95858a28d893704a"
integrity sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw==
[email protected].47:
version "0.5.47"
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.47.tgz#d4d1a21b78372d914d6d69ae285454732a429749"
integrity sha512-UbNt/JAWS0m/NJOebR0QMRHBk0hu03r5dx9GK8Cs0AS3I81yDcOc9k+DytPItgVvBP7J6Mf6U2n3BPAacAV9oA==
dependencies:
moment "^2.29.4"

Expand Down

0 comments on commit 34b2b38

Please sign in to comment.