Skip to content

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

@linux-wizard

Description

@linux-wizard

Describe the bug

It seems that long strings are not correctly parsed when using queries parameters

Image

Steps to reproduce

  1. In PowerBi Desktop, create a table visualization
  2. Select a text value for which the string is more than 24 characters in the table
  3. start to drill through from this value
  4. the report will fail
  5. 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:
Image

ClickHouse server

  • ClickHouse Server version: 24.11
  • ClickHouse Server non-default settings, if any:
  • CREATE TABLE statements 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;

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions