mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 08:32:02 +00:00
Update libpq, tiny fix
This commit is contained in:
parent
c6c6b2d23c
commit
6ec59f1304
2
.gitmodules
vendored
2
.gitmodules
vendored
@ -214,7 +214,7 @@
|
||||
url = https://github.com/jtv/libpqxx
|
||||
[submodule "contrib/libpq"]
|
||||
path = contrib/libpq
|
||||
url = https://github.com/kssenii/libpq
|
||||
url = https://github.com/ClickHouse-Extras/libpq
|
||||
[submodule "contrib/boringssl"]
|
||||
path = contrib/boringssl
|
||||
url = https://github.com/ClickHouse-Extras/boringssl.git
|
||||
|
@ -231,23 +231,23 @@ void PostgreSQLBlockInputStream::prepareArrayInfo(size_t column_idx, const DataT
|
||||
|
||||
Field default_value = nested->getDefault();
|
||||
if (nested->isNullable())
|
||||
nested = typeid_cast<const DataTypeNullable *>(nested.get())->getNestedType();
|
||||
nested = static_cast<const DataTypeNullable *>(nested.get())->getNestedType();
|
||||
|
||||
WhichDataType which(nested);
|
||||
std::function<Field(std::string & fields)> parser;
|
||||
|
||||
if (which.isUInt8() || which.isUInt16())
|
||||
parser = [](std::string & field) -> Field { return pqxx::from_string<uint16_t>(field); };
|
||||
else if (which.isUInt32())
|
||||
parser = [](std::string & field) -> Field { return pqxx::from_string<uint16_t>(field); };
|
||||
else if (which.isUInt64())
|
||||
parser = [](std::string & field) -> Field { return pqxx::from_string<uint64_t>(field); };
|
||||
else if (which.isInt8() || which.isInt16())
|
||||
parser = [](std::string & field) -> Field { return pqxx::from_string<int16_t>(field); };
|
||||
else if (which.isUInt32())
|
||||
parser = [](std::string & field) -> Field { return pqxx::from_string<uint32_t>(field); };
|
||||
else if (which.isInt32())
|
||||
parser = [](std::string & field) -> Field { return pqxx::from_string<int32_t>(field); };
|
||||
else if (which.isUInt64())
|
||||
parser = [](std::string & field) -> Field { return pqxx::from_string<uint64_t>(field); };
|
||||
else if (which.isInt64())
|
||||
parser = [](std::string & field) -> Field { return pqxx::from_string<uint16_t>(field); };
|
||||
parser = [](std::string & field) -> Field { return pqxx::from_string<int64_t>(field); };
|
||||
else if (which.isFloat32())
|
||||
parser = [](std::string & field) -> Field { return pqxx::from_string<float>(field); };
|
||||
else if (which.isFloat64())
|
||||
@ -279,6 +279,13 @@ void PostgreSQLBlockInputStream::prepareArrayInfo(size_t column_idx, const DataT
|
||||
DataTypeDecimal<Decimal128> res(getDecimalPrecision(*type), getDecimalScale(*type));
|
||||
return convertFieldToType(field, res);
|
||||
};
|
||||
else if (which.isDecimal256())
|
||||
parser = [nested](std::string & field) -> Field
|
||||
{
|
||||
const auto & type = typeid_cast<const DataTypeDecimal<Decimal256> *>(nested.get());
|
||||
DataTypeDecimal<Decimal256> res(getDecimalPrecision(*type), getDecimalScale(*type));
|
||||
return convertFieldToType(field, res);
|
||||
};
|
||||
else
|
||||
throw Exception(ErrorCodes::BAD_ARGUMENTS, "Type conversion to {} is not supported", nested->getName());
|
||||
|
||||
|
@ -158,8 +158,7 @@ public:
|
||||
{
|
||||
if (stream_inserter)
|
||||
stream_inserter->complete();
|
||||
if (work)
|
||||
work->commit();
|
||||
work->commit();
|
||||
}
|
||||
|
||||
|
||||
@ -201,7 +200,7 @@ public:
|
||||
|
||||
/// Conversion is done via column casting because with writeText(Array..) got incorrect conversion
|
||||
/// of Date and DateTime data types and it added extra quotes for values inside array.
|
||||
std::string clickhouseToPostgresArray(const Array & array_field, const DataTypePtr & data_type)
|
||||
static std::string clickhouseToPostgresArray(const Array & array_field, const DataTypePtr & data_type)
|
||||
{
|
||||
auto nested = typeid_cast<const DataTypeArray *>(data_type.get())->getNestedType();
|
||||
ColumnPtr nested_column(createNested(nested));
|
||||
@ -221,7 +220,7 @@ public:
|
||||
if (nested->isNullable())
|
||||
{
|
||||
is_nullable = true;
|
||||
nested = typeid_cast<const DataTypeNullable *>(nested.get())->getNestedType();
|
||||
nested = static_cast<const DataTypeNullable *>(nested.get())->getNestedType();
|
||||
}
|
||||
|
||||
WhichDataType which(nested);
|
||||
|
Loading…
Reference in New Issue
Block a user