Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
cc0f5b06
Unverified
提交
cc0f5b06
authored
7 年前
作者:
Noel Grandin
提交者:
GitHub
7 年前
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1014 from katzyn/enum
Copy enumerators from table to view
上级
83e4f3bd
436f98e7
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
81 行增加
和
2 行删除
+81
-2
changelog.html
h2/src/docsrc/html/changelog.html
+2
-0
Operation.java
h2/src/main/org/h2/expression/Operation.java
+5
-1
TableView.java
h2/src/main/org/h2/table/TableView.java
+7
-1
enum.sql
h2/src/test/org/h2/test/scripts/datatypes/enum.sql
+67
-0
没有找到文件。
h2/src/docsrc/html/changelog.html
浏览文件 @
cc0f5b06
...
...
@@ -21,6 +21,8 @@ Change Log
<h2>
Next Version (unreleased)
</h2>
<ul>
<li>
Issue #1012: NPE when querying INFORMATION_SCHEMA.COLUMNS on a view that references an ENUM column
</li>
<li>
Issue #1010: MERGE USING table not found with qualified table
</li>
<li>
PR #1009: Fix ARRAY_AGG with ORDER BY and refactor aggregates
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/Operation.java
浏览文件 @
cc0f5b06
...
...
@@ -186,6 +186,8 @@ public class Operation extends Expression {
dataType
=
left
.
getType
();
if
(
dataType
==
Value
.
UNKNOWN
)
{
dataType
=
Value
.
DECIMAL
;
}
else
if
(
dataType
==
Value
.
ENUM
)
{
dataType
=
Value
.
INT
;
}
break
;
case
CONCAT:
...
...
@@ -315,7 +317,9 @@ public class Operation extends Expression {
DataType
.
getDataType
(
r
).
name
);
}
else
{
dataType
=
Value
.
getHigherOrder
(
l
,
r
);
if
(
DataType
.
isStringType
(
dataType
)
&&
if
(
dataType
==
Value
.
ENUM
)
{
dataType
=
Value
.
INT
;
}
else
if
(
DataType
.
isStringType
(
dataType
)
&&
session
.
getDatabase
().
getMode
().
allowPlusForStringConcat
)
{
opType
=
OpType
.
CONCAT
;
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/table/TableView.java
浏览文件 @
cc0f5b06
...
...
@@ -193,7 +193,13 @@ public class TableView extends Table {
long
precision
=
expr
.
getPrecision
();
int
scale
=
expr
.
getScale
();
int
displaySize
=
expr
.
getDisplaySize
();
Column
col
=
new
Column
(
name
,
type
,
precision
,
scale
,
displaySize
);
String
[]
enumerators
=
null
;
if
(
type
==
Value
.
ENUM
)
{
if
(
expr
instanceof
ExpressionColumn
)
{
enumerators
=
((
ExpressionColumn
)
expr
).
getColumn
().
getEnumerators
();
}
}
Column
col
=
new
Column
(
name
,
type
,
precision
,
scale
,
displaySize
,
enumerators
);
col
.
setTable
(
this
,
i
);
// Fetch check constraint from view column source
ExpressionColumn
fromColumn
=
null
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/scripts/datatypes/enum.sql
浏览文件 @
cc0f5b06
...
...
@@ -185,3 +185,70 @@ SELECT * FROM TEST;
DROP
TABLE
TEST
;
>
ok
CREATE
TABLE
TEST
(
E
ENUM
(
'A'
,
'B'
));
>
ok
INSERT
INTO
TEST
VALUES
(
'B'
);
>
update
count
:
1
CREATE
VIEW
V
AS
SELECT
*
FROM
TEST
;
>
ok
SELECT
*
FROM
V
;
>
E
>
-
>
B
>
rows
:
1
CREATE
VIEW
V1
AS
SELECT
E
+
2
AS
E
FROM
TEST
;
>
ok
SELECT
*
FROM
V1
;
>
E
>
-
>
3
>
rows
:
1
CREATE
VIEW
V2
AS
SELECT
E
+
E
AS
E
FROM
TEST
;
>
ok
SELECT
*
FROM
V2
;
>
E
>
-
>
2
>
rows
:
1
CREATE
VIEW
V3
AS
SELECT
-
E
AS
E
FROM
TEST
;
>
ok
SELECT
*
FROM
V3
;
>
E
>
--
>
-
1
>
rows
:
1
SELECT
*
FROM
INFORMATION_SCHEMA
.
COLUMNS
WHERE
COLUMN_NAME
=
'E'
ORDER
BY
TABLE_NAME
;
>
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
ORDINAL_POSITION
COLUMN_DEFAULT
IS_NULLABLE
DATA_TYPE
CHARACTER_MAXIMUM_LENGTH
CHARACTER_OCTET_LENGTH
NUMERIC_PRECISION
NUMERIC_PRECISION_RADIX
NUMERIC_SCALE
CHARACTER_SET_NAME
COLLATION_NAME
TYPE_NAME
NULLABLE
IS_COMPUTED
SELECTIVITY
CHECK_CONSTRAINT
SEQUENCE_NAME
REMARKS
SOURCE_DATA_TYPE
COLUMN_TYPE
COLUMN_ON_UPDATE
>
------------- ------------ ---------- ----------- ---------------- -------------- ----------- --------- ------------------------ ---------------------- ----------------- ----------------------- ------------- ------------------ -------------- --------- -------- ----------- ----------- ---------------- ------------- ------- ---------------- ------------- ----------------
>
SCRIPT
PUBLIC
TEST
E
1
null
YES
1111
2147483647
2147483647
2147483647
10
0
Unicode
OFF
ENUM
1
FALSE
50
null
null
ENUM
(
'A'
,
'B'
)
null
>
SCRIPT
PUBLIC
V
E
1
null
YES
1111
2147483647
2147483647
2147483647
10
0
Unicode
OFF
ENUM
1
FALSE
50
null
null
ENUM
(
'A'
,
'B'
)
null
>
SCRIPT
PUBLIC
V1
E
1
null
YES
4
2147483647
2147483647
2147483647
10
0
Unicode
OFF
INTEGER
1
FALSE
50
null
null
INTEGER
null
>
SCRIPT
PUBLIC
V2
E
1
null
YES
4
2147483647
2147483647
2147483647
10
0
Unicode
OFF
INTEGER
1
FALSE
50
null
null
INTEGER
null
>
SCRIPT
PUBLIC
V3
E
1
null
YES
4
2147483647
2147483647
2147483647
10
0
Unicode
OFF
INTEGER
1
FALSE
50
null
null
INTEGER
null
>
rows
(
ordered
):
5
DROP
VIEW
V
;
>
ok
DROP
VIEW
V1
;
>
ok
DROP
VIEW
V2
;
>
ok
DROP
VIEW
V3
;
>
ok
DROP
TABLE
TEST
;
>
ok
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论