Skip to content

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

Closed
findepi wants to merge 9 commits intoprestodb:masterfrom
findepi:findepi/jdbc-column-mapping
Closed

Let jdbc-based connectors control how data should be written and predicates pushed down#12151
findepi wants to merge 9 commits intoprestodb:masterfrom
findepi:findepi/jdbc-column-mapping

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