[ https://issues.apache.org/jira/browse/HIVE-13349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15250587#comment-15250587 ]
Hari Sankar Sivarama Subramaniyan commented on HIVE-13349: ---------------------------------------------------------- [~alangates] 1. Agree that the naming for the structs should have been better. SQLPrimaryKey = SQLPrimaryKeyColumn and SQLForeignKey = SQLForeignKeyColumn. Hence they are passed as lists since there can be multiple columns. Agree with the redundancy here, this is a trade-off for creating an intermediate structure which should be mapped to a MConstraint at the server side. The columns can be distinguisied using the key_seq values. We expect the client to : 1. Send the key_seq correctly (1, 2, 3, ..) for the 1st, 2nd, 3rd, columns etc in the primary key. This position is important while retreiving the constraints. 2. Send the key_seq in order while creating the table. for e.g. in case of foreign keys - f1 = (t1.a, t1.b) f2 = (t1.c, t1.d) we expect the list (column name, key seq) to be as follows : ((t1.a, 1), (t1.b, 2), (t1.c, 1) (t1.d, 2)) . This way each "composite foreign key" is a sublist starting with 1 as the key sequence. In case of foreign keys with same table, the above 2 restrictions are used to distinguish the foreign key each struct belongs to. While retreiving the keys, the constraint name can be used to distinguish the foreign key each struct belongs to. Although, in some of my initial patches, the keys were part of the table struct, they were moved to a separate MConstraint model to avoid Table table join with Constraint table each time the Table is retrieved. Hence the need to create create_table_with_constraints as a separate API. Thanks Hari > Metastore Changes : API calls for retrieving primary keys and foreign keys > information > -------------------------------------------------------------------------------------- > > Key: HIVE-13349 > URL: https://issues.apache.org/jira/browse/HIVE-13349 > Project: Hive > Issue Type: Sub-task > Components: CBO, Logical Optimizer > Reporter: Hari Sankar Sivarama Subramaniyan > Assignee: Hari Sankar Sivarama Subramaniyan > Fix For: 2.1.0 > > Attachments: 13449.2.patch, HIVE-13349.1.patch, HIVE-13349.3.patch, > HIVE-13349.4.patch, HIVE-13349.5.patch, HIVE-13349.6.patch, HIVE-13349.7.patch > > -- This message was sent by Atlassian JIRA (v6.3.4#6332)