diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/InformationFunction.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/InformationFunction.java index 0550abe6e0343d..d1f2fc77620162 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/InformationFunction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/InformationFunction.java @@ -18,6 +18,7 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.Type; +import org.apache.doris.cluster.ClusterNamespace; import org.apache.doris.common.AnalysisException; import org.apache.doris.qe.ConnectContext; import org.apache.doris.thrift.TExprNode; @@ -41,6 +42,10 @@ protected InformationFunction(InformationFunction other) { strValue = other.strValue; } + public String getStrValue() { + return strValue; + } + @Override public Expr clone() { return new InformationFunction(this); @@ -50,7 +55,7 @@ public Expr clone() { protected void analyzeImpl(Analyzer analyzer) throws AnalysisException { if (funcType.equalsIgnoreCase("DATABASE") || funcType.equalsIgnoreCase("SCHEMA")) { type = Type.VARCHAR; - strValue = analyzer.getDefaultDb(); + strValue = ClusterNamespace.getNameFromFullName(analyzer.getDefaultDb()); } else if (funcType.equalsIgnoreCase("USER")) { type = Type.VARCHAR; strValue = ConnectContext.get().getUserIdentity().toString(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/mysql/MysqlProto.java b/fe/fe-core/src/main/java/org/apache/doris/mysql/MysqlProto.java index 11b67d63ad28da..18401cc2e89514 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/mysql/MysqlProto.java +++ b/fe/fe-core/src/main/java/org/apache/doris/mysql/MysqlProto.java @@ -104,6 +104,7 @@ private static boolean authenticate(ConnectContext context, byte[] scramble, byt context.setCurrentUserIdentity(currentUserIdentity.get(0)); context.setQualifiedUser(qualifiedUser); + context.setRemoteIP(remoteIp); return true; } diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java index d74ba6c7a722c1..7572bef88b369d 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/planner/QueryPlanTest.java @@ -17,10 +17,12 @@ package org.apache.doris.planner; +import org.apache.doris.analysis.Analyzer; import org.apache.doris.analysis.CreateDbStmt; import org.apache.doris.analysis.CreateTableStmt; import org.apache.doris.analysis.DropDbStmt; import org.apache.doris.analysis.Expr; +import org.apache.doris.analysis.InformationFunction; import org.apache.doris.analysis.LoadStmt; import org.apache.doris.analysis.SelectStmt; import org.apache.doris.analysis.ShowCreateDbStmt; @@ -48,8 +50,6 @@ import org.junit.BeforeClass; import org.junit.Test; -import com.google.common.collect.Lists; - import java.io.File; import java.util.List; import java.util.UUID; @@ -989,7 +989,6 @@ public void testPreferBroadcastJoin() throws Exception { explainString = UtFrameUtils.getSQLPlanOrErrorMsg(connectContext, queryStr); Assert.assertTrue(explainString.contains("INNER JOIN (PARTITIONED)")); - connectContext.getSessionVariable().setPreferJoinMethod("broadcast"); explainString = UtFrameUtils.getSQLPlanOrErrorMsg(connectContext, queryStr); Assert.assertTrue(explainString.contains("INNER JOIN (BROADCAST)")); @@ -1021,4 +1020,23 @@ public void testEmptyNode() throws Exception { Assert.assertFalse(explainString.contains(denseRank)); } } + + @Test + public void testInformationFunctions() throws Exception { + connectContext.setDatabase("default_cluster:test"); + Analyzer analyzer = new Analyzer(connectContext.getCatalog(), connectContext); + InformationFunction infoFunc = new InformationFunction("database"); + infoFunc.analyze(analyzer); + Assert.assertEquals("test", infoFunc.getStrValue()); + + infoFunc = new InformationFunction("user"); + infoFunc.analyze(analyzer); + Assert.assertEquals("'root'@'127.0.0.1'", infoFunc.getStrValue()); + + infoFunc = new InformationFunction("current_user"); + infoFunc.analyze(analyzer); + Assert.assertEquals("'root'@'%'", infoFunc.getStrValue()); + } } + + diff --git a/fe/fe-core/src/test/java/org/apache/doris/utframe/UtFrameUtils.java b/fe/fe-core/src/test/java/org/apache/doris/utframe/UtFrameUtils.java index c68adff3e457b9..acee9405001941 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/utframe/UtFrameUtils.java +++ b/fe/fe-core/src/test/java/org/apache/doris/utframe/UtFrameUtils.java @@ -17,7 +17,6 @@ package org.apache.doris.utframe; -import com.google.common.collect.ImmutableMap; import org.apache.doris.analysis.Analyzer; import org.apache.doris.analysis.SqlParser; import org.apache.doris.analysis.SqlScanner; @@ -28,7 +27,6 @@ import org.apache.doris.common.AnalysisException; import org.apache.doris.common.Config; import org.apache.doris.common.DdlException; -import org.apache.doris.common.Pair; import org.apache.doris.common.util.SqlParserUtils; import org.apache.doris.mysql.privilege.PaloAuth; import org.apache.doris.planner.Planner; @@ -46,19 +44,18 @@ import org.apache.doris.utframe.MockedFrontend.FeStartException; import org.apache.doris.utframe.MockedFrontend.NotInitException; +import org.apache.commons.io.FileUtils; + import com.google.common.base.Strings; -import com.google.common.collect.Lists; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; -import org.apache.commons.io.FileUtils; - import java.io.File; import java.io.IOException; import java.io.StringReader; import java.net.ServerSocket; import java.nio.channels.SocketChannel; import java.nio.file.Files; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -72,6 +69,7 @@ public static ConnectContext createDefaultCtx() throws IOException { ctx.setCluster(SystemInfoService.DEFAULT_CLUSTER); ctx.setCurrentUserIdentity(UserIdentity.ROOT); ctx.setQualifiedUser(PaloAuth.ROOT_USER); + ctx.setRemoteIP("127.0.0.1"); ctx.setCatalog(Catalog.getCurrentCatalog()); ctx.setThreadLocalInfo(); return ctx; @@ -223,3 +221,4 @@ public static String getSQLPlanOrErrorMsg(ConnectContext ctx, String queryStr) t } } } +