[
https://issues.apache.org/jira/browse/PHOENIX-3357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15553604#comment-15553604
]
James Taylor commented on PHOENIX-3357:
---------------------------------------
We need to preserve the original order because later a column can be added to
any of the column families. In that case, the ordinal position of the new
column must be at the end. Otherwise, people would need to change their code if
they depend on the position.
> Issue with column re-ordering in column family support for Calcite-Phoenix
> --------------------------------------------------------------------------
>
> Key: PHOENIX-3357
> URL: https://issues.apache.org/jira/browse/PHOENIX-3357
> Project: Phoenix
> Issue Type: Sub-task
> Reporter: Maryann Xue
> Assignee: Maryann Xue
> Labels: calcite
>
> Found another issue here. Right now we re-order our columns so that columns
> from the same family can be grouped together and that column family can be
> taken as a structured type. So OrderByIT, there's a test regression in
> https://builds.apache.org/job/Phoenix-calcite/20/#showFailuresLink, because
> it has a table definition like:
> {code}
> CREATE TABLE t
> (a_string varchar not null, cf1.a integer, cf1.b varchar, col1 integer,
> cf2.c varchar, cf2.d integer, col2 integer
> CONSTRAINT pk PRIMARY KEY (a_string))
> {code}
> So when we implement PhoenixTable.getRowType(), the table definition is
> actually changed from "a_string, cf1.a, cf1.b, col1, cf2.c, cf2.d, col2" into
> "a_string, cf1.a, cf1.b, col1, col2 cf2.c, cf2.d". As a result "UPSERT INTO
> T" expects a different column order (data type order) for parameters, and we
> got an Exception. This happens just because the column re-ordering and has
> nothing to do with the changes for PHOENIX-2679 yet. UPSERT will get more
> complicated once we apply PHOENIX-2679 changes, which means there's more work
> to do for UPSERT for column family support. But regarding this problem alone,
> would you think it would make sense to add a check in Phoenix DDL that
> requires users to put column definitions from the same family together, like
> in this case, only allows "a_string, cf1.a, cf1.b, col1, col2 cf2.c, cf2.d",
> [~jamestaylor]?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)