-
Notifications
You must be signed in to change notification settings - Fork 101
Cannot be parsed as LowCardinality(String) for query parameter 'odbc_positional_5' because it isn't parsed completely: only 31 of 40 bytes was parsed #551
Copy link
Copy link
Closed
Labels
Description
Describe the bug
It seems that long strings are not correctly parsed when using queries parameters
Steps to reproduce
- In PowerBi Desktop, create a table visualization
- Select a text value for which the string is more than 24 characters in the table
- start to drill through from this value
- the report will fail
- if we select another value in the same column, but with less than 24 characters, it works
Expected behaviour
Code example
SELECT count(`C2`) AS `C1`
FROM
(SELECT `OTBL`.`C2`
FROM
(SELECT `C1`,
`C1` AS `C2`
FROM
(SELECT `smt_id`,
`smt_id` AS `C1`
FROM `xxxxxxxx_db`.`yyyyyyyy_view`
WHERE (`edi_type` = {odbc_positional_1:LowCardinality(String)}
AND `transferred` = {odbc_positional_2:LowCardinality(String)})
AND (`modality` IN ({odbc_positional_3:LowCardinality(String)}, {odbc_positional_4:LowCardinality(String)}))) AS `ITBL`) AS `OTBL`
INNER JOIN
(SELECT `C1`
FROM
(SELECT `C1`
FROM
(SELECT `Shipper_Name_Shorten`,
`gsis_id`,
`dw_db_name`,
`shipper_ident_id`,
`shipper_name`,
`shipper_global_id`,
`consignee_ident_id`,
`consignee_name`,
`consignee_global_id`,
`import_export`,
`office_network_location_id`,
`datapool_id`,
`Company`,
`Office`,
`atd`,
`etd`,
`edi_delayed`,
`edi_origin_agt_code`,
`edi_origin_agt_network_location_id`,
`edi_origin_agt_name`,
`edi_destination_agt_code`,
`edi_destination_agt_network_location_id`,
`edi_destination_agt_name`,
`modality`,
`is_edi`,
`edi_destination_agt_is_edi`,
`edi_origin_agt_is_edi`,
`creation_date`,
`month_year`,
`year`,
`is_mainhaul`,
`edi_relevant`,
`MonthNo`,
`CompanyOfficeDB`,
`EX_EDI_Timeliness_Update`,
`IM_EDI_Received_Is_Processed_Update`,
cast(`id` AS String) AS `C1`
FROM `xxxxxxxx_db`.`yyyyyyyy_view`
WHERE (((((((((((((((((((((((`dw_db_name` = {odbc_positional_5:LowCardinality(String)}
AND cast(`shipper_ident_id` AS Float64) = {odbc_positional_6:Nullable(Float64)})
AND `consignee_global_id` IS NULL)
AND `import_export` = {odbc_positional_7:LowCardinality(String)})
AND `shipper_name` = {odbc_positional_8:LowCardinality(String)})
AND `shipper_global_id` IS NULL)
AND cast(`consignee_ident_id` AS Float64) = {odbc_positional_9:Nullable(Float64)})
AND `consignee_name` = {odbc_positional_10:LowCardinality(String)})
AND cast(`office_network_location_id` AS Float64) = {odbc_positional_11:Nullable(Float64)})
AND `datapool_id` = {odbc_positional_12:LowCardinality(String)})
AND `modality` = {odbc_positional_13:LowCardinality(String)})
AND `atd` = {odbc_positional_14:Nullable(Date)})
AND `EX_EDI_Timeliness_Update` = {odbc_positional_15:LowCardinality(String)})
AND `IM_EDI_Received_Is_Processed_Update` = {odbc_positional_16:LowCardinality(String)})
AND `edi_relevant` = {odbc_positional_17:LowCardinality(String)})
AND `Shipper_Name_Shorten` = {odbc_positional_18:LowCardinality(String)})
AND `edi_origin_agt_code` = {odbc_positional_19:Nullable(Float64)})
AND `edi_origin_agt_name` = {odbc_positional_20:LowCardinality(String)})
AND `edi_destination_agt_code` = {odbc_positional_21:Nullable(Float64)})
AND `edi_destination_agt_name` = {odbc_positional_22:LowCardinality(String)})
AND `etd` = {odbc_positional_23:Nullable(Date)})
AND `creation_date` = {odbc_positional_24:Nullable(DateTime64(9))})
AND `year` = {odbc_positional_25:LowCardinality(String)})
AND `Office` = {odbc_positional_26:LowCardinality(String)})
AND `Company` = {odbc_positional_27:LowCardinality(String)}) AS `ITBL`
WHERE `C1` = {odbc_positional_28:LowCardinality(String)}
AND `gsis_id` = {odbc_positional_29:LowCardinality(String)}) AS `ITBL`
GROUP BY `C1`) AS `ITBL` ON (`OTBL`.`C1` = `ITBL`.`C1`)) AS `ITBL`)Error log
Cannot be parsed as LowCardinality(String) for query parameter 'odbc_positional_5' because it isn't parsed completely: only 31 of 40 bytes was parsed
Query log
Code: 457. DB::Exception: Value XXXXXXXX XXXXX XXXX XXXXXXXXXXX
CO., LTD cannot be parsed as LowCardinality(String) for query parameter 'odbc_positional_8' because it isn't parsed completely: only 31 of 40 bytes was parsed: SHENZHEN COSUN SIGN ENGINEERING. (BAD_QUERY_PARAMETER) (version 25.11.3.54 (official build)) (from [::ffff:10.76.16.237]:4684) (in query: select count(`C2`) as `C1` from ( select `OTBL`.`C2` from ( select `C1`, `C1` as `C2` from ( select `smt_id`, `smt_id` as `C1` from `xxxxxxxx_db`.`yyyyyyyy_view` where (`edi_type` = {odbc_positional_1:LowCardinality(String)} and `transferred` = {odbc_positional_2:LowCardinality(String)}) and (`modality` in ({odbc_positional_3:LowCardinality(String)}, {odbc_positional_4:LowCardinality(String)})) ) as `ITBL` ) as `OTBL` inner join ( select `C1` from ( select `C1` from ( select `Shipper_Name_Shorten`, `gsis_id`, `dw_db_name`, `shipper_ident_id`, `shipper_name`, `shipper_global_id`, `consignee_ident_id`, `consignee_name`, `consignee_global_id`, `import_export`, `office_network_location_id`, `datapool_id`, `Company`, `Office`, `atd`, `etd`, `edi_delayed`, `edi_origin_agt_code`, `edi_origin_agt_network_location_id`, `edi_origin_agt_name`, `edi_destination_agt_code`, `edi_destination_agt_network_location_id`, `edi_destination_agt_name`, `modality`, `is_edi`, `edi_destination_agt_is_edi`, `edi_origin_agt_is_edi`, `creation_date`, `month_year`, `year`, `is_mainhaul`, `edi_relevant`, `MonthNo`, `CompanyOfficeDB`, `EX_EDI_Timeliness_Update`, `IM_EDI_Received_Is_Processed_Update`, cast(`id` as String) as `C1` from `xxxxxxxx_db`.`yyyyyyyy_view` where (((((((((((((((((((((((`dw_db_name` = {odbc_positional_5:LowCardinality(String)} and cast(`shipper_ident_id` as Float64) = {odbc_positional_6:Nullable(Float64)}) and `consignee_global_id` is null) and `import_export` = {odbc_positional_7:LowCardinality(String)}) and `shipper_name` = {odbc_positional_8:LowCardinality(String)}) and `shipper_global_id` is null) and cast(`consignee_ident_id` as Float64) = {odbc_positional_9:Nullable(Float64)}) and `consignee_name` = {odbc_positional_10:LowCardinality(String)}) and cast(`office_network_location_id` as Float64) = {odbc_positional_11:Nullable(Float64)}) and `datapool_id` = {odbc_positional_12:LowCardinality(String)}) and `modality` = {odbc_positional_13:LowCardinality(String)}) and `atd` = {odbc_positional_14:Nullable(Date)}) and `EX_EDI_Timeliness_Update` = {odbc_positional_15:LowCardinality(String)}) and `IM_EDI_Received_Is_Processed_Update` = {odbc_positional_16:LowCardinality(String)}) and `edi_relevant` = {odbc_positional_17:LowCardinality(String)}) and `Shipper_Name_Shorten` = {odbc_positional_18:LowCardinality(String)}) and `edi_origin_agt_code` = {odbc_positional_19:Nullable(Float64)}) and `edi_origin_agt_name` = {odbc_positional_20:LowCardinality(String)}) and `edi_destination_agt_code` = {odbc_positional_21:Nullable(Float64)}) and `edi_destination_agt_name` = {odbc_positional_22:LowCardinality(String)}) and `etd` = {odbc_positional_23:Nullable(Date)}) and `creation_date` = {odbc_positional_24:Nullable(DateTime64(9))}) and `year` = {odbc_positional_25:LowCardinality(String)}) and `Office` = {odbc_positional_26:LowCardinality(String)}) and `Company` = {odbc_positional_27:LowCardinality(String)} ) as `ITBL` where `C1` = {odbc_positional_28:LowCardinality(String)} and `gsis_id` = {odbc_positional_29:LowCardinality(String)} ) as `ITBL` group by `C1` ) as `ITBL` on (`OTBL`.`C1` = `ITBL`.`C1`) ) as `ITBL`), Stack trace (when copying this message, always include the lines below):
0. DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x00000000116924b0
1. DB::Exception::Exception(String&&, int, String, bool) @ 0x000000000ba0eb98
2. DB::Exception::Exception(PreformattedMessage&&, int) @ 0x000000000ba0e56c
3. DB::Exception::Exception<String const&, String const&, String const&, unsigned long, unsigned long, String>(int, FormatStringHelperImpl<std::type_identity<String const&>::type, std::type_identity<String const&>::type, std::type_identity<String const&>::type, std::type_identity<unsigned long>::type, std::type_identity<unsigned long>::type, std::type_identity<String>::type>, String const&, String const&, String const&, unsigned long&&, unsigned long&&, String&&) @ 0x0000000015e4b5c0
4. DB::ReplaceQueryParameterVisitor::visitQueryParameter(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ab64
5. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
6. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
7. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
8. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
9. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
10. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
11. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
12. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
13. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
14. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
15. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
16. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
17. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
18. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
19. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
20. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
21. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
22. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
23. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
24. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
25. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
26. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
27. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
28. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
29. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
30. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
31. DB::ReplaceQueryParameterVisitor::visitChildren(std::shared_ptr<DB::IAST>&) @ 0x0000000015e4ae14
Configuration
Environment
- Driver version: 1.4.3 and 1.5.0
- OS: Windows
- ODBC Driver manager:
ClickHouse server
- ClickHouse Server version: 24.11
- ClickHouse Server non-default settings, if any:
CREATE TABLEstatements for tables involved:
CREATE VIEW xxxxxxxx_db.yyyyyyyy_view
(
`EDI_relevant_Mike` Bool,
`Shipper_Name_Shorten` String,
`Consignee_Name_Shorten` String,
`id` Int64,
`gsis_id` Nullable(String),
`dw_db_name` String,
`shipper_ident_id` Int64,
`shipper_name` String,
`shipper_global_id` Nullable(String),
`consignee_ident_id` Int64,
`consignee_name` String,
`consignee_global_id` Nullable(String),
`import_export` Nullable(String),
`office_network_location_id` Int64,
`datapool_id` Nullable(String),
`Company` String,
`Office` String,
`atd` Nullable(Date),
`etd` Nullable(Date),
`edi_delayed` Bool,
`ex_edi_timeliness` String,
`smt_status` LowCardinality(Nullable(String)),
`is_canceled_by_event_code` Nullable(Bool),
`service_type` LowCardinality(Nullable(String)),
`is_direct` Nullable(Bool),
`edi_origin_agt_code` Nullable(Float64),
`edi_origin_agt_network_location_id` Nullable(String),
`edi_origin_agt_name` Nullable(String),
`edi_origin_agt_is_dprhenus_member` Nullable(Bool),
`edi_destination_agt_code` Nullable(Float64),
`edi_destination_agt_network_location_id` Nullable(String),
`edi_destination_agt_name` Nullable(String),
`edi_destination_agt_is_dprhenus_member` Nullable(Bool),
`modality` String,
`is_edi` Nullable(Bool),
`edi_destination_agt_is_edi` Nullable(Bool),
`edi_origin_agt_is_edi` Nullable(Bool),
`creation_date` DateTime,
`month_year` Nullable(String),
`year` Nullable(String),
`is_mainhaul` Nullable(Bool),
`edi_consignee_agt_is_dprhenus_member` Nullable(Bool),
`smt_type` LowCardinality(Nullable(String)),
`IM_EDI_Received_Is_Processed` Nullable(String),
`edi_relevant` Nullable(Bool),
`edi_relevant_group_wise` Nullable(Bool),
`edi_relevant_row_wise` Nullable(Bool),
`MonthNo` Nullable(String),
`CompanyOfficeDB` Nullable(String),
`EX_EDI_Timeliness_Update` String,
`IM_EDI_Received_Is_Processed_Update` String
)
AS SELECT
CAST(coalesce(edi_origin_agt_is_dprhenus_member,
false) AND coalesce(edi_destination_agt_is_dprhenus_member,
false) AND coalesce(is_mainhaul,
false),
'Bool') AS EDI_relevant_Mike,
ifNull(arrayStringConcat(arraySlice(splitByChar(' ',
shipper_name),
1,
2),
' '),
'') AS Shipper_Name_Shorten,
ifNull(arrayStringConcat(arraySlice(splitByChar(' ',
consignee_name),
1,
2),
' '),
'') AS Consignee_Name_Shorten,
*,
substring(month_year,
1,
2) AS MonthNo,
concat(substring(datapool_id,
1,
4),
'-',
substring(replaceOne(dw_db_name,
'ROCSPROD',
''),
1,
2)) AS CompanyOfficeDB,
multiIf(edi_relevant = true,
multiIf((import_export = 'Export') AND (lower(modality) = 'ocean') AND ((atd IS NOT NULL) OR (etd IS NOT NULL)),
if(today() <= (coalesce(atd,
etd) + toIntervalDay(7)),
'On time',
'Delayed'),
(import_export = 'Export') AND (lower(modality) = 'air') AND ((atd IS NOT NULL) OR (etd IS NOT NULL)),
if(today() <= coalesce(atd,
etd),
'On time',
'Delayed'),
import_export = 'Export',
'NoInfo',
'N/A'),
'N/A') AS EX_EDI_Timeliness_Update,
multiIf(edi_relevant = true,
multiIf(import_export = 'Import',
multiIf((gsis_id IS NULL) OR (trimBoth(gsis_id) = ''),
'SystemError',
(sumIf(1,
import_export = 'Import') OVER (PARTITION BY gsis_id) > 0) AND (sumIf(1,
import_export = 'Export') OVER (PARTITION BY gsis_id) > 0),
'Created from EDI',
(sumIf(1,
import_export = 'Import') OVER (PARTITION BY gsis_id) > 1) AND (sumIf(1,
import_export = 'Export') OVER (PARTITION BY gsis_id) = 0),
'Invalid',
'Not created from EDI'),
'N/A'),
'N/A') AS IM_EDI_Received_Is_Processed_Update
FROM xxxxxxxx_db.yyyyyyyy_view;- Sample data for all these tables, use clickhouse-obfuscator if necessary
Reactions are currently unavailable
