mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-23 10:10:50 +00:00
fix read string from different format
This commit is contained in:
parent
8f1eeb355e
commit
dac41b0d75
@ -76,7 +76,7 @@ void SerializationBool::serializeTextEscaped(const IColumn & column, size_t row_
|
||||
}
|
||||
}
|
||||
|
||||
void SerializationBool::deserializeTextEscaped(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const
|
||||
void SerializationBool::deserializeFromString(IColumn & column, String & input, const FormatSettings & settings) const
|
||||
{
|
||||
ColumnUInt8 * col = typeid_cast<ColumnUInt8 *>(&column);
|
||||
if (!col)
|
||||
@ -84,25 +84,25 @@ void SerializationBool::deserializeTextEscaped(IColumn & column, ReadBuffer & is
|
||||
throw Exception("Bool type can only deserialize columns of type UInt8." + column.getName(), ErrorCodes::ILLEGAL_COLUMN);
|
||||
}
|
||||
|
||||
if (!istr.eof())
|
||||
if (settings.bool_true_representation == input)
|
||||
{
|
||||
String input;
|
||||
|
||||
readString(input, istr);
|
||||
|
||||
if (settings.bool_true_representation == input)
|
||||
{
|
||||
col->insert(true);
|
||||
}
|
||||
else if (settings.bool_false_representation == input)
|
||||
{
|
||||
col->insert(false);
|
||||
}
|
||||
else
|
||||
throw Exception("Invalid boolean value, should be " + settings.bool_true_representation + " or " + settings.bool_false_representation + " controlled by setting bool_true_representation and bool_false_representation.", ErrorCodes::ILLEGAL_COLUMN);
|
||||
col->insert(true);
|
||||
}
|
||||
else if (settings.bool_false_representation == input)
|
||||
{
|
||||
col->insert(false);
|
||||
}
|
||||
else
|
||||
throw Exception("Invalid boolean value, should be " + settings.bool_true_representation + " or " + settings.bool_false_representation + " controlled by setting bool_true_representation and bool_false_representation.", ErrorCodes::ILLEGAL_COLUMN);
|
||||
}
|
||||
|
||||
void SerializationBool::deserializeTextEscaped(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const
|
||||
{
|
||||
if (istr.eof())
|
||||
throw Exception("Expected boolean value but get EOF.", ErrorCodes::CANNOT_PARSE_DOMAIN_VALUE_FROM_STRING);
|
||||
String input;
|
||||
readEscapedString(input, istr);
|
||||
deserializeFromString(column, input, settings);
|
||||
}
|
||||
|
||||
void SerializationBool::serializeTextJSON(const IColumn &column, size_t row_num, WriteBuffer &ostr, const FormatSettings &settings) const
|
||||
@ -122,7 +122,11 @@ void SerializationBool::serializeTextCSV(const IColumn & column, size_t row_num,
|
||||
|
||||
void SerializationBool::deserializeTextCSV(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const
|
||||
{
|
||||
deserializeTextEscaped(column, istr, settings);
|
||||
if (istr.eof())
|
||||
throw Exception("Expected boolean value but get EOF.", ErrorCodes::CANNOT_PARSE_DOMAIN_VALUE_FROM_STRING);
|
||||
String input;
|
||||
readCSVString(input, istr, settings.csv);
|
||||
deserializeFromString(column, input, settings);
|
||||
}
|
||||
|
||||
void SerializationBool::serializeTextRaw(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const
|
||||
@ -132,7 +136,11 @@ void SerializationBool::serializeTextRaw(const IColumn & column, size_t row_num,
|
||||
|
||||
void SerializationBool::deserializeTextRaw(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const
|
||||
{
|
||||
deserializeTextEscaped(column, istr, settings);
|
||||
if (istr.eof())
|
||||
throw Exception("Expected boolean value but get EOF.", ErrorCodes::CANNOT_PARSE_DOMAIN_VALUE_FROM_STRING);
|
||||
String input;
|
||||
readString(input, istr);
|
||||
deserializeFromString(column, input, settings);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,6 +17,8 @@ public:
|
||||
void serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override;
|
||||
void deserializeText(IColumn & column, ReadBuffer & istr, const FormatSettings &) const override;
|
||||
|
||||
void deserializeFromString(IColumn & column, String & input, const FormatSettings & settings) const;
|
||||
|
||||
void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const override;
|
||||
void deserializeTextEscaped(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const override;
|
||||
|
||||
|
@ -1,101 +1,101 @@
|
||||
CREATE TABLE default.bool_test\n(\n `value` Bool\n)\nENGINE = Memory
|
||||
false
|
||||
true
|
||||
false
|
||||
true
|
||||
false
|
||||
true
|
||||
false
|
||||
true
|
||||
{"value":false}
|
||||
{"value":true}
|
||||
{"value":false}
|
||||
{"value":true}
|
||||
{"value":false}
|
||||
{"value":true}
|
||||
{"value":false}
|
||||
{"value":true}
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
true
|
||||
true
|
||||
true
|
||||
true
|
||||
False
|
||||
False
|
||||
False
|
||||
False
|
||||
False
|
||||
True
|
||||
True
|
||||
True
|
||||
True
|
||||
True
|
||||
False
|
||||
False
|
||||
False
|
||||
False
|
||||
False
|
||||
True
|
||||
True
|
||||
True
|
||||
True
|
||||
True
|
||||
No
|
||||
No
|
||||
No
|
||||
No
|
||||
No
|
||||
No
|
||||
Yes
|
||||
Yes
|
||||
Yes
|
||||
Yes
|
||||
Yes
|
||||
Yes
|
||||
No
|
||||
No
|
||||
No
|
||||
No
|
||||
No
|
||||
No
|
||||
Yes
|
||||
Yes
|
||||
Yes
|
||||
Yes
|
||||
Yes
|
||||
Yes
|
||||
Off
|
||||
Off
|
||||
Off
|
||||
Off
|
||||
Off
|
||||
Off
|
||||
Off
|
||||
On
|
||||
On
|
||||
On
|
||||
On
|
||||
On
|
||||
On
|
||||
On
|
||||
Off
|
||||
Off
|
||||
Off
|
||||
Off
|
||||
Off
|
||||
Off
|
||||
Off
|
||||
On
|
||||
On
|
||||
On
|
||||
On
|
||||
On
|
||||
On
|
||||
On
|
||||
CREATE TABLE default.bool_test\n(\n `value` Bool,\n `f` String\n)\nENGINE = Memory
|
||||
false test
|
||||
true test
|
||||
false test
|
||||
true test
|
||||
false test
|
||||
true test
|
||||
false test
|
||||
true test
|
||||
{"value":false,"f":"test"}
|
||||
{"value":true,"f":"test"}
|
||||
{"value":false,"f":"test"}
|
||||
{"value":true,"f":"test"}
|
||||
{"value":false,"f":"test"}
|
||||
{"value":true,"f":"test"}
|
||||
{"value":false,"f":"test"}
|
||||
{"value":true,"f":"test"}
|
||||
0 test
|
||||
1 test
|
||||
0 test
|
||||
1 test
|
||||
0 test
|
||||
1 test
|
||||
0 test
|
||||
1 test
|
||||
true test
|
||||
true test
|
||||
true test
|
||||
true test
|
||||
False,"test"
|
||||
False,"test"
|
||||
False,"test"
|
||||
False,"test"
|
||||
False,"test"
|
||||
True,"test"
|
||||
True,"test"
|
||||
True,"test"
|
||||
True,"test"
|
||||
True,"test"
|
||||
False test
|
||||
False test
|
||||
False test
|
||||
False test
|
||||
False test
|
||||
True test
|
||||
True test
|
||||
True test
|
||||
True test
|
||||
True test
|
||||
No,"test"
|
||||
No,"test"
|
||||
No,"test"
|
||||
No,"test"
|
||||
No,"test"
|
||||
No,"test"
|
||||
Yes,"test"
|
||||
Yes,"test"
|
||||
Yes,"test"
|
||||
Yes,"test"
|
||||
Yes,"test"
|
||||
Yes,"test"
|
||||
No test
|
||||
No test
|
||||
No test
|
||||
No test
|
||||
No test
|
||||
No test
|
||||
Yes test
|
||||
Yes test
|
||||
Yes test
|
||||
Yes test
|
||||
Yes test
|
||||
Yes test
|
||||
Off,"test"
|
||||
Off,"test"
|
||||
Off,"test"
|
||||
Off,"test"
|
||||
Off,"test"
|
||||
Off,"test"
|
||||
Off,"test"
|
||||
On,"test"
|
||||
On,"test"
|
||||
On,"test"
|
||||
On,"test"
|
||||
On,"test"
|
||||
On,"test"
|
||||
On,"test"
|
||||
Off test
|
||||
Off test
|
||||
Off test
|
||||
Off test
|
||||
Off test
|
||||
Off test
|
||||
Off test
|
||||
On test
|
||||
On test
|
||||
On test
|
||||
On test
|
||||
On test
|
||||
On test
|
||||
On test
|
||||
|
@ -1,38 +1,38 @@
|
||||
DROP TABLE IF EXISTS bool_test;
|
||||
|
||||
CREATE TABLE bool_test (value Bool) ENGINE = Memory;
|
||||
CREATE TABLE bool_test (value Bool,f String) ENGINE = Memory;
|
||||
|
||||
-- value column shoud have type 'Bool'
|
||||
SHOW CREATE TABLE bool_test;
|
||||
|
||||
INSERT INTO bool_test (value) VALUES ('false'), ('true'), (0), (1);
|
||||
INSERT INTO bool_test (value) FORMAT JSONEachRow {"value":false}{"value":true}{"value":0}{"value":1}
|
||||
INSERT INTO bool_test (value,f) VALUES ('false', 'test'), ('true' , 'test'), (0, 'test'), (1, 'test');
|
||||
INSERT INTO bool_test (value,f) FORMAT JSONEachRow {"value":false,"f":"test"}{"value":true,"f":"test"}{"value":0,"f":"test"}{"value":1,"f":"test"}
|
||||
|
||||
SELECT value FROM bool_test;
|
||||
SELECT value FROM bool_test FORMAT JSONEachRow;
|
||||
SELECT toUInt64(value) FROM bool_test;
|
||||
SELECT value FROM bool_test where value > 0;
|
||||
SELECT value,f FROM bool_test;
|
||||
SELECT value,f FROM bool_test FORMAT JSONEachRow;
|
||||
SELECT toUInt64(value),f FROM bool_test;
|
||||
SELECT value,f FROM bool_test where value > 0;
|
||||
|
||||
set bool_true_representation='True';
|
||||
set bool_false_representation='False';
|
||||
INSERT INTO bool_test (value) FORMAT CSV True
|
||||
INSERT INTO bool_test (value) FORMAT TSV False
|
||||
SELECT value FROM bool_test order by value FORMAT CSV;
|
||||
SELECT value FROM bool_test order by value FORMAT TSV;
|
||||
INSERT INTO bool_test (value,f) FORMAT CSV True,test
|
||||
INSERT INTO bool_test (value,f) FORMAT TSV False test
|
||||
SELECT value,f FROM bool_test order by value FORMAT CSV;
|
||||
SELECT value,f FROM bool_test order by value FORMAT TSV;
|
||||
|
||||
set bool_true_representation='Yes';
|
||||
set bool_false_representation='No';
|
||||
INSERT INTO bool_test (value) FORMAT CSV Yes
|
||||
INSERT INTO bool_test (value) FORMAT TSV No
|
||||
SELECT value FROM bool_test order by value FORMAT CSV;
|
||||
SELECT value FROM bool_test order by value FORMAT TSV;
|
||||
INSERT INTO bool_test (value,f) FORMAT CSV Yes,test
|
||||
INSERT INTO bool_test (value,f) FORMAT TSV No test
|
||||
SELECT value,f FROM bool_test order by value FORMAT CSV;
|
||||
SELECT value,f FROM bool_test order by value FORMAT TSV;
|
||||
|
||||
set bool_true_representation='On';
|
||||
set bool_false_representation='Off';
|
||||
INSERT INTO bool_test (value) FORMAT CSV On
|
||||
INSERT INTO bool_test (value) FORMAT TSV Off
|
||||
SELECT value FROM bool_test order by value FORMAT CSV;
|
||||
SELECT value FROM bool_test order by value FORMAT TSV;
|
||||
INSERT INTO bool_test (value,f) FORMAT CSV On,test
|
||||
INSERT INTO bool_test (value,f) FORMAT TSV Off test
|
||||
SELECT value,f FROM bool_test order by value FORMAT CSV;
|
||||
SELECT value,f FROM bool_test order by value FORMAT TSV;
|
||||
|
||||
DROP TABLE IF EXISTS bool_test;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user