{"record":{"id":"e89becffd81bbc92","repo":"infiniflow/ragflow","slug":"sql-for-exesql-must-not-be-empty","errorCode":null,"errorMessage":"SQL for `ExeSQL` MUST not be empty.","messagePattern":"SQL for `ExeSQL` MUST not be empty\\.","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"agent/tools/exesql.py","lineNumber":97,"sourceCode":"            from decimal import Decimal\n            import math\n\n            if isinstance(obj, float):\n                # Handle NaN and Infinity which are not valid JSON values\n                if math.isnan(obj) or math.isinf(obj):\n                    return None\n                return obj\n            if isinstance(obj, Decimal):\n                return float(obj)  # 或 str(obj)\n            elif isinstance(obj, dict):\n                return {k: convert_decimals(v) for k, v in obj.items()}\n            elif isinstance(obj, list):\n                return [convert_decimals(item) for item in obj]\n            return obj\n\n        sql = kwargs.get(\"sql\")\n        if not sql:\n            raise Exception(\"SQL for `ExeSQL` MUST not be empty.\")\n\n        if self.check_if_canceled(\"ExeSQL processing\"):\n            return\n\n        vars = self.get_input_elements_from_text(sql)\n        args = {}\n        for k, o in vars.items():\n            args[k] = o[\"value\"]\n            if not isinstance(args[k], str):\n                try:\n                    args[k] = json.dumps(args[k], ensure_ascii=False)\n                except Exception:\n                    args[k] = str(args[k])\n            self.set_input_value(k, args[k])\n        sql = self.string_format(sql, args)\n\n        if self.check_if_canceled(\"ExeSQL processing\"):\n            return","sourceCodeStart":79,"sourceCodeEnd":115,"githubUrl":"https://github.com/infiniflow/ragflow/blob/554fb1133ac3861732235ad9c377eb5e0a770665/agent/tools/exesql.py#L79-L115","documentation":"Error \"SQL for `ExeSQL` MUST not be empty.\" thrown in infiniflow/ragflow.","triggerScenarios":"Thrown at agent/tools/exesql.py:97 when the library encounters an invalid state.","commonSituations":"The ExeSQL tool is called with an empty or whitespace-only SQL string, often from a missing template variable; validating the SQL before execution prevents this error.","solutions":["Provide a non-empty SQL statement for the ExeSQL tool.","Check that the sql parameter is passed and not blank after trimming."],"exampleFix":"sql = 'SELECT id, name FROM users LIMIT 10'","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"554fb1133ac3861732235ad9c377eb5e0a770665","analyzedAt":"2026-08-15T09:20:16.380Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}