summaryrefslogtreecommitdiffstats
path: root/contrib/clickhouse/src/Functions/extractTimeZoneFromFunctionArguments.cpp
diff options
context:
space:
mode:
authorAlexSm <[email protected]>2024-01-04 15:09:05 +0100
committerGitHub <[email protected]>2024-01-04 15:09:05 +0100
commitdab291146f6cd7d35684e3a1150e5bb1c412982c (patch)
tree36ef35f6cacb6432845a4a33f940c95871036b32 /contrib/clickhouse/src/Functions/extractTimeZoneFromFunctionArguments.cpp
parent63660ad5e7512029fd0218e7a636580695a24e1f (diff)
Library import 5, delete go dependencies (#832)
* Library import 5, delete go dependencies * Fix yt client
Diffstat (limited to 'contrib/clickhouse/src/Functions/extractTimeZoneFromFunctionArguments.cpp')
-rw-r--r--contrib/clickhouse/src/Functions/extractTimeZoneFromFunctionArguments.cpp83
1 files changed, 0 insertions, 83 deletions
diff --git a/contrib/clickhouse/src/Functions/extractTimeZoneFromFunctionArguments.cpp b/contrib/clickhouse/src/Functions/extractTimeZoneFromFunctionArguments.cpp
deleted file mode 100644
index 7168c68c9c9..00000000000
--- a/contrib/clickhouse/src/Functions/extractTimeZoneFromFunctionArguments.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-#include <Functions/extractTimeZoneFromFunctionArguments.h>
-#include <Functions/FunctionHelpers.h>
-#include <Core/Block.h>
-#include <DataTypes/DataTypeDateTime.h>
-#include <DataTypes/DataTypeDateTime64.h>
-#include <Columns/ColumnString.h>
-#include <Common/DateLUT.h>
-
-
-namespace DB
-{
-
-namespace ErrorCodes
-{
- extern const int ILLEGAL_COLUMN;
- extern const int ILLEGAL_TYPE_OF_ARGUMENT;
-}
-
-
-std::string extractTimeZoneNameFromColumn(const IColumn * column, const String & column_name)
-{
- const ColumnConst * time_zone_column = checkAndGetColumnConst<ColumnString>(column);
-
- if (!time_zone_column)
- throw Exception(ErrorCodes::ILLEGAL_COLUMN,
- "Illegal column {} of time zone argument of function, must be a constant string",
- column_name);
-
- return time_zone_column->getValue<String>();
-}
-
-
-std::string extractTimeZoneNameFromFunctionArguments(const ColumnsWithTypeAndName & arguments, size_t time_zone_arg_num, size_t datetime_arg_num, bool allow_nonconst_timezone_arguments)
-{
- /// Explicit time zone may be passed in last argument.
- if ((arguments.size() == time_zone_arg_num + 1)
- && (!allow_nonconst_timezone_arguments || arguments[time_zone_arg_num].column))
- {
- return extractTimeZoneNameFromColumn(arguments[time_zone_arg_num].column.get(), arguments[time_zone_arg_num].name);
- }
- else
- {
- if (arguments.size() <= datetime_arg_num)
- return {};
-
- const auto & dt_arg = arguments[datetime_arg_num].type.get();
- /// If time zone is attached to an argument of type DateTime.
- if (const auto * type = checkAndGetDataType<DataTypeDateTime>(dt_arg))
- return type->hasExplicitTimeZone() ? type->getTimeZone().getTimeZone() : std::string();
- if (const auto * type = checkAndGetDataType<DataTypeDateTime64>(dt_arg))
- return type->hasExplicitTimeZone() ? type->getTimeZone().getTimeZone() : std::string();
-
- return {};
- }
-}
-
-const DateLUTImpl & extractTimeZoneFromFunctionArguments(const ColumnsWithTypeAndName & arguments, size_t time_zone_arg_num, size_t datetime_arg_num)
-{
- if (arguments.size() == time_zone_arg_num + 1)
- {
- std::string time_zone = extractTimeZoneNameFromColumn(arguments[time_zone_arg_num].column.get(), arguments[time_zone_arg_num].name);
- if (time_zone.empty())
- throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Provided time zone must be non-empty and be a valid time zone");
- return DateLUT::instance(time_zone);
- }
- else
- {
- if (arguments.size() <= datetime_arg_num)
- return DateLUT::instance();
-
- const auto & dt_arg = arguments[datetime_arg_num].type.get();
- /// If time zone is attached to an argument of type DateTime.
- if (const auto * type = checkAndGetDataType<DataTypeDateTime>(dt_arg))
- return type->getTimeZone();
- if (const auto * type = checkAndGetDataType<DataTypeDateTime64>(dt_arg))
- return type->getTimeZone();
-
- return DateLUT::instance();
- }
-}
-
-}
-