You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Attempting to use JSON_OBJECT(*) in Oracle results in a ParseError.
Fully reproducible code snippet
Please include a fully reproducible code snippet or the input sql, dialect, and expected output.
Python 3.11.3 (main, Apr 7 2023, 19:25:52) [Clang 14.0.0 (clang-1400.0.29.202)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlglot
>>> sqlglot.parse_one("SELECT JSON_OBJECT(*) FROM DUAL", read="oracle")
Result:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.11/site-packages/sqlglot/__init__.py", line 158, in parse_one
result = dialect.parse(sql, **opts)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/dialects/dialect.py", line 217, in parse
return self.parser(**opts).parse(self.tokenize(sql), sql)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 856, in parse
return self._parse(
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 922, in _parse
expressions.append(parse_method(self))
^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 1112, in _parse_statement
expression = self._parse_set_operations(expression) if expression else self._parse_select()
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 1877, in _parse_select
expressions = self._parse_csv(self._parse_expression)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 4135, in _parse_csv
parse_result = parse_method()
^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 2722, in _parse_expression
return self._parse_alias(self._parse_conjunction())
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 2725, in _parse_conjunction
return self._parse_tokens(self._parse_equality, self.CONJUNCTION)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 4149, in _parse_tokens
this = parse_method()
^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 2728, in _parse_equality
return self._parse_tokens(self._parse_comparison, self.EQUALITY)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 4149, in _parse_tokens
this = parse_method()
^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 2731, in _parse_comparison
return self._parse_tokens(self._parse_range, self.COMPARISON)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 4149, in _parse_tokens
this = parse_method()
^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 2734, in _parse_range
this = self._parse_bitwise()
^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 2831, in _parse_bitwise
this = self._parse_term()
^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 2852, in _parse_term
return self._parse_tokens(self._parse_factor, self.TERM)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 4149, in _parse_tokens
this = parse_method()
^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 2855, in _parse_factor
return self._parse_tokens(self._parse_unary, self.FACTOR)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 4149, in _parse_tokens
this = parse_method()
^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 2860, in _parse_unary
return self._parse_at_time_zone(self._parse_type())
^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 2869, in _parse_type
this = self._parse_column()
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/dialects/oracle.py", line 79, in _parse_column
column = super()._parse_column()
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 3020, in _parse_column
this = self._parse_field()
^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 3124, in _parse_field
or self._parse_function(anonymous=anonymous_func)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 3156, in _parse_function
this = parser(self)
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 716, in <lambda>
"JSON_OBJECT": lambda self: self._parse_json_object(),
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 3752, in _parse_json_object
expressions = self._parse_csv(self._parse_json_key_value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 4135, in _parse_csv
parse_result = parse_method()
^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 3749, in _parse_json_key_value
return self.expression(exp.JSONKeyValue, this=key, expression=value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 986, in expression
return self.validate_expression(instance)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 1006, in validate_expression
self.raise_error(error_message)
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 966, in raise_error
raise error
sqlglot.errors.ParseError: Required keyword: 'expression' missing for <class 'sqlglot.expressions.JSONKeyValue'>. Line 1, Col: 21.
SELECT JSON_OBJECT(*) FROM DUAL
Attempting to use JSON_OBJECT(*) in Oracle results in a ParseError.
Fully reproducible code snippet
Please include a fully reproducible code snippet or the input sql, dialect, and expected output.
Result:
Official Documentation
https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/JSON_OBJECT.html
Also,
https://docs.oracle.com/en/database/oracle/oracle-database/21/adjsn/generation.html#GUID-1084A518-A44A-4654-A796-C1DD4D8EC2AA
The text was updated successfully, but these errors were encountered: