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
Notes
The query is working without the NOCYCLE keyword.
Fully reproducible code snippet Oracle DB
CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
employee_name VARCHAR2(100),
manager_id NUMBER
);
-- Insertion de données de test
INSERT INTO employees (employee_id, employee_name, manager_id) VALUES (1, 'John Doe', NULL);
INSERT INTO employees (employee_id, employee_name, manager_id) VALUES (2, 'Jane Smith', 1);
INSERT INTO employees (employee_id, employee_name, manager_id) VALUES (3, 'Alice Johnson', 2);
INSERT INTO employees (employee_id, employee_name, manager_id) VALUES (4, 'Bob Brown', 1);
INSERT INTO employees (employee_id, employee_name, manager_id) VALUES (5, 'Eva Lee', 4);
Python:
import sqlglot
sqlglot.parse_one(sql="""SELECT employee_id, employee_name, manager_id
FROM test_employees
START WITH manager_id IS NULL
CONNECT BY NOCYCLE PRIOR employee_id = manager_id;""", read='oracle')
Error message
Traceback (most recent call last):
File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevconsole.py", line 364, in runcode
coro = func()
^^^^^^
File "", line 1, in
File "/usr/local/lib/python3.11/site-packages/sqlglot/init.py", line 124, in parse_one
result = dialect.parse(sql, **opts)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/dialects/dialect.py", line 490, in parse
return self.parser(**opts).parse(self.tokenize(sql), sql)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 1163, in parse
return self._parse(
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 1232, in _parse
self.raise_error("Invalid expression / Unexpected token")
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 1273, in raise_error
raise error
sqlglot.errors.ParseError: Invalid expression / Unexpected token. Line 4, Col: 24.
_id, employee_name, manager_id
FROM test_employees
START WITH manager_id IS NULL
CONNECT BY NOCYCLE PRIOR employee_id = manager_id;
Version
sqlglot 23.2.1.dev9
Notes
The query is working without the NOCYCLE keyword.
Fully reproducible code snippet
Oracle DB
CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
employee_name VARCHAR2(100),
manager_id NUMBER
);
-- Insertion de données de test
INSERT INTO employees (employee_id, employee_name, manager_id) VALUES (1, 'John Doe', NULL);
INSERT INTO employees (employee_id, employee_name, manager_id) VALUES (2, 'Jane Smith', 1);
INSERT INTO employees (employee_id, employee_name, manager_id) VALUES (3, 'Alice Johnson', 2);
INSERT INTO employees (employee_id, employee_name, manager_id) VALUES (4, 'Bob Brown', 1);
INSERT INTO employees (employee_id, employee_name, manager_id) VALUES (5, 'Eva Lee', 4);
Python:
import sqlglot
sqlglot.parse_one(sql="""SELECT employee_id, employee_name, manager_id
FROM test_employees
START WITH manager_id IS NULL
CONNECT BY NOCYCLE PRIOR employee_id = manager_id;""", read='oracle')
Error message
Traceback (most recent call last):
File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevconsole.py", line 364, in runcode
coro = func()
^^^^^^
File "", line 1, in
File "/usr/local/lib/python3.11/site-packages/sqlglot/init.py", line 124, in parse_one
result = dialect.parse(sql, **opts)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/dialects/dialect.py", line 490, in parse
return self.parser(**opts).parse(self.tokenize(sql), sql)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 1163, in parse
return self._parse(
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 1232, in _parse
self.raise_error("Invalid expression / Unexpected token")
File "/usr/local/lib/python3.11/site-packages/sqlglot/parser.py", line 1273, in raise_error
raise error
sqlglot.errors.ParseError: Invalid expression / Unexpected token. Line 4, Col: 24.
_id, employee_name, manager_id
FROM test_employees
START WITH manager_id IS NULL
CONNECT BY NOCYCLE PRIOR employee_id = manager_id;
** Oracle Documentation **
https://docs.oracle.com/cd/B13789_01/server.101/b10759/queries003.htm
The text was updated successfully, but these errors were encountered: