Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
4764eeea
提交
4764eeea
authored
7 年前
作者:
Noel Grandin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Issue #629: CREATE OR REPLACE VIEW creates incorrect columns names
上级
421b54e4
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
36 行增加
和
22 行删除
+36
-22
changelog.html
h2/src/docsrc/html/changelog.html
+2
-0
CreateView.java
h2/src/main/org/h2/command/ddl/CreateView.java
+8
-8
TableView.java
h2/src/main/org/h2/table/TableView.java
+2
-2
TestScript.java
h2/src/test/org/h2/test/scripts/TestScript.java
+1
-0
commands-dml-create-view.sql
h2/src/test/org/h2/test/scripts/commands-dml-create-view.sql
+15
-0
commands-dml-script.sql
h2/src/test/org/h2/test/scripts/commands-dml-script.sql
+8
-12
没有找到文件。
h2/src/docsrc/html/changelog.html
浏览文件 @
4764eeea
...
...
@@ -21,6 +21,8 @@ Change Log
<h2>
Next Version (unreleased)
</h2>
<ul>
<li>
Issue #632: CREATE OR REPLACE VIEW creates incorrect columns names
</li>
<li>
Issue #630: Integer overflow in CacheLRU can cause unrestricted cache growth
</li>
<li>
Issue #497: Fix TO_DATE in cases of 'inline' text. E.g. the "T" and "Z" in to_date('2017-04-21T00:00:00Z', 'YYYY-MM-DD"T"HH24:MI:SS"Z"')
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/command/ddl/CreateView.java
浏览文件 @
4764eeea
...
...
@@ -104,21 +104,21 @@ public class CreateView extends SchemaCommand {
Session
sysSession
=
db
.
getSystemSession
();
synchronized
(
sysSession
)
{
try
{
Column
[]
columnTemplates
=
null
;
if
(
columnNames
!=
null
)
{
columnTemplates
=
new
Column
[
columnNames
.
length
];
for
(
int
i
=
0
;
i
<
columnNames
.
length
;
++
i
)
{
columnTemplates
[
i
]
=
new
Column
(
columnNames
[
i
],
Value
.
UNKNOWN
);
}
}
if
(
view
==
null
)
{
Schema
schema
=
session
.
getDatabase
().
getSchema
(
session
.
getCurrentSchemaName
());
sysSession
.
setCurrentSchema
(
schema
);
Column
[]
columnTemplates
=
null
;
if
(
columnNames
!=
null
)
{
columnTemplates
=
new
Column
[
columnNames
.
length
];
for
(
int
i
=
0
;
i
<
columnNames
.
length
;
++
i
)
{
columnTemplates
[
i
]
=
new
Column
(
columnNames
[
i
],
Value
.
UNKNOWN
);
}
}
view
=
new
TableView
(
getSchema
(),
id
,
viewName
,
querySQL
,
null
,
columnTemplates
,
sysSession
,
false
,
false
);
}
else
{
view
.
replace
(
querySQL
,
sysSession
,
false
,
force
,
false
);
view
.
replace
(
querySQL
,
columnTemplates
,
sysSession
,
false
,
force
,
false
);
view
.
setModified
();
}
}
finally
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/table/TableView.java
浏览文件 @
4764eeea
...
...
@@ -75,12 +75,12 @@ public class TableView extends Table {
* @param recursive whether this is a recursive view
* @param force if errors should be ignored
*/
public
void
replace
(
String
querySQL
,
Session
session
,
public
void
replace
(
String
querySQL
,
Column
[]
newColumnTemplates
,
Session
session
,
boolean
recursive
,
boolean
force
,
boolean
literalsChecked
)
{
String
oldQuerySQL
=
this
.
querySQL
;
Column
[]
oldColumnTemplates
=
this
.
columnTemplates
;
boolean
oldRecursive
=
this
.
recursive
;
init
(
querySQL
,
null
,
c
olumnTemplates
,
session
,
recursive
,
literalsChecked
);
init
(
querySQL
,
null
,
newColumnTemplates
==
null
?
this
.
columnTemplates
:
newC
olumnTemplates
,
session
,
recursive
,
literalsChecked
);
DbException
e
=
recompile
(
session
,
force
,
true
);
if
(
e
!=
null
)
{
init
(
oldQuerySQL
,
null
,
oldColumnTemplates
,
session
,
oldRecursive
,
literalsChecked
);
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/scripts/TestScript.java
浏览文件 @
4764eeea
...
...
@@ -79,6 +79,7 @@ public class TestScript extends TestBase {
reconnectOften
=
!
config
.
memory
&&
config
.
big
;
testScript
(
"testScript.sql"
);
testScript
(
"commands-dml-script.sql"
);
testScript
(
"commands-dml-create-view.sql"
);
for
(
String
s
:
new
String
[]
{
"array"
,
"bigint"
,
"binary"
,
"blob"
,
"boolean"
,
"char"
,
"clob"
,
"date"
,
"decimal"
,
"double"
,
"enum"
,
"geometry"
,
"identity"
,
"int"
,
"other"
,
"real"
,
"smallint"
,
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/scripts/commands-dml-create-view.sql
0 → 100644
浏览文件 @
4764eeea
create
memory
table
test
(
id
int
primary
key
,
name
varchar
(
255
));
>
ok
INSERT
INTO
TEST
VALUES
(
2
,
STRINGDECODE
(
'abcsond
\3
44rzeich
\3
44 '
)
||
char
(
22222
)
||
STRINGDECODE
(
'
\3
66
\3
44
\3
74
\3
26
\3
04
\3
34
\3
51
\3
50
\3
40
\3
61!'
));
>
update
count
:
1
script
nopasswords
nosettings
;
>
SCRIPT
>
-------------------------------------------------------------------------------------------------------------------------------------------------------------
>
-- 1 +/- SELECT COUNT(*) FROM PUBLIC.TEST;
>
ALTER
TABLE
PUBLIC
.
TEST
ADD
CONSTRAINT
PUBLIC
.
CONSTRAINT_2
PRIMARY
KEY
(
ID
);
>
CREATE
MEMORY
TABLE
PUBLIC
.
TEST
(
ID
INT
NOT
NULL
,
NAME
VARCHAR
(
255
)
);
>
CREATE
USER
IF
NOT
EXISTS
SA
PASSWORD
''
ADMIN
;
>
INSERT
INTO
PUBLIC
.
TEST
(
ID
,
NAME
)
VALUES
(
2
,
STRINGDECODE
(
'abcsond
\u
00e4rzeich
\u
00e4
\u
56ce
\u
00f6
\u
00e4
\u
00fc
\u
00d6
\u
00c4
\u
00dc
\u
00e9
\u
00e8
\u
00e0
\u
00f1!'
));
>
rows
:
5
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/scripts/commands-dml-script.sql
浏览文件 @
4764eeea
create
memory
table
test
(
id
int
primary
key
,
name
varchar
(
255
))
;
CREATE
VIEW
TEST_VIEW
(
A
)
AS
SELECT
'a'
;
>
ok
INSERT
INTO
TEST
VALUES
(
2
,
STRINGDECODE
(
'abcsond
\3
44rzeich
\3
44 '
)
||
char
(
22222
)
||
STRINGDECODE
(
'
\3
66
\3
44
\3
74
\3
26
\3
04
\3
34
\3
51
\3
50
\3
40
\3
61!'
))
;
>
update
count
:
1
CREATE
OR
REPLACE
VIEW
TEST_VIEW
(
B
,
C
)
AS
SELECT
'b'
,
'c'
;
>
ok
script
nopasswords
nosettings
;
>
SCRIPT
>
-------------------------------------------------------------------------------------------------------------------------------------------------------------
>
-- 1 +/- SELECT COUNT(*) FROM PUBLIC.TEST;
>
ALTER
TABLE
PUBLIC
.
TEST
ADD
CONSTRAINT
PUBLIC
.
CONSTRAINT_2
PRIMARY
KEY
(
ID
);
>
CREATE
MEMORY
TABLE
PUBLIC
.
TEST
(
ID
INT
NOT
NULL
,
NAME
VARCHAR
(
255
)
);
>
CREATE
USER
IF
NOT
EXISTS
SA
PASSWORD
''
ADMIN
;
>
INSERT
INTO
PUBLIC
.
TEST
(
ID
,
NAME
)
VALUES
(
2
,
STRINGDECODE
(
'abcsond
\u
00e4rzeich
\u
00e4
\u
56ce
\u
00f6
\u
00e4
\u
00fc
\u
00d6
\u
00c4
\u
00dc
\u
00e9
\u
00e8
\u
00e0
\u
00f1!'
));
>
rows
:
5
SELECT
*
FROM
TEST_VIEW
;
>
B
C
>
-
-
>
b
c
>
rows
:
1
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论