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
|
url = https://github.com/jtv/libpqxx
|
||||||
[submodule "contrib/libpq"]
|
[submodule "contrib/libpq"]
|
||||||
path = contrib/libpq
|
path = contrib/libpq
|
||||||
url = https://github.com/kssenii/libpq
|
url = https://github.com/ClickHouse-Extras/libpq
|
||||||
[submodule "contrib/boringssl"]
|
[submodule "contrib/boringssl"]
|
||||||
path = contrib/boringssl
|
path = contrib/boringssl
|
||||||
url = https://github.com/ClickHouse-Extras/boringssl.git
|
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();
|
Field default_value = nested->getDefault();
|
||||||
if (nested->isNullable())
|
if (nested->isNullable())
|
||||||
nested = typeid_cast<const DataTypeNullable *>(nested.get())->getNestedType();
|
nested = static_cast<const DataTypeNullable *>(nested.get())->getNestedType();
|
||||||
|
|
||||||
WhichDataType which(nested);
|
WhichDataType which(nested);
|
||||||
std::function<Field(std::string & fields)> parser;
|
std::function<Field(std::string & fields)> parser;
|
||||||
|
|
||||||
if (which.isUInt8() || which.isUInt16())
|
if (which.isUInt8() || which.isUInt16())
|
||||||
parser = [](std::string & field) -> Field { return pqxx::from_string<uint16_t>(field); };
|
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())
|
else if (which.isInt8() || which.isInt16())
|
||||||
parser = [](std::string & field) -> Field { return pqxx::from_string<int16_t>(field); };
|
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())
|
else if (which.isInt32())
|
||||||
parser = [](std::string & field) -> Field { return pqxx::from_string<int32_t>(field); };
|
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())
|
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())
|
else if (which.isFloat32())
|
||||||
parser = [](std::string & field) -> Field { return pqxx::from_string<float>(field); };
|
parser = [](std::string & field) -> Field { return pqxx::from_string<float>(field); };
|
||||||
else if (which.isFloat64())
|
else if (which.isFloat64())
|
||||||
@ -279,6 +279,13 @@ void PostgreSQLBlockInputStream::prepareArrayInfo(size_t column_idx, const DataT
|
|||||||
DataTypeDecimal<Decimal128> res(getDecimalPrecision(*type), getDecimalScale(*type));
|
DataTypeDecimal<Decimal128> res(getDecimalPrecision(*type), getDecimalScale(*type));
|
||||||
return convertFieldToType(field, res);
|
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
|
else
|
||||||
throw Exception(ErrorCodes::BAD_ARGUMENTS, "Type conversion to {} is not supported", nested->getName());
|
throw Exception(ErrorCodes::BAD_ARGUMENTS, "Type conversion to {} is not supported", nested->getName());
|
||||||
|
|
||||||
|
@ -158,7 +158,6 @@ public:
|
|||||||
{
|
{
|
||||||
if (stream_inserter)
|
if (stream_inserter)
|
||||||
stream_inserter->complete();
|
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
|
/// 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.
|
/// 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();
|
auto nested = typeid_cast<const DataTypeArray *>(data_type.get())->getNestedType();
|
||||||
ColumnPtr nested_column(createNested(nested));
|
ColumnPtr nested_column(createNested(nested));
|
||||||
@ -221,7 +220,7 @@ public:
|
|||||||
if (nested->isNullable())
|
if (nested->isNullable())
|
||||||
{
|
{
|
||||||
is_nullable = true;
|
is_nullable = true;
|
||||||
nested = typeid_cast<const DataTypeNullable *>(nested.get())->getNestedType();
|
nested = static_cast<const DataTypeNullable *>(nested.get())->getNestedType();
|
||||||
}
|
}
|
||||||
|
|
||||||
WhichDataType which(nested);
|
WhichDataType which(nested);
|
||||||
|
Loading…
Reference in New Issue
Block a user