Skip to content
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

Let jdbc-based connectors control how data should be written and predicates pushed down #12151

Closed
wants to merge 9 commits into from
Closed

Let jdbc-based connectors control how data should be written and predicates pushed down #12151

wants to merge 9 commits into from

Conversation

findepi
Copy link
Contributor

@findepi findepi commented Dec 31, 2018

Today, a jdbc-based connector controls how data should be read from a ResultSet via ReadMapping definitions. However, writing is hard-coded in com.facebook.presto.plugin.jdbc.JdbcPageSink#appendColumn.
This expands the ReadMapping concept into ColumnMapping which controls both reading and writing.

WIP. TODO items:

  • fill the required methods for all existing connectors (as it is now, they don't even compile)
  • try to make the change backwards-compatible
  • cover predicate push down too
  • migrate in-house connectors to verify the change isn't breaking too much

cc @electrum

@findepi
Copy link
Contributor Author

findepi commented Dec 31, 2018

@electrum this doesn't fully compile yet (although postgresql and mysql connector tests should be passing). Feedback is more than welcome.

@findepi findepi changed the title Let jdbc-based connector control how data should be written [WIP] Let jdbc-based connectors control how data should be written and predicates pushed down Jan 3, 2019
@findepi
Copy link
Contributor Author

findepi commented Jan 3, 2019

No longer as a WIP

These types are not supported in
`com.facebook.presto.plugin.jdbc.JdbcPageSink#appendColumn`, so cannot
be written.

Since JDBC based connectors do not support CREATE TABLE except for
CREATE TABLE AS, it makes no sense to attempt to create columns we
cannot write to.

Note: attempt to support these types must be well test-covered on
per-database basis, so they should not be supported in a generic way
anyway.
No JDBC-based connector supports TIMESTAMP WITH TIME ZONE or TIME WITH
TIME ZONE, so no need to support predicate push down for these types.
WriteMapping captures how data should be written in a JDBC connector:

- what data type should be used in the remote database
- how the data should be bound to `PreparedStatement`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants