Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,12 @@ protected void toThrift(TExprNode msg) {
// Print QsPlan details
if (qsPlan != null) {
LOG.info("SearchPredicate.toThrift: QsPlan fieldBindings.size={}",
qsPlan.fieldBindings != null ? qsPlan.fieldBindings.size() : 0);
if (qsPlan.fieldBindings != null) {
for (int i = 0; i < qsPlan.fieldBindings.size(); i++) {
SearchDslParser.QsFieldBinding binding = qsPlan.fieldBindings.get(i);
qsPlan.getFieldBindings() != null ? qsPlan.getFieldBindings().size() : 0);
if (qsPlan.getFieldBindings() != null) {
for (int i = 0; i < qsPlan.getFieldBindings().size(); i++) {
SearchDslParser.QsFieldBinding binding = qsPlan.getFieldBindings().get(i);
LOG.info("SearchPredicate.toThrift: binding[{}] fieldName='{}', slotIndex={}",
i, binding.fieldName, binding.slotIndex);
i, binding.getFieldName(), binding.getSlotIndex());
}
}
}
Expand Down Expand Up @@ -142,14 +142,14 @@ public int hashCode() {
private TSearchParam buildThriftParam() {
TSearchParam param = new TSearchParam();
param.setOriginalDsl(dslString);
param.setRoot(convertQsNodeToThrift(qsPlan.root));
param.setRoot(convertQsNodeToThrift(qsPlan.getRoot()));

List<TSearchFieldBinding> bindings = new ArrayList<>();
for (int i = 0; i < qsPlan.fieldBindings.size(); i++) {
SearchDslParser.QsFieldBinding binding = qsPlan.fieldBindings.get(i);
for (int i = 0; i < qsPlan.getFieldBindings().size(); i++) {
SearchDslParser.QsFieldBinding binding = qsPlan.getFieldBindings().get(i);
TSearchFieldBinding thriftBinding = new TSearchFieldBinding();

String fieldPath = binding.fieldName;
String fieldPath = binding.getFieldName();
thriftBinding.setFieldName(fieldPath);

// Check if this is a variant subcolumn (contains dot)
Expand All @@ -176,9 +176,10 @@ private TSearchParam buildThriftParam() {
SlotRef slotRef = (SlotRef) this.children.get(i);
int actualSlotId = slotRef.getSlotId().asInt();
thriftBinding.setSlotIndex(actualSlotId);
LOG.info("buildThriftParam: binding field='{}', actual slotId={}", binding.fieldName, actualSlotId);
LOG.info("buildThriftParam: binding field='{}', actual slotId={}",
binding.getFieldName(), actualSlotId);
} else {
LOG.warn("buildThriftParam: No corresponding SlotRef for field '{}'", binding.fieldName);
LOG.warn("buildThriftParam: No corresponding SlotRef for field '{}'", binding.getFieldName());
thriftBinding.setSlotIndex(i); // fallback to position
}

Expand Down Expand Up @@ -230,10 +231,10 @@ private boolean isExplainVerboseContext() {

private List<String> buildDslAstExplainLines() {
List<String> lines = new ArrayList<>();
if (qsPlan == null || qsPlan.root == null) {
if (qsPlan == null || qsPlan.getRoot() == null) {
return lines;
}
TSearchClause rootClause = convertQsNodeToThrift(qsPlan.root);
TSearchClause rootClause = convertQsNodeToThrift(qsPlan.getRoot());
appendClauseExplain(rootClause, lines, 0);
return lines;
}
Expand All @@ -258,11 +259,11 @@ private void appendClauseExplain(TSearchClause clause, List<String> lines, int d

private List<String> buildFieldBindingExplainLines() {
List<String> lines = new ArrayList<>();
if (qsPlan == null || qsPlan.fieldBindings == null || qsPlan.fieldBindings.isEmpty()) {
if (qsPlan == null || qsPlan.getFieldBindings() == null || qsPlan.getFieldBindings().isEmpty()) {
return lines;
}
IntStream.range(0, qsPlan.fieldBindings.size()).forEach(index -> {
SearchDslParser.QsFieldBinding binding = qsPlan.fieldBindings.get(index);
IntStream.range(0, qsPlan.getFieldBindings().size()).forEach(index -> {
SearchDslParser.QsFieldBinding binding = qsPlan.getFieldBindings().get(index);
String slotDesc = "<unbound>";
if (index < children.size() && children.get(index) instanceof SlotRef) {
SlotRef slotRef = (SlotRef) children.get(index);
Expand All @@ -272,7 +273,7 @@ private List<String> buildFieldBindingExplainLines() {
} else if (index < children.size()) {
slotDesc = children.get(index).toSqlWithoutTbl();
}
lines.add(binding.fieldName + " -> " + slotDesc);
lines.add(binding.getFieldName() + " -> " + slotDesc);
});
return lines;
}
Expand Down Expand Up @@ -304,29 +305,29 @@ private TSearchClause convertQsNodeToThrift(
TSearchClause clause = new TSearchClause();

// Convert clause type
clause.setClauseType(node.type.name());
clause.setClauseType(node.getType().name());

if (node.field != null) {
clause.setFieldName(node.field);
if (node.getField() != null) {
clause.setFieldName(node.getField());
}

if (node.value != null) {
clause.setValue(node.value);
if (node.getValue() != null) {
clause.setValue(node.getValue());
}

// Convert occur type for Lucene-style boolean queries
if (node.occur != null) {
clause.setOccur(convertQsOccurToThrift(node.occur));
if (node.getOccur() != null) {
clause.setOccur(convertQsOccurToThrift(node.getOccur()));
}

// Convert minimum_should_match for OCCUR_BOOLEAN
if (node.minimumShouldMatch != null) {
clause.setMinimumShouldMatch(node.minimumShouldMatch);
if (node.getMinimumShouldMatch() != null) {
clause.setMinimumShouldMatch(node.getMinimumShouldMatch());
}

if (node.children != null && !node.children.isEmpty()) {
if (node.getChildren() != null && !node.getChildren().isEmpty()) {
List<TSearchClause> childClauses = new ArrayList<>();
for (SearchDslParser.QsNode child : node.children) {
for (SearchDslParser.QsNode child : node.getChildren()) {
childClauses.add(convertQsNodeToThrift(child));
}
clause.setChildren(childClauses);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ private Expression rewriteSearch(Search search, LogicalOlapScan scan) {
try {
// Parse DSL to get field bindings
SearchDslParser.QsPlan qsPlan = search.getQsPlan();
if (qsPlan == null || qsPlan.fieldBindings == null || qsPlan.fieldBindings.isEmpty()) {
if (qsPlan == null || qsPlan.getFieldBindings() == null || qsPlan.getFieldBindings().isEmpty()) {
LOG.warn("Search function has no field bindings: {}", search.getDslString());
return search;
}
Expand All @@ -102,8 +102,8 @@ private Expression rewriteSearch(Search search, LogicalOlapScan scan) {

// Create slot reference children from field bindings
List<Expression> slotChildren = new ArrayList<>();
for (SearchDslParser.QsFieldBinding binding : qsPlan.fieldBindings) {
String originalFieldName = binding.fieldName;
for (SearchDslParser.QsFieldBinding binding : qsPlan.getFieldBindings()) {
String originalFieldName = binding.getFieldName();
Expression childExpr;
String normalizedFieldName;

Expand Down Expand Up @@ -151,14 +151,14 @@ private Expression rewriteSearch(Search search, LogicalOlapScan scan) {
}

normalizedFields.put(originalFieldName, normalizedFieldName);
binding.fieldName = normalizedFieldName;
binding.setFieldName(normalizedFieldName);
slotChildren.add(childExpr);
}

LOG.info("Rewriting search function: dsl='{}' with {} slot children",
search.getDslString(), slotChildren.size());

normalizePlanFields(qsPlan.root, normalizedFields);
normalizePlanFields(qsPlan.getRoot(), normalizedFields);

// Create SearchExpression with slot children
return new SearchExpression(search.getDslString(), qsPlan, slotChildren);
Expand All @@ -182,16 +182,16 @@ private void normalizePlanFields(SearchDslParser.QsNode node, Map<String, String
if (node == null) {
return;
}
if (node.field != null) {
if (node.getField() != null) {
for (Map.Entry<String, String> entry : normalized.entrySet()) {
if (entry.getKey().equalsIgnoreCase(node.field)) {
node.field = entry.getValue();
if (entry.getKey().equalsIgnoreCase(node.getField())) {
node.setField(entry.getValue());
break;
}
}
}
if (node.children != null) {
for (SearchDslParser.QsNode child : node.children) {
if (node.getChildren() != null) {
for (SearchDslParser.QsNode child : node.getChildren()) {
normalizePlanFields(child, normalized);
}
}
Expand Down
Loading
Loading