[
https://issues.apache.org/jira/browse/PHOENIX-3298?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15533579#comment-15533579
]
James Taylor commented on PHOENIX-3298:
---------------------------------------
The ColumnDef object in Phoenix declares isNull as Boolean:
{code}
public class ColumnDef {
private final ColumnName columnDefName;
private final PDataType dataType;
private final Boolean isNull;
private final Integer maxLength;
private final Integer scale;
private boolean isPK;
private final SortOrder sortOrder;
private final boolean isArray;
private final Integer arrSize;
private final String expressionStr;
private final boolean isRowTimestamp;
ColumnDef(ColumnName columnDefName, String sqlTypeName, boolean isArray,
Integer arrSize, Boolean isNull, Integer maxLength,
Integer scale, boolean isPK, SortOrder sortOrder, String
expressionStr, boolean isRowTimestamp) {
{code}
We've got the following code in MetaDataClient that will flag the problematic
declaration:
{code}
if (isPK && !addingToPK && pkConstraint.getColumnNames().size() <=
1) {
if (def.isNull() && def.isNullSet()) {
throw new
SQLExceptionInfo.Builder(SQLExceptionCode.SINGLE_PK_MAY_NOT_BE_NULL)
.setColumnName(columnName).build().buildException();
}
isNull = false;
}
{code}
Can we declare the isNull as Boolean in parserImpls.ftl and leave it as null if
not set? Is SqlColumnDefNode derived from ColumnDef or does a translation occur
to it? Either way, if the ColumnDef isNull Boolean is set appropriately (null,
true, or false), I don't think there'll be an issue.
> Create Table: Single column primary key may not be null
> -------------------------------------------------------
>
> Key: PHOENIX-3298
> URL: https://issues.apache.org/jira/browse/PHOENIX-3298
> Project: Phoenix
> Issue Type: Sub-task
> Reporter: Eric Lomore
> Assignee: Eric Lomore
> Attachments: PHOENIX-3298-WIP
>
>
> Create table statements with a single column currently must have "NOT NULL"
> identifier to pass tests.
> Running this code results in failure
> {code}CREATE TABLE t (k VARCHAR PRIMARY KEY DESC){code}
> While this allows tests to pass
> {code}CREATE TABLE t (k VARCHAR NOT NULL PRIMARY KEY DESC){code}
> Must either enforce the not null condition and update test cases, or apply a
> fix.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)