-
Notifications
You must be signed in to change notification settings - Fork 603
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bug: examples broken on mssql backend #9095
Comments
Hmm, yeah, something funky is definitely happening here. The create table SQL we're generating (this is for the starwars example): is
Definitely don't need or want the |
hmm, wait, I guess that's the mssql syntax for temporary tables? digging in a bit more |
I think this is a sqlglot bug, although we may be constructing the expression incorrectly. [nav] In [14]: query = """CREATE TABLE #crunch_no_brackets ([name] VARCHAR(max))"""
[ins] In [15]: with con.raw_sql(query) as c:
...: pass
[ins] In [16]: query = """CREATE TABLE [brackets_no_crunch] ([name] VARCHAR(max))"""
[ins] In [17]: with con.raw_sql(query) as c:
...: pass
[ins] In [18]: query = """CREATE TABLE #[brackets_with_crunch] ([name] VARCHAR(max))"""
[ins] In [19]: with con.raw_sql(query) as c:
...: pass
---------------------------------------------------------------------------
ProgrammingError Traceback (most recent call last)
Cell In[19], line 1
----> 1 with con.raw_sql(query) as c:
2 pass
File ~/github.com/ibis-project/ibis/ibis/backends/mssql/__init__.py:279, in Backend.raw_sql(self, query, **kwargs)
276 cursor = con.cursor()
278 try:
--> 279 cursor.execute(query, **kwargs)
280 except Exception:
281 con.rollback()
ProgrammingError: ('42000', "[42000] [FreeTDS][SQL Server]Incorrect syntax near 'brackets_with_crunch'. (102) (SQLExecDirectW)") |
I think we're doing something wrong: [ins] In [25]: exp = sg.parse_one("CREATE TEMPORARY TABLE temptest (name VARCHAR);",
...: dialect="duckdb")
[ins] In [26]: exp
Out[26]:
Create(
this=Schema(
this=Table(
this=Identifier(this=temptest, quoted=False)),
expressions=[
ColumnDef(
this=Identifier(this=name, quoted=False),
kind=DataType(this=Type.VARCHAR, nested=False))]),
kind=TABLE,
properties=Properties(
expressions=[
TemporaryProperty()]))
[ins] In [27]: exp.sql(dialect="mssql")
Out[27]: 'CREATE TABLE #temptest (name VARCHAR)' |
Ok, I think that there are some edge-cases that we are definitely not handling correctly. That said, there is also a sqlglot bug: [ins] In [1]: import sqlglot as sg
[ins] In [2]: exp = sg.parse_one(
...: "CREATE TEMPORARY TABLE 'temptest' (name VARCHAR);", dialect="duckd
...: b"
...: )
[ins] In [3]: exp
Out[3]:
Create(
this=Schema(
this=Table(
this=Identifier(this=temptest, quoted=True)),
expressions=[
ColumnDef(
this=Identifier(this=name, quoted=False),
kind=DataType(this=Type.VARCHAR, nested=False))]),
kind=TABLE,
properties=Properties(
expressions=[
TemporaryProperty()]))
[ins] In [4]: exp.sql(dialect="tsql")
Out[4]: 'CREATE TABLE #[temptest] (name VARCHAR)' That last should be |
FYI the temp table fix has been deployed with 23.13.0. |
… dataframe (#9094) ## Description of changes Examples were broken on MySQL backend and Postgres backend when there are null values in a numeric column. Druid, PySpark, RW don't support examples. - Exasol - did not test - Flink - broken - Impala - did not test - MSSQL - broken #9095 - MySQL - fixed - Oracle - did not test - PostgreSQL - fixed - Snowflake - did not test ## Issues closed #8792 --------- Co-authored-by: Chloe He <[email protected]>
What happened?
Examples are broken on mssql backend.
Seems to be broken on all the examples.
What version of ibis are you using?
main
What backend(s) are you using, if any?
mssql
Relevant log output
No response
Code of Conduct
The text was updated successfully, but these errors were encountered: