-
Notifications
You must be signed in to change notification settings - Fork 608
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
refactor(exasol): port to sqlglot #8032
Conversation
@pytest.mark.broken( | ||
["exasol"], | ||
raises=ExaQueryError, | ||
reason="database can't handle UTC timestamps in DataFrames", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This might be fixable if we get rid of import_from_pandas
and do the inserts ourselves.
) | ||
@pytest.mark.notimpl(["exasol"], raises=ExaQueryError) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a nit and unrelated to this pr is that the exception name ExaQueryError
is not consistent with the rest of the error types having full backend name as the prefix, so I think it should be ExasolQueryError
name = _NAMES.get(con.name, "functional_alltypes") | ||
quoted = getattr(getattr(con, "compiler", None), "quoted", True) | ||
dialect = _IBIS_TO_SQLGLOT_DIALECT.get(con.name, con.name) | ||
cols = [ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Required due to backend specific quoting?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. This effectively makes identifiers case sensitive
@@ -214,7 +213,9 @@ def test_table_to_parquet(tmp_path, backend, awards_players): | |||
|
|||
df = pd.read_parquet(outparquet) | |||
|
|||
backend.assert_frame_equal(awards_players.to_pandas(), df) | |||
backend.assert_frame_equal( | |||
awards_players.to_pandas().fillna(pd.NA), df.fillna(pd.NA) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Blaah.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Phase 2 after the port?? 😂
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably, we should clean up the output coercions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice!
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.
This PR ports exasol to sqlglot instead of sqlalchemy.