Skip to content

Commit

Permalink
Add session variable enable_compare_for_null to support compare null …
Browse files Browse the repository at this point in the history
…when use =

Signed-off-by: evenhuang <986025158@qq.com>
  • Loading branch information
even986025158 committed Sep 20, 2024
1 parent 3317f49 commit 00e2bb5
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
12 changes: 12 additions & 0 deletions fe/fe-core/src/main/java/com/starrocks/qe/SessionVariable.java
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ public class SessionVariable implements Serializable, Writable, Cloneable {
public static final String QUERY_CACHE_TYPE = "query_cache_type";
public static final String INTERACTIVE_TIMEOUT = "interactive_timeout";
public static final String WAIT_TIMEOUT = "wait_timeout";
public static final String ENABLE_COMPARE_FOR_NULL = "enable_compare_for_null";

public static final String CATALOG = "catalog";
public static final String NET_WRITE_TIMEOUT = "net_write_timeout";
Expand Down Expand Up @@ -1005,6 +1006,9 @@ public static MaterializedViewRewriteMode parse(String str) {
@VariableMgr.VarAttr(name = WAIT_TIMEOUT)
private int waitTimeout = 28800;

@VariableMgr.VarAttr(name = ENABLE_COMPARE_FOR_NULL)
private boolean enableCompareForNull = false;

// The number of seconds to wait for a block to be written to a connection before aborting the write
@VariableMgr.VarAttr(name = NET_WRITE_TIMEOUT)
private int netWriteTimeout = 60;
Expand Down Expand Up @@ -2610,6 +2614,14 @@ public int getWaitTimeoutS() {
return waitTimeout;
}

public boolean isEnableCompareForNull() {
return enableCompareForNull;
}

public void setEnableCompareForNull(boolean enableCompareForNull) {
this.enableCompareForNull = enableCompareForNull;
}

public long getSqlMode() {
return sqlMode;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6119,7 +6119,12 @@ public ParseNode visitComparison(StarRocksParser.ComparisonContext context) {
private static BinaryType getComparisonOperator(Token symbol) {
switch (symbol.getType()) {
case StarRocksParser.EQ:
return BinaryType.EQ;
if (ConnectContext.get() != null && ConnectContext.get().getSessionVariable() != null
&& ConnectContext.get().getSessionVariable().isEnableCompareForNull()) {
return BinaryType.EQ_FOR_NULL;
} else {
return BinaryType.EQ;
}
case StarRocksParser.NEQ:
return BinaryType.NE;
case StarRocksParser.LT:
Expand Down

0 comments on commit 00e2bb5

Please sign in to comment.