Compare commits

...

7 Commits

Author SHA1 Message Date
cangyin
6fcdb73856
Merge 4d7368a01a into 2cef99c311 2024-09-18 00:38:57 +02:00
cangyin
4d7368a01a fix test 2024-09-03 18:45:56 +08:00
cangyin
03e382165f return UTC directly 2024-09-03 18:37:27 +08:00
cangyin
4d1fa6e98e add test case 2024-09-03 15:06:07 +08:00
cangyin
6a55e0b485 add executable permission 2024-08-31 00:40:40 +08:00
cangyin
60790d6c92 More compliant with glibc 2024-08-31 00:10:19 +08:00
cangyin
44dcee5b11 Fix empty TZ error 2024-08-27 09:50:10 +08:00
3 changed files with 20 additions and 2 deletions

View File

@ -52,6 +52,8 @@ std::string determineDefaultTimeZone()
if (*tz_env_var == ':')
++tz_env_var;
else if (*tz_env_var == '\0')
return "UTC";
tz_file_path = tz_env_var;
tz_name = tz_env_var;
@ -68,7 +70,7 @@ std::string determineDefaultTimeZone()
/// Read symlink but not transitive.
/// Example:
/// /etc/localtime -> /usr/share/zoneinfo//UTC
/// /usr/share/zoneinfo//UTC -> UCT
/// /usr/share/zoneinfo//UTC -> UTC
/// But the preferred time zone name is pointed by the first link (UTC), and the second link is just an internal detail.
if (FS::isSymlink(tz_file_path))
{
@ -89,7 +91,7 @@ std::string determineDefaultTimeZone()
fs::path relative_path = tz_file_path.lexically_relative(tz_database_path);
if (!relative_path.empty() && *relative_path.begin() != ".." && *relative_path.begin() != ".")
return tz_name.empty() ? relative_path.string() : tz_name;
return relative_path.string();
}
/// Try the same with full symlinks resolution

View File

@ -0,0 +1,5 @@
UTC
Asia/Shanghai
Asia/Shanghai
Europe/Amsterdam
Poland

View File

@ -0,0 +1,11 @@
#!/usr/bin/env bash
CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# shellcheck source=../shell_config.sh
. "$CUR_DIR"/../shell_config.sh
TZ='' ${CLICKHOUSE_LOCAL} --query "SELECT timezone()";
TZ='Asia/Shanghai' ${CLICKHOUSE_LOCAL} --query "SELECT timezone()";
TZ=':Asia/Shanghai' ${CLICKHOUSE_LOCAL} --query "SELECT timezone()";
TZ=':/usr/share/zoneinfo/Europe/Amsterdam' ${CLICKHOUSE_LOCAL} --query "SELECT timezone()";
TZ='Poland' ${CLICKHOUSE_LOCAL} --query "SELECT timezone()";