提交 6c21d32d authored 作者: noelgrandin's avatar noelgrandin

Fix Issue 449: Postgres Serial data type should not automatically be marked as primary key

上级 477322e8
......@@ -26,6 +26,7 @@ Change Log
</li><li>Add support for CREATE TABLE TEST (ID BIGSERIAL) for PostgreSQL compatibility. Patch from Jesse Long.
</li><li>Add new collation command SET BINARY_COLLATION UNSIGNED, helps with people testing BINARY columns in MySQL mode.
</li><li>Fix issue #453, ABBA race conditions in TABLE LINK connection sharing.
</li><li>Fix Issue 449: Postgres Serial data type should not automatically be marked as primary key
</li></ul>
<h2>Version 1.3.171 (2013-03-17)</h2>
......
......@@ -81,6 +81,7 @@ import org.h2.engine.Constants;
import org.h2.engine.Database;
import org.h2.engine.DbObject;
import org.h2.engine.FunctionAlias;
import org.h2.engine.Mode;
import org.h2.engine.Procedure;
import org.h2.engine.Right;
import org.h2.engine.Session;
......@@ -3519,12 +3520,18 @@ public class Parser {
column = new Column(columnName, Value.LONG);
column.setOriginalSQL("IDENTITY");
parseAutoIncrement(column);
column.setPrimaryKey(true);
// PostgreSQL compatibility
if (!database.getMode().serialColumnIsNotPK) {
column.setPrimaryKey(true);
}
} else if (readIf("SERIAL")) {
column = new Column(columnName, Value.INT);
column.setOriginalSQL("SERIAL");
parseAutoIncrement(column);
column.setPrimaryKey(true);
// PostgreSQL compatibility
if (!database.getMode().serialColumnIsNotPK) {
column.setPrimaryKey(true);
}
} else {
column = parseColumnWithType(columnName);
}
......
......@@ -112,6 +112,12 @@ public class Mode {
* The function LOG() uses base 10 instead of E.
*/
public boolean logIsLogBase10;
/**
* SERIAL and BIGSERIAL columns are not automatically primary keys.
*/
public boolean serialColumnIsNotPK;
private final String name;
......@@ -165,6 +171,7 @@ public class Mode {
mode.supportOffsetFetch = true;
mode.systemColumns = true;
mode.logIsLogBase10 = true;
mode.serialColumnIsNotPK = true;
add(mode);
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论