From: Alexander Turenko <alexander.turenko@tarantool.org> To: Sergei Kalashnikov <ztarvos@gmail.com> Cc: tarantool-patches@freelists.org Subject: [tarantool-patches] Re: [PATCH] jdbc: fix primary keys meta retrieval Date: Mon, 1 Oct 2018 16:04:27 +0300 [thread overview] Message-ID: <20181001130427.zlugbqlg3madlo7r@tkn_work_nb> (raw) In-Reply-To: <1537954408-3275-1-git-send-email-ztarvos@gmail.com> Hi! Sorry for the late response. From [1]: > Retrieves a description of the given table's primary key columns. They are ordered by COLUMN_NAME. That is strange, but that is. Maybe we should also check the standard. [1]: https://docs.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html#getPrimaryKeys(java.lang.String,%20java.lang.String,%20java.lang.String) Tests are ok for me. Maybe we also should set some defined behaviour for the case when 'catalog' and 'schema' are given for getPrimaryKeys. I think we should ignore them and return nulls in TABLE_CAT and TABLE_SCHEM. I think we should have corresponding test case. More comment are inline. WBR, Alexander Turenko. On Wed, Sep 26, 2018 at 12:33:28PM +0300, Sergei Kalashnikov wrote: > Fixed parsing primary keys metadata response. > Updated integration tests. > > Closes #41 > --- > https://github.com/tarantool/tarantool-java/issues/41 > https://github.com/ztarvos/tarantool-java/commits/gh-41-fix-jdbc-pk-meta > > .../org/tarantool/jdbc/SQLDatabaseMetadata.java | 8 +++--- > .../java/org/tarantool/jdbc/AbstractJdbcIT.java | 11 ++++---- > .../org/tarantool/jdbc/JdbcDatabaseMetaDataIT.java | 32 ++++++++++++++++++++-- > 3 files changed, 40 insertions(+), 11 deletions(-) > > diff --git a/src/main/java/org/tarantool/jdbc/SQLDatabaseMetadata.java b/src/main/java/org/tarantool/jdbc/SQLDatabaseMetadata.java > index e43bcdc..790bbe7 100644 > --- a/src/main/java/org/tarantool/jdbc/SQLDatabaseMetadata.java > +++ b/src/main/java/org/tarantool/jdbc/SQLDatabaseMetadata.java > @@ -774,12 +774,12 @@ public class SQLDatabaseMetadata implements DatabaseMetaData { > List<Map<String, Object>> fields = (List<Map<String, Object>>) space.get(FORMAT_IDX); > List<List<Object>> indexes = (List<List<Object>>) connection.connection.select(_VINDEX, 0, Arrays.asList(space.get(SPACE_ID_IDX), 0), 0, 1, 0); > List<Object> primaryKey = indexes.get(0); > - List<List<Object>> parts = (List<List<Object>>) primaryKey.get(INDEX_FORMAT_IDX); > + List<Map<String, Object>> parts = (List<Map<String, Object>>) primaryKey.get(INDEX_FORMAT_IDX); I think we should check the type to give a proper error message in the case when a user give 'native' tarantool space in parameters. Corresponding test case should be added. Don't sure how it will be wrapped in Java, I just about the following: 6th field of _vspace tuple for a 'native' space: [[0, 'unsigned'], [1, 'unsigned']] (Don't sure whether it is list or map in the binary protocol; likely map.) 6th field of _vspace tuple for a sql space: [{'sort_order': 'asc', 'type': 'scalar', 'field': 0, 'nullable_action': 'abort', 'is_nullable': false}] What would going on if a user give us 'native' space name? > for (int i = 0; i < parts.size(); i++) { > - List<Object> part = parts.get(i); > - int ordinal = ((Number) part.get(0)).intValue(); > + Map<String, Object> part = parts.get(i); > + int ordinal = ((Number) part.get("field")).intValue(); > String column = (String) fields.get(ordinal).get("name"); Just note: it is not mandatory to space format fields to have a name, but SQL spaces have them. Maybe a comment needed here. > - rows.add(Arrays.asList(table, column, i + 1, "primary", primaryKey.get(NAME_IDX))); > + rows.add(Arrays.asList(table, column, i + 1, primaryKey.get(NAME_IDX))); > } > } > return new SQLNullResultSet((JDBCBridge.mock(
next prev parent reply other threads:[~2018-10-01 13:04 UTC|newest] Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-09-26 9:33 [tarantool-patches] " Sergei Kalashnikov 2018-10-01 13:04 ` Alexander Turenko [this message] 2018-10-02 17:09 ` [tarantool-patches] " Sergei Kalashnikov 2018-10-09 9:21 ` Sergei Kalashnikov 2018-10-09 15:40 ` Alexander Turenko 2018-10-10 8:14 ` Sergei Kalashnikov 2018-10-10 10:19 ` Alexander Turenko 2018-10-10 11:09 ` Sergei Kalashnikov 2018-10-10 12:50 ` Alexander Turenko 2018-10-10 13:19 ` Sergei Kalashnikov 2018-10-10 13:40 ` Alexander Turenko
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20181001130427.zlugbqlg3madlo7r@tkn_work_nb \ --to=alexander.turenko@tarantool.org \ --cc=tarantool-patches@freelists.org \ --cc=ztarvos@gmail.com \ --subject='[tarantool-patches] Re: [PATCH] jdbc: fix primary keys meta retrieval' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox