How can I workaround Malformed message: Too many header fields error?
After executing a SQL query, I'm getting "Too many header fields" error.
nanodbc/nanodbc.cpp:1655: HY000: Malformed message: Too many header fields
I googled it but I couldn't figure out what's this Too many header fields means.
Could you elaborate on what does the error means and the possible workaround for this?
In the ODBC trace log file, I see below:
Rserve 2b34-2c98 ENTER SQLSetStmtAttr
SQLHSTMT 0x000000000E4E2270
SQLINTEGER 0 <SQL_ATTR_QUERY_TIMEOUT>
SQLPOINTER 0
SQLINTEGER 0
Rserve 2b34-2c98 EXIT SQLSetStmtAttr with return code 0 (SQL_SUCCESS)
SQLHSTMT 0x000000000E4E2270
SQLINTEGER 0 <SQL_ATTR_QUERY_TIMEOUT>
SQLPOINTER 0
SQLINTEGER 0
Rserve 2b34-2c98 ENTER SQLNumParams
HSTMT 0x000000000E4E2270
SWORD * 0x000000000061564E
Rserve 2b34-2c98 EXIT SQLNumParams with return code 0 (SQL_SUCCESS)
HSTMT 0x000000000E4E2270
SWORD * 0x000000000061564E (0)
Rserve 2b34-2c98 ENTER SQLFreeStmt
HSTMT 0x000000000E4E2270
UWORD 0 <SQL_CLOSE>
Rserve 2b34-2c98 EXIT SQLFreeStmt with return code 0 (SQL_SUCCESS)
HSTMT 0x000000000E4E2270
UWORD 0 <SQL_CLOSE>
Rserve 2b34-2c98 ENTER SQLSetStmtAttr
SQLHSTMT 0x000000000E4E2270
SQLINTEGER 22 <SQL_ATTR_PARAMSET_SIZE>
SQLPOINTER 1
SQLINTEGER 0
Rserve 2b34-2c98 EXIT SQLSetStmtAttr with return code 0 (SQL_SUCCESS)
SQLHSTMT 0x000000000E4E2270
SQLINTEGER 22 <SQL_ATTR_PARAMSET_SIZE>
SQLPOINTER 1
SQLINTEGER 0
Rserve 2b34-2c98 ENTER SQLSetStmtAttr
SQLHSTMT 0x000000000E4E2270
SQLINTEGER 0 <SQL_ATTR_QUERY_TIMEOUT>
SQLPOINTER 0
SQLINTEGER 0
Rserve 2b34-2c98 EXIT SQLSetStmtAttr with return code 0 (SQL_SUCCESS)
SQLHSTMT 0x000000000E4E2270
SQLINTEGER 0 <SQL_ATTR_QUERY_TIMEOUT>
SQLPOINTER 0
SQLINTEGER 0
Rserve 2b34-2c98 ENTER SQLExecute
HSTMT 0x000000000E4E2270
Rserve 2b34-2c98 EXIT SQLExecute with return code -1 (SQL_ERROR)
HSTMT 0x000000000E4E2270
DIAG [HY000] Malformed message: Too many header fields (1)
SQL DBMS VER: "01.00.0000" SQL_ODBC_VER: "03.80.0000" SQL_DRIVER_VER: "1.1.9.20201226"
This error comes from the HTTP client implementation code.
Can you reproduce the same query using curl in verbose mode, it should show a lot of HTTP headers received from the ClickHouse server. Post them here.
Thank you for the update. So it seems this error happens when I try the relatively long SQL query but works ok for a short SQL query. Do you have a limit of the SQL query length?
I'll post a curl output when it's ready.