{"record":{"id":"2ea30908eb882759","repo":"t8y2/dbx","slug":"iotdb-show-version-returned-no-rows","errorCode":null,"errorMessage":"IoTDB SHOW VERSION returned no rows","messagePattern":"IoTDB SHOW VERSION returned no rows","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"agents/drivers/iotdb/query.go","lineNumber":39,"sourceCode":"\tcolumnTypes []string\n\tprefetched  []any\n\tremaining   int\n}\n\ntype queryPageRead struct {\n\tstate     *querySession\n\trows      [][]any\n\thasMore   bool\n\ttruncated bool\n}\n\nfunc (s *server) validateConnection() error {\n\tvalues, err := s.queryValues(\"SHOW VERSION\", \"\", 1, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif len(values.Rows) == 0 {\n\t\treturn errors.New(\"IoTDB SHOW VERSION returned no rows\")\n\t}\n\treturn nil\n}\n\nfunc (s *server) executeQuery(options queryOptions) (queryResult, error) {\n\tstarted := time.Now()\n\tsql := trimStatementSQL(options.SQL)\n\tif sql == \"\" {\n\t\treturn queryResult{}, errors.New(\"sql is required\")\n\t}\n\tif !isQueryStatement(sql) {\n\t\tif err := s.executeNonQuery(sql, effectiveDatabase(options), options.TimeoutSecs); err != nil {\n\t\t\treturn queryResult{}, err\n\t\t}\n\t\treturn queryResult{\n\t\t\tColumns:         []string{},\n\t\t\tColumnTypes:     []string{},\n\t\t\tRows:            [][]any{},","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/t8y2/dbx/blob/c0390bff16418b651f4728520d99adf8ce48829a/agents/drivers/iotdb/query.go#L21-L57","documentation":"validateConnection runs 'SHOW VERSION' expecting at least one row as proof the session is live. An empty result means the query succeeded structurally but the server returned no data, so the connection cannot be validated.","triggerScenarios":"Calling validateConnection against a server whose SHOW VERSION returns zero rows (unexpected server build/protocol behavior), or a session in a state where queries complete but return empty sets.","commonSituations":"Connecting to an incompatible IoTDB server version; a proxy/gateway swallowing the result rows; validating immediately after a server restart with a stale session.","solutions":["Run 'SHOW VERSION' in the IoTDB CLI to confirm the server returns a version row.","Reconnect/reopen the session (drop and re-establish) to clear any stale session state.","Check server and driver version compatibility; upgrade the driver or server so SHOW VERSION semantics match."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"err := s.validateConnection()\nif err != nil {\n\tif strings.Contains(err.Error(), \"SHOW VERSION returned no rows\") {\n\t\t// reconnect once, then retry validation\n\t\tif rerr := s.reconnect(); rerr == nil {\n\t\t\terr = s.validateConnection()\n\t\t}\n\t}\n\tif err != nil { return err }\n}","preventionTips":["Re-establish sessions after server restarts instead of reusing stale connections.","Smoke-test 'SHOW VERSION' via the IoTDB CLI when provisioning servers.","Keep driver and server versions aligned to expected SHOW VERSION behavior."],"tags":["iotdb","sql","connection-validation","server-compatibility"],"backgroundTag":"unexpected-empty-result","analyzedSha":"c0390bff16418b651f4728520d99adf8ce48829a","analyzedAt":"2026-09-05T23:05:10.900Z","contentChangedAt":"2026-09-05T23:05:10.900Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}