From 6af768a5b9f0c0480156265a02b7d531402e5506 Mon Sep 17 00:00:00 2001 From: zclllyybb Date: Thu, 11 Jul 2024 14:34:41 +0800 Subject: [PATCH] [Fix](timezone) make TimeUtils formatter use correct time_zone (#37465) All timestamp/datetime parsing in Doris is controlled by the session variable `time_zone`. Apply it also to interface of `TimeUtils` in FE. --- .../org/apache/doris/analysis/Analyzer.java | 2 +- .../apache/doris/backup/BackupHandler.java | 3 +- .../org/apache/doris/backup/BackupJob.java | 3 +- .../org/apache/doris/backup/Repository.java | 2 +- .../common/util/DynamicPartitionUtil.java | 8 +- .../apache/doris/common/util/TimeUtils.java | 126 +++++++++--------- .../doris/load/StreamLoadRecordMgr.java | 4 +- .../doris/load/sync/canal/CanalUtils.java | 20 +-- .../rules/FoldConstantRuleOnBE.java | 2 +- .../doris/planner/StreamLoadPlanner.java | 2 +- .../apache/doris/policy/StoragePolicy.java | 8 +- .../java/org/apache/doris/qe/Coordinator.java | 4 +- .../org/apache/doris/qe/ShowExecutor.java | 4 +- .../doris/rewrite/FoldConstantsRule.java | 2 +- .../AdminCancelRebalanceDiskStmtTest.java | 2 +- .../analysis/AdminRebalanceDiskStmtTest.java | 2 +- .../analysis/AlterCatalogNameStmtTest.java | 2 +- .../analysis/AlterCatalogPropsStmtTest.java | 2 +- .../analysis/AlterSqlBlockRuleStmtTest.java | 2 +- .../org/apache/doris/analysis/BackupTest.java | 3 + .../doris/analysis/CreateCatalogStmtTest.java | 2 +- .../doris/analysis/CreateDbStmtTest.java | 2 +- .../analysis/CreateRoutineLoadStmtTest.java | 6 + .../analysis/CreateSqlBlockRuleStmtTest.java | 2 +- .../doris/analysis/CreateTableStmtTest.java | 5 +- .../apache/doris/analysis/DeleteStmtTest.java | 2 +- .../doris/analysis/DropCatalogStmtTest.java | 2 +- .../apache/doris/analysis/DropDbStmtTest.java | 2 +- .../doris/analysis/DropTableStmtTest.java | 6 +- .../doris/analysis/DropUserStmtTest.java | 2 +- .../apache/doris/analysis/LoadStmtTest.java | 12 +- .../doris/analysis/SetOperationStmtTest.java | 2 +- .../apache/doris/analysis/SetPassVarTest.java | 2 +- .../apache/doris/analysis/SetStmtTest.java | 2 +- .../analysis/SetUserPropertyStmtTest.java | 2 +- .../org/apache/doris/analysis/SetVarTest.java | 2 +- .../doris/analysis/ShowDataTypesStmtTest.java | 2 +- .../doris/analysis/ShowDbIdStmtTest.java | 2 +- .../analysis/ShowEncryptKeysStmtTest.java | 4 +- .../doris/analysis/ShowFunctionsStmtTest.java | 4 +- .../doris/analysis/ShowIndexStmtTest.java | 2 +- .../analysis/ShowPartitionIdStmtTest.java | 2 +- .../analysis/ShowTableCreationStmtTest.java | 2 +- .../doris/analysis/ShowTableIdStmtTest.java | 2 +- .../doris/analysis/ShowTableStmtTest.java | 2 +- .../analysis/ShowUserPropertyStmtTest.java | 2 +- .../apache/doris/analysis/UseStmtTest.java | 2 +- .../routineload/KafkaRoutineLoadJobTest.java | 3 + .../doris/mysql/privilege/MockedAuth.java | 5 + .../jobs/cascades/DeriveStatsJobTest.java | 3 + .../planner/RuntimeFilterGeneratorTest.java | 8 ++ .../org/apache/doris/qe/StmtExecutorTest.java | 17 ++- 52 files changed, 183 insertions(+), 135 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java index ea6ed101242f7b3..18a4fa685078e35 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/Analyzer.java @@ -648,7 +648,7 @@ public static TQueryGlobals createQueryGlobals() { Calendar currentDate = Calendar.getInstance(); LocalDateTime localDateTime = LocalDateTime.ofInstant(currentDate.toInstant(), currentDate.getTimeZone().toZoneId()); - String nowStr = localDateTime.format(TimeUtils.DATETIME_NS_FORMAT); + String nowStr = localDateTime.format(TimeUtils.getDatetimeNsFormatWithTimeZone()); queryGlobals.setNowString(nowStr); queryGlobals.setNanoSeconds(LocalDateTime.now().getNano()); return queryGlobals; diff --git a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupHandler.java b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupHandler.java index 4abcc4e7217a96a..ea7cb3d610db15e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupHandler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupHandler.java @@ -446,7 +446,8 @@ private void restore(Repository repository, Database db, RestoreStmt stmt) throw try { BackupMeta backupMeta = BackupMeta.read(dataInputStream); String backupTimestamp = - TimeUtils.longToTimeString(jobInfo.getBackupTime(), TimeUtils.DATETIME_FORMAT_WITH_HYPHEN); + TimeUtils.longToTimeString(jobInfo.getBackupTime(), + TimeUtils.getDatetimeFormatWithHyphenWithTimeZone()); restoreJob = new RestoreJob(stmt.getLabel(), backupTimestamp, db.getId(), db.getFullName(), jobInfo, stmt.allowLoad(), stmt.getReplicaAlloc(), stmt.getTimeoutMs(), stmt.getMetaVersion(), stmt.reserveReplica(), diff --git a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJob.java b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJob.java index b6f031ab7d42ebe..4f356bf78e68a69 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/backup/BackupJob.java @@ -666,7 +666,8 @@ private void waitingAllUploadingFinished() { } private void saveMetaInfo() { - String createTimeStr = TimeUtils.longToTimeString(createTime, TimeUtils.DATETIME_FORMAT_WITH_HYPHEN); + String createTimeStr = TimeUtils.longToTimeString(createTime, + TimeUtils.getDatetimeFormatWithHyphenWithTimeZone()); // local job dir: backup/repo__repo_id/label__createtime/ // Add repo_id to isolate jobs from different repos. localJobDirPath = Paths.get(BackupHandler.BACKUP_ROOT_DIR.toString(), diff --git a/fe/fe-core/src/main/java/org/apache/doris/backup/Repository.java b/fe/fe-core/src/main/java/org/apache/doris/backup/Repository.java index f58ffa63a519d95..89c2301309e9aff 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/backup/Repository.java +++ b/fe/fe-core/src/main/java/org/apache/doris/backup/Repository.java @@ -142,7 +142,7 @@ private static String jobInfoFileNameWithTimestamp(long createTime) { return PREFIX_JOB_INFO; } else { return PREFIX_JOB_INFO - + TimeUtils.longToTimeString(createTime, TimeUtils.DATETIME_FORMAT_WITH_HYPHEN); + + TimeUtils.longToTimeString(createTime, TimeUtils.getDatetimeFormatWithHyphenWithTimeZone()); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/DynamicPartitionUtil.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/DynamicPartitionUtil.java index 22a77768b6495b2..bf00a1811774238 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/util/DynamicPartitionUtil.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/DynamicPartitionUtil.java @@ -400,9 +400,9 @@ private static void checkStorageMedium(String storageMedium) throws DdlException private static DateTimeFormatter getDateTimeFormatter(String timeUnit) { if (timeUnit.equalsIgnoreCase(TimeUnit.HOUR.toString())) { - return TimeUtils.DATETIME_FORMAT; + return TimeUtils.getDatetimeFormatWithTimeZone(); } else { - return TimeUtils.DATE_FORMAT; + return TimeUtils.getDateFormatWithTimeZone(); } } @@ -806,9 +806,9 @@ public static String getHistoryPartitionRangeString(DynamicPartitionProperty dyn private static LocalDateTime getDateTimeByTimeUnit(String time, String timeUnit) { if (timeUnit.equalsIgnoreCase(TimeUnit.HOUR.toString())) { - return LocalDateTime.parse(time, TimeUtils.DATETIME_FORMAT); + return LocalDateTime.parse(time, TimeUtils.getDatetimeFormatWithTimeZone()); } else { - return LocalDate.from(TimeUtils.DATE_FORMAT.parse(time)).atStartOfDay(); + return LocalDate.from(TimeUtils.getDateFormatWithTimeZone().parse(time)).atStartOfDay(); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/TimeUtils.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/TimeUtils.java index 3f570a5f3836ae5..00ad77229eda73e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/util/TimeUtils.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/TimeUtils.java @@ -29,7 +29,6 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -47,6 +46,7 @@ import java.util.Date; import java.util.Map; import java.util.TimeZone; +import java.util.TreeMap; import java.util.function.Function; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -55,13 +55,7 @@ public class TimeUtils { public static final String UTC_TIME_ZONE = "Europe/London"; // This is just a Country to represent UTC offset +00:00 public static final String DEFAULT_TIME_ZONE = "Asia/Shanghai"; - public static final ZoneId TIME_ZONE; public static final ImmutableMap timeZoneAliasMap; - // NOTICE: Date formats are not synchronized. - // it must be used as synchronized externally. - public static final DateTimeFormatter DATE_FORMAT; - public static final DateTimeFormatter DATETIME_FORMAT; - public static final DateTimeFormatter TIME_FORMAT; public static final Pattern DATETIME_FORMAT_REG = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?" + "((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?" @@ -70,25 +64,49 @@ public class TimeUtils { + "[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?" + "((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))" + "(\\s(((0?[0-9])|([1][0-9])|([2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$"); - public static final DateTimeFormatter DATETIME_MS_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS") - .withZone(ZoneId.systemDefault()); - public static final DateTimeFormatter DATETIME_NS_FORMAT = DateTimeFormatter.ofPattern( - "yyyy-MM-dd HH:mm:ss.SSSSSSSSS") - .withZone(ZoneId.systemDefault()); - public static final DateTimeFormatter DATETIME_FORMAT_WITH_HYPHEN = DateTimeFormatter.ofPattern( - "yyyy-MM-dd-HH-mm-ss") - .withZone(ZoneId.systemDefault()); + + // these formatters must be visited by getter to make sure they have right + // timezone. + // NOTICE: Date formats are not synchronized. + // it must be used as synchronized externally. + private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + private static final DateTimeFormatter DATETIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + private static final DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("HH"); + private static final DateTimeFormatter DATETIME_MS_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); + private static final DateTimeFormatter DATETIME_NS_FORMAT = DateTimeFormatter.ofPattern( + "yyyy-MM-dd HH:mm:ss.SSSSSSSSS"); + private static final DateTimeFormatter DATETIME_FORMAT_WITH_HYPHEN = DateTimeFormatter.ofPattern( + "yyyy-MM-dd-HH-mm-ss"); + + public static DateTimeFormatter getDateFormatWithTimeZone() { + return DATE_FORMAT.withZone(getDorisZoneId()); + } + + public static DateTimeFormatter getDatetimeFormatWithTimeZone() { + return DATETIME_FORMAT.withZone(getDorisZoneId()); + } + + public static DateTimeFormatter getTimeFormatWithTimeZone() { + return TIME_FORMAT.withZone(getDorisZoneId()); + } + + public static DateTimeFormatter getDatetimeMsFormatWithTimeZone() { + return DATETIME_MS_FORMAT.withZone(getDorisZoneId()); + } + + public static DateTimeFormatter getDatetimeNsFormatWithTimeZone() { + return DATETIME_NS_FORMAT.withZone(getDorisZoneId()); + } + + public static DateTimeFormatter getDatetimeFormatWithHyphenWithTimeZone() { + return DATETIME_FORMAT_WITH_HYPHEN.withZone(getDorisZoneId()); + } + private static final Logger LOG = LogManager.getLogger(TimeUtils.class); private static final Pattern TIMEZONE_OFFSET_FORMAT_REG = Pattern.compile("^[+-]?\\d{1,2}:\\d{2}$"); - public static Date MIN_DATE = null; - public static Date MAX_DATE = null; - public static Date MIN_DATETIME = null; - public static Date MAX_DATETIME = null; static { - TIME_ZONE = ZoneId.of("UTC+8"); - - Map timeZoneMap = Maps.newHashMap(); + Map timeZoneMap = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); timeZoneMap.putAll(ZoneId.SHORT_IDS); // set CST to +08:00 instead of America/Chicago @@ -98,32 +116,6 @@ public class TimeUtils { timeZoneMap.put("GMT", UTC_TIME_ZONE); timeZoneAliasMap = ImmutableMap.copyOf(timeZoneMap); - - DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd"); - DATE_FORMAT.withZone(TIME_ZONE); - - DATETIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - DATETIME_FORMAT.withZone(TIME_ZONE); - - TIME_FORMAT = DateTimeFormatter.ofPattern("HH"); - TIME_FORMAT.withZone(TIME_ZONE); - - try { - - MIN_DATE = Date.from( - LocalDate.parse("0001-01-01", DATE_FORMAT).atStartOfDay().atZone(TIME_ZONE).toInstant()); - MAX_DATE = Date.from( - LocalDate.parse("9999-12-31", DATE_FORMAT).atStartOfDay().atZone(TIME_ZONE).toInstant()); - - MIN_DATETIME = Date.from( - LocalDateTime.parse("0001-01-01 00:00:00", DATETIME_FORMAT).atZone(TIME_ZONE).toInstant()); - MAX_DATETIME = Date.from( - LocalDateTime.parse("9999-12-31 23:59:59", DATETIME_FORMAT).atZone(TIME_ZONE).toInstant()); - - } catch (DateTimeParseException e) { - LOG.error("invalid date format", e); - System.exit(-1); - } } public static long getStartTimeMs() { @@ -135,7 +127,7 @@ public static long getElapsedTimeMs(long startTime) { } public static String getCurrentFormatTime() { - return LocalDateTime.now().format(DATETIME_FORMAT); + return LocalDateTime.now().format(getDatetimeFormatWithTimeZone()); } public static TimeZone getTimeZone() { @@ -148,9 +140,13 @@ public static TimeZone getTimeZone() { return TimeZone.getTimeZone(ZoneId.of(timezone, timeZoneAliasMap)); } + public static ZoneId getDorisZoneId() { + return getTimeZone().toZoneId(); + } + // return the time zone of current system public static TimeZone getSystemTimeZone() { - return TimeZone.getTimeZone(ZoneId.of(ZoneId.systemDefault().getId(), timeZoneAliasMap)); + return TimeZone.getTimeZone(ZoneId.of(TimeZone.getDefault().getID(), timeZoneAliasMap)); } // get time zone of given zone name, or return system time zone if name is null. @@ -165,7 +161,7 @@ public static String longToTimeString(long timeStamp, DateTimeFormatter dateForm if (timeStamp <= 0L) { return FeConstants.null_string; } - return dateFormat.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(timeStamp), ZoneId.systemDefault())); + return dateFormat.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(timeStamp), getDorisZoneId())); } public static String longToTimeStringWithFormat(long timeStamp, DateTimeFormatter datetimeFormatTimeZone) { @@ -174,12 +170,12 @@ public static String longToTimeStringWithFormat(long timeStamp, DateTimeFormatte return longToTimeString(timeStamp, datetimeFormatTimeZone); } - public static String longToTimeString(long timeStamp) { - return longToTimeStringWithFormat(timeStamp, DATETIME_FORMAT); + public static String longToTimeString(Long timeStamp) { + return longToTimeStringWithFormat(timeStamp, getDatetimeFormatWithTimeZone()); } - public static String longToTimeStringWithms(long timeStamp) { - return longToTimeStringWithFormat(timeStamp, DATETIME_MS_FORMAT); + public static String longToTimeStringWithms(Long timeStamp) { + return longToTimeStringWithFormat(timeStamp, getDatetimeMsFormatWithTimeZone()); } public static Date getHourAsDate(String hour) { @@ -189,7 +185,8 @@ public static Date getHourAsDate(String hour) { } try { return Date.from( - LocalTime.parse(fullHour, TIME_FORMAT).atDate(LocalDate.now()).atZone(TIME_ZONE).toInstant()); + LocalTime.parse(fullHour, getTimeFormatWithTimeZone()).atDate(LocalDate.now()) + .atZone(getDorisZoneId()).toInstant()); } catch (DateTimeParseException e) { LOG.warn("invalid time format: {}", fullHour); return null; @@ -206,13 +203,15 @@ public static Date parseDate(String dateStr, PrimitiveType type) throws Analysis if (type == PrimitiveType.DATE) { ParsePosition pos = new ParsePosition(0); date = Date.from( - LocalDate.from(DATE_FORMAT.parse(dateStr, pos)).atStartOfDay().atZone(TIME_ZONE).toInstant()); + LocalDate.from(getDateFormatWithTimeZone().parse(dateStr, pos)).atStartOfDay() + .atZone(getDorisZoneId()).toInstant()); if (pos.getIndex() != dateStr.length() || date == null) { throw new AnalysisException("Invalid date string: " + dateStr); } } else if (type == PrimitiveType.DATETIME) { try { - date = Date.from(LocalDateTime.parse(dateStr, DATETIME_FORMAT).atZone(TIME_ZONE).toInstant()); + date = Date.from(LocalDateTime.parse(dateStr, getDatetimeFormatWithTimeZone()) + .atZone(getDorisZoneId()).toInstant()); } catch (DateTimeParseException e) { throw new AnalysisException("Invalid date string: " + dateStr); } @@ -229,9 +228,11 @@ public static Date parseDate(String dateStr, Type type) throws AnalysisException public static String format(Date date, PrimitiveType type) { if (type == PrimitiveType.DATE) { - return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).format(DATE_FORMAT); + return LocalDateTime.ofInstant(date.toInstant(), getDorisZoneId()) + .format(getDateFormatWithTimeZone()); } else if (type == PrimitiveType.DATETIME) { - return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).format(DATETIME_FORMAT); + return LocalDateTime.ofInstant(date.toInstant(), getDorisZoneId()) + .format(getDatetimeFormatWithTimeZone()); } else { return "INVALID"; } @@ -244,7 +245,8 @@ public static String format(Date date, Type type) { public static long timeStringToLong(String timeStr) { Date d; try { - d = Date.from(LocalDateTime.parse(timeStr, DATETIME_FORMAT).atZone(TIME_ZONE).toInstant()); + d = Date.from(LocalDateTime.parse(timeStr, getDatetimeFormatWithTimeZone()) + .atZone(getDorisZoneId()).toInstant()); } catch (DateTimeParseException e) { return -1; } @@ -252,7 +254,7 @@ public static long timeStringToLong(String timeStr) { } public static long timeStringToLong(String timeStr, TimeZone timeZone) { - DateTimeFormatter dateFormatTimeZone = DATETIME_FORMAT; + DateTimeFormatter dateFormatTimeZone = getDatetimeFormatWithTimeZone(); dateFormatTimeZone.withZone(timeZone.toZoneId()); LocalDateTime d; try { diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/StreamLoadRecordMgr.java b/fe/fe-core/src/main/java/org/apache/doris/load/StreamLoadRecordMgr.java index 2848311f895cf4e..5b58425dfa03a03 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/StreamLoadRecordMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/StreamLoadRecordMgr.java @@ -249,9 +249,9 @@ protected void runAfterCatalogReady() { for (Map.Entry entry : streamLoadRecordBatch.entrySet()) { TStreamLoadRecord streamLoadItem = entry.getValue(); String startTime = TimeUtils.longToTimeString(streamLoadItem.getStartTime(), - TimeUtils.DATETIME_MS_FORMAT); + TimeUtils.getDatetimeMsFormatWithTimeZone()); String finishTime = TimeUtils.longToTimeString(streamLoadItem.getFinishTime(), - TimeUtils.DATETIME_MS_FORMAT); + TimeUtils.getDatetimeMsFormatWithTimeZone()); if (LOG.isDebugEnabled()) { LOG.debug("receive stream load record info from backend: {}." + " label: {}, db: {}, tbl: {}, user: {}, user_ip: {}," diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/sync/canal/CanalUtils.java b/fe/fe-core/src/main/java/org/apache/doris/load/sync/canal/CanalUtils.java index f4e2818aa036492..4c5706e29f6650c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/sync/canal/CanalUtils.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/sync/canal/CanalUtils.java @@ -69,7 +69,7 @@ public static void printSummary(Events dataEven String startPosition = buildPositionForDump(entries.get(0)); String endPosition = buildPositionForDump(entries.get(entries.size() - 1)); logger.info(context_format, dataEvents.getId(), entries.size(), dataEvents.getMemSize(), - TimeUtils.DATETIME_FORMAT.format(LocalDateTime.now()), startPosition, endPosition); + TimeUtils.getDatetimeFormatWithTimeZone().format(LocalDateTime.now()), startPosition, endPosition); } public static void printSummary(Message message, int size, long memsize) { @@ -80,7 +80,7 @@ public static void printSummary(Message message, int size, long memsize) { String startPosition = buildPositionForDump(message.getEntries().get(0)); String endPosition = buildPositionForDump(message.getEntries().get(message.getEntries().size() - 1)); logger.info(context_format, message.getId(), size, memsize, - TimeUtils.DATETIME_FORMAT.format(LocalDateTime.now()), startPosition, endPosition); + TimeUtils.getDatetimeFormatWithTimeZone().format(LocalDateTime.now()), startPosition, endPosition); } public static String buildPositionForDump(CanalEntry.Entry entry) { @@ -94,7 +94,7 @@ public static String buildPositionForDump(CanalEntry.Entry entry) { .append(":") .append(header.getExecuteTime()) .append("(") - .append(TimeUtils.DATETIME_FORMAT.format(date)) + .append(TimeUtils.getDatetimeFormatWithTimeZone().format(date)) .append(")"); if (StringUtils.isNotEmpty(entry.getHeader().getGtid())) { sb.append(" gtid(").append(entry.getHeader().getGtid()) @@ -120,8 +120,8 @@ public static void printRow(CanalEntry.RowChange rowChange, CanalEntry.Header he logger.info(row_format, header.getLogfileName(), String.valueOf(header.getLogfileOffset()), header.getSchemaName(), header.getTableName(), eventType, - String.valueOf(header.getExecuteTime()), TimeUtils.DATETIME_FORMAT.format(date), - header.getGtid(), String.valueOf(delayTime)); + String.valueOf(header.getExecuteTime()), TimeUtils.getDatetimeFormatWithTimeZone().format(date), + header.getGtid(), String.valueOf(delayTime)); if (eventType == CanalEntry.EventType.QUERY || rowChange.getIsDdl()) { logger.info(" sql ----> " + rowChange.getSql() + SEP); return; @@ -197,8 +197,9 @@ public static void transactionBegin(CanalEntry.Entry entry) { // print transaction begin info, thread ID, time consumption logger.info(transaction_format, entry.getHeader().getLogfileName(), String.valueOf(entry.getHeader().getLogfileOffset()), - String.valueOf(entry.getHeader().getExecuteTime()), TimeUtils.DATETIME_FORMAT.format(date), - entry.getHeader().getGtid(), String.valueOf(delayTime)); + String.valueOf(entry.getHeader().getExecuteTime()), + TimeUtils.getDatetimeFormatWithTimeZone().format(date), + entry.getHeader().getGtid(), String.valueOf(delayTime)); logger.info(" BEGIN ----> Thread id: {}", begin.getThreadId()); printXAInfo(begin.getPropsList()); } @@ -219,8 +220,9 @@ public static void transactionEnd(CanalEntry.Entry entry) { printXAInfo(end.getPropsList()); logger.info(transaction_format, entry.getHeader().getLogfileName(), String.valueOf(entry.getHeader().getLogfileOffset()), - String.valueOf(entry.getHeader().getExecuteTime()), TimeUtils.DATETIME_FORMAT.format(date), - entry.getHeader().getGtid(), String.valueOf(delayTime)); + String.valueOf(entry.getHeader().getExecuteTime()), + TimeUtils.getDatetimeFormatWithTimeZone().format(date), + entry.getHeader().getGtid(), String.valueOf(delayTime)); } public static boolean isDML(CanalEntry.EventType eventType) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java index 89955dc4950e623..1739c147d8678d0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java @@ -164,7 +164,7 @@ private Map evalOnBE(Map> paramMa TNetworkAddress brpcAddress = new TNetworkAddress(be.getHost(), be.getBrpcPort()); TQueryGlobals queryGlobals = new TQueryGlobals(); - queryGlobals.setNowString(TimeUtils.DATETIME_FORMAT.format(LocalDateTime.now())); + queryGlobals.setNowString(TimeUtils.getDatetimeFormatWithTimeZone().format(LocalDateTime.now())); queryGlobals.setTimestampMs(System.currentTimeMillis()); queryGlobals.setTimeZone(TimeUtils.DEFAULT_TIME_ZONE); if (context.getSessionVariable().getTimeZone().equals("CST")) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/StreamLoadPlanner.java b/fe/fe-core/src/main/java/org/apache/doris/planner/StreamLoadPlanner.java index 26c0f1fae659044..ae53aa68d738413 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/StreamLoadPlanner.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/StreamLoadPlanner.java @@ -316,7 +316,7 @@ public TExecPlanFragmentParams plan(TUniqueId loadId, int fragmentInstanceIdInde params.setQueryOptions(queryOptions); TQueryGlobals queryGlobals = new TQueryGlobals(); - queryGlobals.setNowString(TimeUtils.DATETIME_FORMAT.format(LocalDateTime.now())); + queryGlobals.setNowString(TimeUtils.getDatetimeFormatWithTimeZone().format(LocalDateTime.now())); queryGlobals.setTimestampMs(System.currentTimeMillis()); queryGlobals.setTimeZone(taskInfo.getTimezone()); queryGlobals.setLoadZeroTolerance(taskInfo.getMaxFilterRatio() <= 0.0); diff --git a/fe/fe-core/src/main/java/org/apache/doris/policy/StoragePolicy.java b/fe/fe-core/src/main/java/org/apache/doris/policy/StoragePolicy.java index 4f1cbd96b7d5778..e18495c50d0fd54 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/policy/StoragePolicy.java +++ b/fe/fe-core/src/main/java/org/apache/doris/policy/StoragePolicy.java @@ -162,8 +162,9 @@ public void init(final Map props, boolean ifNotExists) throws An } if (hasCooldownDatetime) { try { - this.cooldownTimestampMs = LocalDateTime.parse(props.get(COOLDOWN_DATETIME), TimeUtils.DATETIME_FORMAT) - .atZone(TimeUtils.TIME_ZONE).toInstant().toEpochMilli(); + this.cooldownTimestampMs = LocalDateTime + .parse(props.get(COOLDOWN_DATETIME), TimeUtils.getDatetimeFormatWithTimeZone()) + .atZone(TimeUtils.getDorisZoneId()).toInstant().toEpochMilli(); } catch (DateTimeParseException e) { throw new AnalysisException(String.format("cooldown_datetime format error: %s", props.get(COOLDOWN_DATETIME)), e); @@ -327,7 +328,8 @@ public void modifyProperties(Map properties) throws DdlException } else { try { cooldownTimestampMs = LocalDateTime.parse(properties.get(COOLDOWN_DATETIME), - TimeUtils.DATETIME_FORMAT).atZone(TimeUtils.TIME_ZONE).toInstant().toEpochMilli(); + TimeUtils.getDatetimeFormatWithTimeZone()).atZone(TimeUtils.getDorisZoneId()).toInstant() + .toEpochMilli(); } catch (DateTimeParseException e) { throw new RuntimeException(e); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java index e50bf77650de406..6285876c1577ccc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/Coordinator.java @@ -309,7 +309,7 @@ public Coordinator(ConnectContext context, Analyzer analyzer, Planner planner) { setFromUserProperty(context); - this.queryGlobals.setNowString(TimeUtils.DATETIME_FORMAT.format(LocalDateTime.now())); + this.queryGlobals.setNowString(TimeUtils.getDatetimeFormatWithTimeZone().format(LocalDateTime.now())); this.queryGlobals.setTimestampMs(System.currentTimeMillis()); this.queryGlobals.setNanoSeconds(LocalDateTime.now().getNano()); this.queryGlobals.setLoadZeroTolerance(false); @@ -337,7 +337,7 @@ public Coordinator(Long jobId, TUniqueId queryId, DescriptorTable descTable, Lis this.fragments = fragments; this.scanNodes = scanNodes; this.queryOptions = new TQueryOptions(); - this.queryGlobals.setNowString(TimeUtils.DATETIME_FORMAT.format(LocalDateTime.now())); + this.queryGlobals.setNowString(TimeUtils.getDatetimeFormatWithTimeZone().format(LocalDateTime.now())); this.queryGlobals.setTimestampMs(System.currentTimeMillis()); this.queryGlobals.setTimeZone(timezone); this.queryGlobals.setLoadZeroTolerance(loadZeroTolerance); diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java index 4726d0366197333..e176d5c784ef1cb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ShowExecutor.java @@ -2748,7 +2748,7 @@ private void handleShowAnalyze() { row.add(analysisInfo.jobType.toString()); row.add(analysisInfo.analysisType.toString()); row.add(analysisInfo.message); - row.add(TimeUtils.DATETIME_FORMAT.format( + row.add(TimeUtils.getDatetimeFormatWithTimeZone().format( LocalDateTime.ofInstant(Instant.ofEpochMilli(analysisInfo.lastExecTimeInMs), ZoneId.systemDefault()))); row.add(analysisInfo.state.toString()); @@ -3026,7 +3026,7 @@ private void handleShowAnalyzeTaskStatus() { row.add("N/A"); } row.add(analysisInfo.message); - row.add(TimeUtils.DATETIME_FORMAT.format( + row.add(TimeUtils.getDatetimeFormatWithTimeZone().format( LocalDateTime.ofInstant(Instant.ofEpochMilli(analysisInfo.lastExecTimeInMs), ZoneId.systemDefault()))); row.add(String.valueOf(analysisInfo.timeCostInMs)); diff --git a/fe/fe-core/src/main/java/org/apache/doris/rewrite/FoldConstantsRule.java b/fe/fe-core/src/main/java/org/apache/doris/rewrite/FoldConstantsRule.java index ed1b45b19dbfbf5..1b1cc42d51c584f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/rewrite/FoldConstantsRule.java +++ b/fe/fe-core/src/main/java/org/apache/doris/rewrite/FoldConstantsRule.java @@ -370,7 +370,7 @@ private Map> calcConstExpr(Map beIds = Lists.newArrayList(10001L, 10002L, 10003L, 10004L); beIds.forEach(id -> Env.getCurrentSystemInfo().addBackend(RebalancerTestUtil.createBackend(id, 2048, 0))); diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/AdminRebalanceDiskStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/AdminRebalanceDiskStmtTest.java index 268126b1ca791d7..86f2e97890d1164 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/AdminRebalanceDiskStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/AdminRebalanceDiskStmtTest.java @@ -43,9 +43,9 @@ public class AdminRebalanceDiskStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); List beIds = Lists.newArrayList(10001L, 10002L, 10003L, 10004L); beIds.forEach(id -> Env.getCurrentSystemInfo().addBackend(RebalancerTestUtil.createBackend(id, 2048, 0))); diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterCatalogNameStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterCatalogNameStmtTest.java index 9a1ec62021d5fca..5a59ad725b24c0b 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterCatalogNameStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterCatalogNameStmtTest.java @@ -39,9 +39,9 @@ public class AlterCatalogNameStmtTest { @Before public void setUp() throws DdlException { - analyzer = AccessTestUtil.fetchAdminAnalyzer(false); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "%"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(false); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterCatalogPropsStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterCatalogPropsStmtTest.java index 803d7f976d9963f..bd0961384241677 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterCatalogPropsStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterCatalogPropsStmtTest.java @@ -42,9 +42,9 @@ public class AlterCatalogPropsStmtTest { @Before public void setUp() throws DdlException { - analyzer = AccessTestUtil.fetchAdminAnalyzer(false); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "%"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(false); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterSqlBlockRuleStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterSqlBlockRuleStmtTest.java index 08f0ee9c6503295..736c10224868011 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterSqlBlockRuleStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/AlterSqlBlockRuleStmtTest.java @@ -45,9 +45,9 @@ public class AlterSqlBlockRuleStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/BackupTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/BackupTest.java index 7a0e969f597b517..c7e8ece0956e3a6 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/BackupTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/BackupTest.java @@ -19,6 +19,7 @@ import org.apache.doris.catalog.Env; import org.apache.doris.datasource.InternalCatalog; +import org.apache.doris.mysql.privilege.MockedAuth; import org.apache.doris.qe.ConnectContext; import com.google.common.collect.Lists; @@ -41,6 +42,8 @@ public class BackupTest { @Before public void setUp() { + MockedAuth.mockedConnectContext(ctx, "root", "192.188.3.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); env = AccessTestUtil.fetchAdminCatalog(); new MockUp() { diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateCatalogStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateCatalogStmtTest.java index 60d14464ebe5dcc..2defacb2c24df14 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateCatalogStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateCatalogStmtTest.java @@ -43,9 +43,9 @@ public class CreateCatalogStmtTest { @Before() public void setUp() throws DdlException { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "%"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateDbStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateDbStmtTest.java index 4e0a1fcc0bc238b..e9c98f66faa1cfe 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateDbStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateDbStmtTest.java @@ -41,9 +41,9 @@ public class CreateDbStmtTest { @Before() public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateRoutineLoadStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateRoutineLoadStmtTest.java index 51c5177b84dffc6..ef103873ae35b28 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateRoutineLoadStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateRoutineLoadStmtTest.java @@ -189,6 +189,9 @@ public void analyze(Analyzer analyzer1) { result = sessionVariable; sessionVariable.getSendBatchParallelism(); result = 1; + + sessionVariable.getTimeZone(); + result = "Asia/Hong_Kong"; } }; @@ -254,6 +257,9 @@ public void analyze(Analyzer analyzer1) { result = sessionVariable; sessionVariable.getSendBatchParallelism(); result = 1; + + sessionVariable.getTimeZone(); + result = "Asia/Hong_Kong"; } }; diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateSqlBlockRuleStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateSqlBlockRuleStmtTest.java index 48a86548bfb5122..ea832e04c531694 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateSqlBlockRuleStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateSqlBlockRuleStmtTest.java @@ -45,9 +45,9 @@ public class CreateSqlBlockRuleStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateTableStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateTableStmtTest.java index d856599a3d7b9a4..1567886cb624588 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateTableStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/CreateTableStmtTest.java @@ -77,6 +77,8 @@ public class CreateTableStmtTest { **/ @Before public void setUp() { + MockedAuth.mockedAccess(accessManager); + MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); // analyzer analyzer = AccessTestUtil.fetchAdminAnalyzer(false); // table name @@ -98,9 +100,6 @@ public void setUp() { invalidColsName.add("col1"); invalidColsName.add("col2"); invalidColsName.add("col2"); - - MockedAuth.mockedAccess(accessManager); - MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/DeleteStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/DeleteStmtTest.java index 2bd53e8d3e6a70a..3a93eb9983a2195 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/DeleteStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/DeleteStmtTest.java @@ -45,9 +45,9 @@ public class DeleteStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(false); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(false); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/DropCatalogStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/DropCatalogStmtTest.java index 2eebed775f6c7e6..a9b89a0a3935981 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/DropCatalogStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/DropCatalogStmtTest.java @@ -40,9 +40,9 @@ public class DropCatalogStmtTest { @Before public void setUp() throws DdlException { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "%"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/DropDbStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/DropDbStmtTest.java index f74b3d76b74f29c..86cbc61e87d7f66 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/DropDbStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/DropDbStmtTest.java @@ -38,9 +38,9 @@ public class DropDbStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/DropTableStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/DropTableStmtTest.java index ac9aa6f902734a6..32da71064f175c1 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/DropTableStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/DropTableStmtTest.java @@ -46,6 +46,9 @@ public class DropTableStmtTest { @Before public void setUp() { + MockedAuth.mockedAccess(accessManager); + MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + tbl = new TableName(internalCtl, "db1", "table1"); noDbTbl = new TableName(internalCtl, "", "table1"); analyzer = AccessTestUtil.fetchAdminAnalyzer(true); @@ -65,9 +68,6 @@ public void setUp() { result = "testCluster"; } }; - - MockedAuth.mockedAccess(accessManager); - MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/DropUserStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/DropUserStmtTest.java index 54142222181c5b7..ad483bd6719e794 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/DropUserStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/DropUserStmtTest.java @@ -38,9 +38,9 @@ public class DropUserStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/LoadStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/LoadStmtTest.java index e8f83098671503a..21511478dd51053 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/LoadStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/LoadStmtTest.java @@ -30,6 +30,7 @@ import org.apache.doris.mysql.privilege.AccessControllerManager; import org.apache.doris.mysql.privilege.PrivPredicate; import org.apache.doris.qe.ConnectContext; +import org.apache.doris.qe.VariableMgr; import org.apache.doris.task.LoadTaskInfo; import com.google.common.collect.Lists; @@ -57,9 +58,6 @@ public class LoadStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); - dataDescriptions = Lists.newArrayList(); - dataDescriptions.add(desc); new Expectations() { { ConnectContext.get(); @@ -70,11 +68,19 @@ public void setUp() { minTimes = 0; result = "default_cluster:user"; + ctx.getSessionVariable(); + minTimes = 0; + result = VariableMgr.newSessionVariable(); + desc.toSql(); minTimes = 0; result = "XXX"; } }; + + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); + dataDescriptions = Lists.newArrayList(); + dataDescriptions.add(desc); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/SetOperationStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/SetOperationStmtTest.java index ab9131ffb9e5124..203b30935e663cf 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/SetOperationStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/SetOperationStmtTest.java @@ -39,9 +39,9 @@ public class SetOperationStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/SetPassVarTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/SetPassVarTest.java index 5157da16452cecd..f9d914739420ef8 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/SetPassVarTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/SetPassVarTest.java @@ -38,9 +38,9 @@ public class SetPassVarTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); UserIdentity currentUser = new UserIdentity("root", "192.168.1.1"); currentUser.setIsAnalyzed(); ctx.setCurrentUserIdentity(currentUser); diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/SetStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/SetStmtTest.java index 4de1d76c0d22971..29b1c13ddfb8b6c 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/SetStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/SetStmtTest.java @@ -41,9 +41,9 @@ public class SetStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/SetUserPropertyStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/SetUserPropertyStmtTest.java index f926903b785e5a6..0a4a331a153fb43 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/SetUserPropertyStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/SetUserPropertyStmtTest.java @@ -41,9 +41,9 @@ public class SetUserPropertyStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/SetVarTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/SetVarTest.java index d88538a9a58a8c9..68ccf0ec0c6e5fe 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/SetVarTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/SetVarTest.java @@ -38,9 +38,9 @@ public class SetVarTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(false); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(false); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowDataTypesStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowDataTypesStmtTest.java index 197f5cc723056d5..3856bbf7f933f78 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowDataTypesStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowDataTypesStmtTest.java @@ -35,8 +35,8 @@ public class ShowDataTypesStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowDbIdStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowDbIdStmtTest.java index 052f82ab61a3cae..ff139dfc713e82d 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowDbIdStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowDbIdStmtTest.java @@ -38,9 +38,9 @@ public class ShowDbIdStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowEncryptKeysStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowEncryptKeysStmtTest.java index 5246f2e0386bcf8..337ffb264dff4f0 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowEncryptKeysStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowEncryptKeysStmtTest.java @@ -48,10 +48,10 @@ public class ShowEncryptKeysStmtTest { @Before public void setUp() { - fakeEnv = new FakeEnv(); - env = AccessTestUtil.fetchAdminCatalog(); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.188.3.1"); + fakeEnv = new FakeEnv(); + env = AccessTestUtil.fetchAdminCatalog(); FakeEnv.setEnv(env); new Expectations() { diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowFunctionsStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowFunctionsStmtTest.java index 0c39cb67b3ba0f2..b55ef9d67ff4cb6 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowFunctionsStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowFunctionsStmtTest.java @@ -49,10 +49,10 @@ public class ShowFunctionsStmtTest { @Before public void setUp() { - fakeEnv = new FakeEnv(); - env = AccessTestUtil.fetchAdminCatalog(); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.188.3.1"); + fakeEnv = new FakeEnv(); + env = AccessTestUtil.fetchAdminCatalog(); FakeEnv.setEnv(env); new Expectations() { diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowIndexStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowIndexStmtTest.java index 721379210486532..3af2a7dd035a99a 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowIndexStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowIndexStmtTest.java @@ -41,9 +41,9 @@ public class ShowIndexStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowPartitionIdStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowPartitionIdStmtTest.java index 5df375e646f6a39..4682bc660b8b5fd 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowPartitionIdStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowPartitionIdStmtTest.java @@ -38,9 +38,9 @@ public class ShowPartitionIdStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowTableCreationStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowTableCreationStmtTest.java index bc9e2455220e2f7..2021841355063fc 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowTableCreationStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowTableCreationStmtTest.java @@ -37,9 +37,9 @@ public class ShowTableCreationStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowTableIdStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowTableIdStmtTest.java index d24e6a1b8f30b24..13f1f3a095d8a4f 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowTableIdStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowTableIdStmtTest.java @@ -38,9 +38,9 @@ public class ShowTableIdStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowTableStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowTableStmtTest.java index b6c63850b6e1c28..44dde1725bded6a 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowTableStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowTableStmtTest.java @@ -38,9 +38,9 @@ public class ShowTableStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowUserPropertyStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowUserPropertyStmtTest.java index 53b63a568b0203d..dfe1f9090501651 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowUserPropertyStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/ShowUserPropertyStmtTest.java @@ -41,9 +41,9 @@ public class ShowUserPropertyStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/UseStmtTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/UseStmtTest.java index 3cb96451bedf21f..5153968ed541331 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/UseStmtTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/UseStmtTest.java @@ -38,9 +38,9 @@ public class UseStmtTest { @Before public void setUp() { - analyzer = AccessTestUtil.fetchAdminAnalyzer(true); MockedAuth.mockedAccess(accessManager); MockedAuth.mockedConnectContext(ctx, "root", "192.168.1.1"); + analyzer = AccessTestUtil.fetchAdminAnalyzer(true); } @Test diff --git a/fe/fe-core/src/test/java/org/apache/doris/load/routineload/KafkaRoutineLoadJobTest.java b/fe/fe-core/src/test/java/org/apache/doris/load/routineload/KafkaRoutineLoadJobTest.java index 73213fc7ffca8b4..842d4d4003f50f5 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/load/routineload/KafkaRoutineLoadJobTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/load/routineload/KafkaRoutineLoadJobTest.java @@ -40,6 +40,7 @@ import org.apache.doris.load.loadv2.LoadTask; import org.apache.doris.load.routineload.kafka.KafkaConfiguration; import org.apache.doris.load.routineload.kafka.KafkaDataSourceProperties; +import org.apache.doris.mysql.privilege.MockedAuth; import org.apache.doris.qe.ConnectContext; import org.apache.doris.system.SystemInfoService; import org.apache.doris.thrift.TResourceInfo; @@ -92,6 +93,8 @@ public class KafkaRoutineLoadJobTest { @Before public void init() { + MockedAuth.mockedConnectContext(connectContext, "root", "192.168.1.1"); + List partitionNameList = Lists.newArrayList(); partitionNameList.add("p1"); partitionNames = new PartitionNames(false, partitionNameList); diff --git a/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/MockedAuth.java b/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/MockedAuth.java index db8b3cd98f27d07..2dbd4c0fa721fd5 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/MockedAuth.java +++ b/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/MockedAuth.java @@ -20,6 +20,7 @@ import org.apache.doris.analysis.UserIdentity; import org.apache.doris.qe.ConnectContext; import org.apache.doris.qe.QueryState; +import org.apache.doris.qe.VariableMgr; import mockit.Expectations; @@ -73,6 +74,10 @@ public static void mockedConnectContext(ConnectContext ctx, String user, String UserIdentity userIdentity = new UserIdentity(user, ip); userIdentity.setIsAnalyzed(); result = userIdentity; + + ctx.getSessionVariable(); + minTimes = 0; + result = VariableMgr.newSessionVariable(); } }; } diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/jobs/cascades/DeriveStatsJobTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/jobs/cascades/DeriveStatsJobTest.java index fd60eb2e00cf126..12f03dc5888d21d 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/jobs/cascades/DeriveStatsJobTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/jobs/cascades/DeriveStatsJobTest.java @@ -20,6 +20,7 @@ import org.apache.doris.catalog.Column; import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.PrimitiveType; +import org.apache.doris.mysql.privilege.MockedAuth; import org.apache.doris.nereids.CascadesContext; import org.apache.doris.nereids.jobs.JobContext; import org.apache.doris.nereids.properties.LogicalProperties; @@ -60,6 +61,8 @@ public class DeriveStatsJobTest { @Test public void testExecute() throws Exception { + MockedAuth.mockedConnectContext(context, "root", "192.168.1.1"); + LogicalOlapScan olapScan = constructOlapSCan(); LogicalAggregate agg = constructAgg(olapScan); CascadesContext cascadesContext = MemoTestUtils.createCascadesContext(agg); diff --git a/fe/fe-core/src/test/java/org/apache/doris/planner/RuntimeFilterGeneratorTest.java b/fe/fe-core/src/test/java/org/apache/doris/planner/RuntimeFilterGeneratorTest.java index a7c8f8ed79c2653..f89ac1535d1f3d6 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/planner/RuntimeFilterGeneratorTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/planner/RuntimeFilterGeneratorTest.java @@ -38,6 +38,7 @@ import org.apache.doris.common.jmockit.Deencapsulation; import org.apache.doris.datasource.InternalCatalog; import org.apache.doris.qe.ConnectContext; +import org.apache.doris.qe.VariableMgr; import org.apache.doris.thrift.TPartitionType; import com.google.common.collect.ImmutableList; @@ -60,6 +61,13 @@ public class RuntimeFilterGeneratorTest { @Before public void setUp() throws UserException { + new Expectations() { + { + ConnectContext.get().getSessionVariable(); + minTimes = 0; + result = VariableMgr.newSessionVariable(); + } + }; Env env = Deencapsulation.newInstance(Env.class); analyzer = new Analyzer(env, connectContext); new Expectations() { diff --git a/fe/fe-core/src/test/java/org/apache/doris/qe/StmtExecutorTest.java b/fe/fe-core/src/test/java/org/apache/doris/qe/StmtExecutorTest.java index 507102fb0d258d6..953b5104457621e 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/qe/StmtExecutorTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/qe/StmtExecutorTest.java @@ -85,9 +85,20 @@ public void setUp() throws IOException { ctx = new ConnectContext(); SessionVariable sessionVariable = new SessionVariable(); + new Expectations(ctx) { + { + ctx.getSessionVariable(); + minTimes = 0; + result = sessionVariable; + + ConnectContext.get().getSessionVariable(); + minTimes = 0; + result = sessionVariable; + } + }; + MysqlSerializer serializer = MysqlSerializer.newInstance(); Env env = AccessTestUtil.fetchAdminCatalog(); - new Expectations(channel) { { channel.sendOnePacket((ByteBuffer) any); @@ -153,10 +164,6 @@ public void setUp() throws IOException { minTimes = 0; result = "testCluster:testDb"; - ctx.getSessionVariable(); - minTimes = 0; - result = sessionVariable; - ctx.setStmtId(anyLong); minTimes = 0;