{"record":{"id":"dfed34409dc86786","repo":"t8y2/dbx","slug":"read-hive-initfile-statement-result-w-dfed34","errorCode":null,"errorMessage":"read Hive initFile statement result: %w","messagePattern":"read Hive initFile statement result: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/hive-go/main.go","lineNumber":381,"sourceCode":"\t\ttimeout += server.config.BrowserResponseTimeout\n\t}\n\treturn timeout\n}\n\nfunc runHiveInitStatements(ctx context.Context, connection *sql.Conn, statements []string, fetchSize int) error {\n\tfor _, statement := range statements {\n\t\trows, _, hasResultSet, err := executeHiveStatement(ctx, connection, statement, fetchSize)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"execute Hive initFile statement: %w\", err)\n\t\t}\n\t\tif !hasResultSet {\n\t\t\tcontinue\n\t\t}\n\t\tfor rows.Next() {\n\t\t}\n\t\tif rowsErr := rows.Err(); rowsErr != nil {\n\t\t\t_ = rows.Close()\n\t\t\treturn fmt.Errorf(\"read Hive initFile statement result: %w\", rowsErr)\n\t\t}\n\t\tif closeErr := rows.Close(); closeErr != nil {\n\t\t\treturn fmt.Errorf(\"close Hive initFile statement result: %w\", closeErr)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (server *server) dispatch(method string, params map[string]json.RawMessage) (any, bool, error) {\n\tswitch method {\n\tcase \"validate_connection\":\n\t\treturn map[string]bool{\"ok\": true}, false, server.validateConnection()\n\tcase \"connection_info\":\n\t\tresult, err := server.connectionInfo()\n\t\treturn result, false, err\n\tcase \"list_databases\":\n\t\tresult, err := server.listDatabases()\n\t\treturn result, false, err","sourceCodeStart":363,"sourceCodeEnd":399,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/hive-go/main.go#L363-L399","documentation":"After executing an initFile statement that returned a result set, the driver drains it with rows.Next() and then checks rows.Err(). This error wraps any iteration/driver-level error that occurred while consuming that result set during connection initialization, aborting openConnection.","triggerScenarios":"An initFile statement that produces a result set (e.g. SELECT or SHOW) whose row iteration fails: network drop mid-result, HiveServer2 operation cancelled or timed out, or a driver-level fetch error while pulling remaining rows.","commonSituations":"Large initFile result sets hitting fetchSize pagination across an unstable network; a query in the initFile being killed server-side; transient HiveServer2 restart during connect.","solutions":["Check the wrapped cause after 'read Hive initFile statement result:' to identify the transport or server error","Remove result-set-producing statements from the initFile when their output isn't needed","Retry the connection — the failure is often transient network/transport related","Increase the connect timeout if large results are being drained at init time"],"exampleFix":"// before: init statement returns big result set\nSELECT * FROM audit_log;\n// after: no result set at init time\nINSERT OVERWRITE TABLE / SELECT ... LIMIT 0; or remove the SELECT","handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"if err != nil && strings.HasPrefix(err.Error(), \"read Hive initFile statement result:\") {\n    return retryWithBackoff(ctx, 3, openConnection)\n}","preventionTips":["Avoid SELECT statements in initFile; use SET/USE/DDL only","Set conservative fetchSize for init statements","Monitor HiveServer2 logs for killed operations matching connection times"],"tags":["go","hive","initialization","network"],"backgroundTag":"result-set-read-failure","analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}