Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
4419055c
提交
4419055c
authored
1月 06, 2010
作者:
Thomas Mueller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Enable warning for 'Local variable declaration hides another field or variable'.
上级
0196101c
隐藏空白字符变更
内嵌
并排
正在显示
39 个修改的文件
包含
318 行增加
和
318 行删除
+318
-318
FunctionAlias.java
h2/src/main/org/h2/engine/FunctionAlias.java
+3
-3
CompareLike.java
h2/src/main/org/h2/expression/CompareLike.java
+26
-23
ConditionIn.java
h2/src/main/org/h2/expression/ConditionIn.java
+4
-4
ConditionInSelect.java
h2/src/main/org/h2/expression/ConditionInSelect.java
+4
-4
ExpressionColumn.java
h2/src/main/org/h2/expression/ExpressionColumn.java
+13
-13
Function.java
h2/src/main/org/h2/expression/Function.java
+37
-37
JavaFunction.java
h2/src/main/org/h2/expression/JavaFunction.java
+2
-2
TableFunction.java
h2/src/main/org/h2/expression/TableFunction.java
+6
-6
FullText.java
h2/src/main/org/h2/fulltext/FullText.java
+9
-11
BaseIndex.java
h2/src/main/org/h2/index/BaseIndex.java
+12
-12
IndexCursor.java
h2/src/main/org/h2/index/IndexCursor.java
+7
-7
ViewIndex.java
h2/src/main/org/h2/index/ViewIndex.java
+22
-22
ResultTempTable.java
h2/src/main/org/h2/result/ResultTempTable.java
+4
-4
Recover.java
h2/src/main/org/h2/tools/Recover.java
+21
-21
TestFunctions.java
h2/src/test/org/h2/test/db/TestFunctions.java
+6
-6
TestBatchUpdates.java
h2/src/test/org/h2/test/jdbc/TestBatchUpdates.java
+6
-6
TestMetaData.java
h2/src/test/org/h2/test/jdbc/TestMetaData.java
+36
-37
TestNativeSQL.java
h2/src/test/org/h2/test/jdbc/TestNativeSQL.java
+2
-2
TestResultSet.java
h2/src/test/org/h2/test/jdbc/TestResultSet.java
+3
-3
TestStatement.java
h2/src/test/org/h2/test/jdbc/TestStatement.java
+4
-4
TestConnectionPool.java
h2/src/test/org/h2/test/jdbcx/TestConnectionPool.java
+4
-4
TestCrashAPI.java
h2/src/test/org/h2/test/synth/TestCrashAPI.java
+3
-3
TestHalt.java
h2/src/test/org/h2/test/synth/TestHalt.java
+2
-2
TestJoin.java
h2/src/test/org/h2/test/synth/TestJoin.java
+12
-12
TestRandomSQL.java
h2/src/test/org/h2/test/synth/TestRandomSQL.java
+11
-11
TestThreads.java
h2/src/test/org/h2/test/synth/TestThreads.java
+2
-2
TestTimer.java
h2/src/test/org/h2/test/synth/TestTimer.java
+3
-3
TestAutoReconnect.java
h2/src/test/org/h2/test/unit/TestAutoReconnect.java
+6
-5
TestClearReferences.java
h2/src/test/org/h2/test/unit/TestClearReferences.java
+1
-2
TestCompress.java
h2/src/test/org/h2/test/unit/TestCompress.java
+6
-6
TestDataPage.java
h2/src/test/org/h2/test/unit/TestDataPage.java
+2
-2
TestFile.java
h2/src/test/org/h2/test/unit/TestFile.java
+1
-1
TestFileLock.java
h2/src/test/org/h2/test/unit/TestFileLock.java
+2
-2
TestFileLockSerialized.java
h2/src/test/org/h2/test/unit/TestFileLockSerialized.java
+10
-10
TestOverflow.java
h2/src/test/org/h2/test/unit/TestOverflow.java
+12
-12
TestPageStore.java
h2/src/test/org/h2/test/unit/TestPageStore.java
+6
-6
TestTools.java
h2/src/test/org/h2/test/unit/TestTools.java
+6
-6
TestValueHashMap.java
h2/src/test/org/h2/test/unit/TestValueHashMap.java
+1
-1
TestValueMemory.java
h2/src/test/org/h2/test/unit/TestValueMemory.java
+1
-1
没有找到文件。
h2/src/main/org/h2/engine/FunctionAlias.java
浏览文件 @
4419055c
...
...
@@ -111,10 +111,10 @@ public class FunctionAlias extends DbObjectBase {
private
void
loadFromSource
()
throws
SQLException
{
SourceCompiler
compiler
=
database
.
getCompiler
();
String
c
lassName
=
Constants
.
USER_PACKAGE
+
"."
+
getName
();
compiler
.
setSource
(
c
lassName
,
source
);
String
fullC
lassName
=
Constants
.
USER_PACKAGE
+
"."
+
getName
();
compiler
.
setSource
(
fullC
lassName
,
source
);
try
{
Method
m
=
compiler
.
getMethod
(
c
lassName
);
Method
m
=
compiler
.
getMethod
(
fullC
lassName
);
JavaMethod
method
=
new
JavaMethod
(
m
,
0
);
javaMethods
=
new
JavaMethod
[]
{
method
...
...
h2/src/main/org/h2/expression/CompareLike.java
浏览文件 @
4419055c
...
...
@@ -31,17 +31,20 @@ public class CompareLike extends Condition {
private
static
final
int
MATCH
=
0
,
ONE
=
1
,
ANY
=
2
;
private
final
CompareMode
compareMode
;
private
final
boolean
regexp
;
private
Expression
left
;
private
Expression
right
;
private
Expression
escape
;
private
boolean
isInit
;
private
char
[]
pattern
;
private
char
[]
patternChars
;
private
String
patternString
;
private
Pattern
patternRegexp
;
private
int
[]
types
;
private
int
[]
patternTypes
;
private
int
patternLength
;
private
final
boolean
regexp
;
private
Pattern
patternRegexp
;
private
boolean
ignoreCase
;
private
boolean
fastCompare
;
private
boolean
invalidPattern
;
...
...
@@ -166,7 +169,7 @@ public class CompareLike extends Condition {
if
(
invalidPattern
)
{
return
;
}
if
(
patternLength
<=
0
||
t
ypes
[
0
]
!=
MATCH
)
{
if
(
patternLength
<=
0
||
patternT
ypes
[
0
]
!=
MATCH
)
{
// can't use an index
return
;
}
...
...
@@ -177,8 +180,8 @@ public class CompareLike extends Condition {
}
int
maxMatch
=
0
;
StringBuilder
buff
=
new
StringBuilder
();
while
(
maxMatch
<
patternLength
&&
t
ypes
[
maxMatch
]
==
MATCH
)
{
buff
.
append
(
pattern
[
maxMatch
++]);
while
(
maxMatch
<
patternLength
&&
patternT
ypes
[
maxMatch
]
==
MATCH
)
{
buff
.
append
(
pattern
Chars
[
maxMatch
++]);
}
String
begin
=
buff
.
toString
();
if
(
maxMatch
==
patternLength
)
{
...
...
@@ -232,7 +235,7 @@ public class CompareLike extends Condition {
// result = patternRegexp.matcher(value).matches();
result
=
patternRegexp
.
matcher
(
value
).
find
();
}
else
{
result
=
compareAt
(
value
,
0
,
0
,
value
.
length
(),
pattern
,
t
ypes
);
result
=
compareAt
(
value
,
0
,
0
,
value
.
length
(),
pattern
Chars
,
patternT
ypes
);
}
return
ValueBoolean
.
get
(
result
);
}
...
...
@@ -285,10 +288,10 @@ public class CompareLike extends Condition {
if
(
invalidPattern
)
{
return
false
;
}
return
compareAt
(
value
,
0
,
0
,
value
.
length
(),
pattern
,
t
ypes
);
return
compareAt
(
value
,
0
,
0
,
value
.
length
(),
pattern
Chars
,
patternT
ypes
);
}
private
void
initPattern
(
String
p
,
Character
escape
)
throws
SQLException
{
private
void
initPattern
(
String
p
,
Character
escape
Char
)
throws
SQLException
{
if
(
compareMode
.
getName
().
equals
(
CompareMode
.
OFF
)
&&
!
ignoreCase
)
{
fastCompare
=
true
;
}
...
...
@@ -307,18 +310,18 @@ public class CompareLike extends Condition {
}
patternLength
=
0
;
if
(
p
==
null
)
{
t
ypes
=
null
;
pattern
=
null
;
patternT
ypes
=
null
;
pattern
Chars
=
null
;
return
;
}
int
len
=
p
.
length
();
pattern
=
new
char
[
len
];
t
ypes
=
new
int
[
len
];
pattern
Chars
=
new
char
[
len
];
patternT
ypes
=
new
int
[
len
];
boolean
lastAny
=
false
;
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
char
c
=
p
.
charAt
(
i
);
int
type
;
if
(
escape
!=
null
&&
escape
==
c
)
{
if
(
escape
Char
!=
null
&&
escapeChar
==
c
)
{
if
(
i
>=
len
-
1
)
{
invalidPattern
=
true
;
return
;
...
...
@@ -338,23 +341,23 @@ public class CompareLike extends Condition {
type
=
MATCH
;
lastAny
=
false
;
}
t
ypes
[
patternLength
]
=
type
;
pattern
[
patternLength
++]
=
c
;
patternT
ypes
[
patternLength
]
=
type
;
pattern
Chars
[
patternLength
++]
=
c
;
}
for
(
int
i
=
0
;
i
<
patternLength
-
1
;
i
++)
{
if
((
types
[
i
]
==
ANY
)
&&
(
t
ypes
[
i
+
1
]
==
ONE
))
{
t
ypes
[
i
]
=
ONE
;
t
ypes
[
i
+
1
]
=
ANY
;
if
((
patternTypes
[
i
]
==
ANY
)
&&
(
patternT
ypes
[
i
+
1
]
==
ONE
))
{
patternT
ypes
[
i
]
=
ONE
;
patternT
ypes
[
i
+
1
]
=
ANY
;
}
}
patternString
=
new
String
(
pattern
,
0
,
patternLength
);
patternString
=
new
String
(
pattern
Chars
,
0
,
patternLength
);
}
private
boolean
isFullMatch
()
{
if
(
t
ypes
==
null
)
{
if
(
patternT
ypes
==
null
)
{
return
false
;
}
for
(
int
type
:
t
ypes
)
{
for
(
int
type
:
patternT
ypes
)
{
if
(
type
!=
MATCH
)
{
return
false
;
}
...
...
h2/src/main/org/h2/expression/ConditionIn.java
浏览文件 @
4419055c
...
...
@@ -75,12 +75,12 @@ public class ConditionIn extends Condition {
return
ValueBoolean
.
get
(
result
);
}
public
void
mapColumns
(
ColumnResolver
resolver
,
int
queryL
evel
)
throws
SQLException
{
left
.
mapColumns
(
resolver
,
queryL
evel
);
public
void
mapColumns
(
ColumnResolver
resolver
,
int
l
evel
)
throws
SQLException
{
left
.
mapColumns
(
resolver
,
l
evel
);
for
(
Expression
e
:
valueList
)
{
e
.
mapColumns
(
resolver
,
queryL
evel
);
e
.
mapColumns
(
resolver
,
l
evel
);
}
this
.
queryLevel
=
Math
.
max
(
queryL
evel
,
this
.
queryLevel
);
this
.
queryLevel
=
Math
.
max
(
l
evel
,
this
.
queryLevel
);
}
public
Expression
optimize
(
Session
session
)
throws
SQLException
{
...
...
h2/src/main/org/h2/expression/ConditionInSelect.java
浏览文件 @
4419055c
...
...
@@ -83,10 +83,10 @@ public class ConditionInSelect extends Condition {
return
ValueBoolean
.
get
(
result
);
}
public
void
mapColumns
(
ColumnResolver
resolver
,
int
queryL
evel
)
throws
SQLException
{
left
.
mapColumns
(
resolver
,
queryL
evel
);
query
.
mapColumns
(
resolver
,
queryL
evel
+
1
);
this
.
queryLevel
=
Math
.
max
(
queryL
evel
,
this
.
queryLevel
);
public
void
mapColumns
(
ColumnResolver
resolver
,
int
l
evel
)
throws
SQLException
{
left
.
mapColumns
(
resolver
,
l
evel
);
query
.
mapColumns
(
resolver
,
l
evel
+
1
);
this
.
queryLevel
=
Math
.
max
(
l
evel
,
this
.
queryLevel
);
}
public
Expression
optimize
(
Session
session
)
throws
SQLException
{
...
...
h2/src/main/org/h2/expression/ExpressionColumn.java
浏览文件 @
4419055c
...
...
@@ -34,7 +34,7 @@ public class ExpressionColumn extends Expression {
private
String
schemaName
;
private
String
tableAlias
;
private
String
columnName
;
private
ColumnResolver
r
esolver
;
private
ColumnResolver
columnR
esolver
;
private
int
queryLevel
;
private
Column
column
;
private
boolean
evaluatable
;
...
...
@@ -68,7 +68,7 @@ public class ExpressionColumn extends Expression {
}
public
TableFilter
getTableFilter
()
{
return
resolver
==
null
?
null
:
r
esolver
.
getTableFilter
();
return
columnResolver
==
null
?
null
:
columnR
esolver
.
getTableFilter
();
}
public
void
mapColumns
(
ColumnResolver
resolver
,
int
level
)
throws
SQLException
{
...
...
@@ -95,11 +95,11 @@ public class ExpressionColumn extends Expression {
}
private
void
mapColumn
(
ColumnResolver
resolver
,
Column
col
,
int
level
)
throws
SQLException
{
if
(
this
.
r
esolver
==
null
)
{
if
(
this
.
columnR
esolver
==
null
)
{
queryLevel
=
level
;
column
=
col
;
this
.
r
esolver
=
resolver
;
}
else
if
(
queryLevel
==
level
&&
this
.
r
esolver
!=
resolver
)
{
this
.
columnR
esolver
=
resolver
;
}
else
if
(
queryLevel
==
level
&&
this
.
columnR
esolver
!=
resolver
)
{
if
(
resolver
instanceof
SelectListColumnResolver
)
{
// ignore - already mapped, that's ok
}
else
{
...
...
@@ -109,7 +109,7 @@ public class ExpressionColumn extends Expression {
}
public
Expression
optimize
(
Session
session
)
throws
SQLException
{
if
(
r
esolver
==
null
)
{
if
(
columnR
esolver
==
null
)
{
Schema
schema
=
session
.
getDatabase
().
findSchema
(
tableAlias
==
null
?
session
.
getCurrentSchemaName
()
:
tableAlias
);
if
(
schema
!=
null
)
{
...
...
@@ -127,12 +127,12 @@ public class ExpressionColumn extends Expression {
}
throw
Message
.
getSQLException
(
ErrorCode
.
COLUMN_NOT_FOUND_1
,
name
);
}
return
r
esolver
.
optimize
(
this
,
column
);
return
columnR
esolver
.
optimize
(
this
,
column
);
}
public
void
updateAggregate
(
Session
session
)
throws
SQLException
{
Value
now
=
r
esolver
.
getValue
(
column
);
Select
select
=
r
esolver
.
getSelect
();
Value
now
=
columnR
esolver
.
getValue
(
column
);
Select
select
=
columnR
esolver
.
getSelect
();
if
(
select
==
null
)
{
throw
Message
.
getSQLException
(
ErrorCode
.
MUST_GROUP_BY_COLUMN_1
,
getSQL
());
}
...
...
@@ -155,7 +155,7 @@ public class ExpressionColumn extends Expression {
// TODO refactor: simplify check if really part of an aggregated value /
// detection of
// usage of non-grouped by columns without aggregate function
Select
select
=
r
esolver
.
getSelect
();
Select
select
=
columnR
esolver
.
getSelect
();
if
(
select
!=
null
)
{
HashMap
<
Expression
,
Object
>
values
=
select
.
getCurrentGroup
();
if
(
values
!=
null
)
{
...
...
@@ -165,7 +165,7 @@ public class ExpressionColumn extends Expression {
}
}
}
Value
value
=
r
esolver
.
getValue
(
column
);
Value
value
=
columnR
esolver
.
getValue
(
column
);
if
(
value
==
null
)
{
throw
Message
.
getSQLException
(
ErrorCode
.
MUST_GROUP_BY_COLUMN_1
,
getSQL
());
}
...
...
@@ -177,7 +177,7 @@ public class ExpressionColumn extends Expression {
}
public
void
setEvaluatable
(
TableFilter
tableFilter
,
boolean
b
)
{
if
(
resolver
!=
null
&&
tableFilter
==
r
esolver
.
getTableFilter
())
{
if
(
columnResolver
!=
null
&&
tableFilter
==
columnR
esolver
.
getTableFilter
())
{
evaluatable
=
b
;
}
}
...
...
@@ -250,7 +250,7 @@ public class ExpressionColumn extends Expression {
visitor
.
addDataModificationId
(
column
.
getTable
().
getMaxDataModificationId
());
return
true
;
case
ExpressionVisitor
.
NOT_FROM_RESOLVER
:
return
r
esolver
!=
visitor
.
getResolver
();
return
columnR
esolver
!=
visitor
.
getResolver
();
case
ExpressionVisitor
.
GET_DEPENDENCIES
:
visitor
.
addDependency
(
column
.
getTable
());
return
true
;
...
...
h2/src/main/org/h2/expression/Function.java
浏览文件 @
4419055c
...
...
@@ -429,7 +429,7 @@ public class Function extends Expression implements FunctionCall {
return
null
;
}
private
Value
getSimpleValue
(
Session
session
,
Value
v0
,
Expression
[]
arg
s
)
throws
SQLException
{
private
Value
getSimpleValue
(
Session
session
,
Value
v0
,
Expression
[]
arg
List
)
throws
SQLException
{
Value
result
;
switch
(
info
.
type
)
{
case
ABS:
...
...
@@ -538,7 +538,7 @@ public class Function extends Expression implements FunctionCall {
break
;
case
CONCAT:
{
result
=
ValueNull
.
INSTANCE
;
for
(
Expression
e
:
arg
s
)
{
for
(
Expression
e
:
arg
List
)
{
Value
v
=
e
.
getValue
(
session
);
if
(
v
==
ValueNull
.
INSTANCE
)
{
continue
;
...
...
@@ -730,15 +730,15 @@ public class Function extends Expression implements FunctionCall {
result
=
ValueInt
.
get
(
session
.
getId
());
break
;
case
IFNULL:
{
result
=
v0
==
ValueNull
.
INSTANCE
?
arg
s
[
1
].
getValue
(
session
)
:
v0
;
result
=
v0
==
ValueNull
.
INSTANCE
?
arg
List
[
1
].
getValue
(
session
)
:
v0
;
break
;
}
case
CASEWHEN:
{
Expression
expr
;
if
(
v0
==
ValueNull
.
INSTANCE
||
!
v0
.
getBoolean
().
booleanValue
())
{
expr
=
arg
s
[
2
];
expr
=
arg
List
[
2
];
}
else
{
expr
=
arg
s
[
1
];
expr
=
arg
List
[
1
];
}
Value
v
=
expr
.
getValue
(
session
);
result
=
v
.
convertTo
(
dataType
);
...
...
@@ -746,8 +746,8 @@ public class Function extends Expression implements FunctionCall {
}
case
COALESCE:
{
result
=
v0
;
for
(
int
i
=
0
;
i
<
arg
s
.
length
;
i
++)
{
Value
v
=
i
==
0
?
v0
:
arg
s
[
i
].
getValue
(
session
);
for
(
int
i
=
0
;
i
<
arg
List
.
length
;
i
++)
{
Value
v
=
i
==
0
?
v0
:
arg
List
[
i
].
getValue
(
session
);
if
(!(
v
==
ValueNull
.
INSTANCE
))
{
result
=
v
.
convertTo
(
dataType
);
break
;
...
...
@@ -758,8 +758,8 @@ public class Function extends Expression implements FunctionCall {
case
GREATEST:
case
LEAST:
{
result
=
ValueNull
.
INSTANCE
;
for
(
int
i
=
0
;
i
<
arg
s
.
length
;
i
++)
{
Value
v
=
i
==
0
?
v0
:
arg
s
[
i
].
getValue
(
session
);
for
(
int
i
=
0
;
i
<
arg
List
.
length
;
i
++)
{
Value
v
=
i
==
0
?
v0
:
arg
List
[
i
].
getValue
(
session
);
if
(!(
v
==
ValueNull
.
INSTANCE
))
{
v
=
v
.
convertTo
(
dataType
);
if
(
result
==
ValueNull
.
INSTANCE
)
{
...
...
@@ -779,21 +779,21 @@ public class Function extends Expression implements FunctionCall {
case
CASE:
{
result
=
null
;
int
i
=
0
;
for
(;
i
<
arg
s
.
length
;
i
++)
{
Value
when
=
arg
s
[
i
++].
getValue
(
session
);
for
(;
i
<
arg
List
.
length
;
i
++)
{
Value
when
=
arg
List
[
i
++].
getValue
(
session
);
if
(
Boolean
.
TRUE
.
equals
(
when
))
{
result
=
arg
s
[
i
].
getValue
(
session
);
result
=
arg
List
[
i
].
getValue
(
session
);
break
;
}
}
if
(
result
==
null
)
{
result
=
i
<
arg
s
.
length
?
args
[
i
].
getValue
(
session
)
:
ValueNull
.
INSTANCE
;
result
=
i
<
arg
List
.
length
?
argList
[
i
].
getValue
(
session
)
:
ValueNull
.
INSTANCE
;
}
break
;
}
case
ARRAY_GET:
{
if
(
v0
.
getType
()
==
Value
.
ARRAY
)
{
Value
v1
=
arg
s
[
1
].
getValue
(
session
);
Value
v1
=
arg
List
[
1
].
getValue
(
session
);
int
element
=
v1
.
getInt
();
Value
[]
list
=
((
ValueArray
)
v0
).
getList
();
if
(
element
<
1
||
element
>
list
.
length
)
{
...
...
@@ -845,24 +845,24 @@ public class Function extends Expression implements FunctionCall {
return
false
;
}
private
Value
getValueWithArgs
(
Session
session
,
Expression
[]
arg
s
)
throws
SQLException
{
private
Value
getValueWithArgs
(
Session
session
,
Expression
[]
arg
List
)
throws
SQLException
{
if
(
info
.
nullIfParameterIsNull
)
{
for
(
int
i
=
0
;
i
<
arg
s
.
length
;
i
++)
{
if
(
getNullOrValue
(
session
,
arg
s
,
i
)
==
ValueNull
.
INSTANCE
)
{
for
(
int
i
=
0
;
i
<
arg
List
.
length
;
i
++)
{
if
(
getNullOrValue
(
session
,
arg
List
,
i
)
==
ValueNull
.
INSTANCE
)
{
return
ValueNull
.
INSTANCE
;
}
}
}
Value
v0
=
getNullOrValue
(
session
,
arg
s
,
0
);
Value
resultSimple
=
getSimpleValue
(
session
,
v0
,
arg
s
);
Value
v0
=
getNullOrValue
(
session
,
arg
List
,
0
);
Value
resultSimple
=
getSimpleValue
(
session
,
v0
,
arg
List
);
if
(
resultSimple
!=
null
)
{
return
resultSimple
;
}
Value
v1
=
getNullOrValue
(
session
,
arg
s
,
1
);
Value
v2
=
getNullOrValue
(
session
,
arg
s
,
2
);
Value
v3
=
getNullOrValue
(
session
,
arg
s
,
3
);
Value
v4
=
getNullOrValue
(
session
,
arg
s
,
4
);
Value
v5
=
getNullOrValue
(
session
,
arg
s
,
5
);
Value
v1
=
getNullOrValue
(
session
,
arg
List
,
1
);
Value
v2
=
getNullOrValue
(
session
,
arg
List
,
2
);
Value
v3
=
getNullOrValue
(
session
,
arg
List
,
3
);
Value
v4
=
getNullOrValue
(
session
,
arg
List
,
4
);
Value
v5
=
getNullOrValue
(
session
,
arg
List
,
5
);
Value
result
;
switch
(
info
.
type
)
{
case
ATAN2:
...
...
@@ -1055,7 +1055,7 @@ public class Function extends Expression implements FunctionCall {
String
fieldSeparatorRead
=
v3
==
null
?
null
:
v3
.
getString
();
String
fieldDelimiter
=
v4
==
null
?
null
:
v4
.
getString
();
String
escapeCharacter
=
v5
==
null
?
null
:
v5
.
getString
();
Value
v6
=
getNullOrValue
(
session
,
arg
s
,
6
);
Value
v6
=
getNullOrValue
(
session
,
arg
List
,
6
);
String
nullString
=
v6
==
null
?
null
:
v6
.
getString
();
Csv
csv
=
Csv
.
getInstance
();
setCsvDelimiterEscape
(
csv
,
fieldSeparatorRead
,
fieldDelimiter
,
escapeCharacter
);
...
...
@@ -1081,9 +1081,9 @@ public class Function extends Expression implements FunctionCall {
String
fieldSeparatorWrite
=
v3
==
null
?
null
:
v3
.
getString
();
String
fieldDelimiter
=
v4
==
null
?
null
:
v4
.
getString
();
String
escapeCharacter
=
v5
==
null
?
null
:
v5
.
getString
();
Value
v6
=
getNullOrValue
(
session
,
arg
s
,
6
);
Value
v6
=
getNullOrValue
(
session
,
arg
List
,
6
);
String
nullString
=
v6
==
null
?
null
:
v6
.
getString
();
Value
v7
=
getNullOrValue
(
session
,
arg
s
,
7
);
Value
v7
=
getNullOrValue
(
session
,
arg
List
,
7
);
String
lineSeparator
=
v7
==
null
?
null
:
v7
.
getString
();
Csv
csv
=
Csv
.
getInstance
();
setCsvDelimiterEscape
(
csv
,
fieldSeparatorWrite
,
fieldDelimiter
,
escapeCharacter
);
...
...
@@ -1096,7 +1096,7 @@ public class Function extends Expression implements FunctionCall {
break
;
}
case
SET:
{
Variable
var
=
(
Variable
)
arg
s
[
0
];
Variable
var
=
(
Variable
)
arg
List
[
0
];
session
.
setVariable
(
var
.
getName
(),
v1
);
result
=
v1
;
break
;
...
...
@@ -1104,7 +1104,7 @@ public class Function extends Expression implements FunctionCall {
case
FILE_READ:
{
session
.
getUser
().
checkAdmin
();
String
fileName
=
v0
.
getString
();
boolean
blob
=
arg
s
.
length
==
1
;
boolean
blob
=
arg
List
.
length
==
1
;
try
{
InputStream
in
=
new
AutoCloseInputStream
(
FileUtils
.
openFileInputStream
(
fileName
));
if
(
blob
)
{
...
...
@@ -1868,18 +1868,18 @@ public class Function extends Expression implements FunctionCall {
return
args
.
length
;
}
public
ValueResultSet
getValueForColumnList
(
Session
session
,
Expression
[]
arg
s
)
throws
SQLException
{
public
ValueResultSet
getValueForColumnList
(
Session
session
,
Expression
[]
arg
List
)
throws
SQLException
{
switch
(
info
.
type
)
{
case
CSVREAD:
{
String
fileName
=
arg
s
[
0
].
getValue
(
session
).
getString
();
String
fileName
=
arg
List
[
0
].
getValue
(
session
).
getString
();
if
(
fileName
==
null
)
{
throw
Message
.
getSQLException
(
ErrorCode
.
PARAMETER_NOT_SET_1
,
"fileName"
);
}
String
columnList
=
arg
s
.
length
<
2
?
null
:
args
[
1
].
getValue
(
session
).
getString
();
String
charset
=
arg
s
.
length
<
3
?
null
:
args
[
2
].
getValue
(
session
).
getString
();
String
fieldSeparatorRead
=
arg
s
.
length
<
4
?
null
:
args
[
3
].
getValue
(
session
).
getString
();
String
fieldDelimiter
=
arg
s
.
length
<
5
?
null
:
args
[
4
].
getValue
(
session
).
getString
();
String
escapeCharacter
=
arg
s
.
length
<
6
?
null
:
args
[
5
].
getValue
(
session
).
getString
();
String
columnList
=
arg
List
.
length
<
2
?
null
:
argList
[
1
].
getValue
(
session
).
getString
();
String
charset
=
arg
List
.
length
<
3
?
null
:
argList
[
2
].
getValue
(
session
).
getString
();
String
fieldSeparatorRead
=
arg
List
.
length
<
4
?
null
:
argList
[
3
].
getValue
(
session
).
getString
();
String
fieldDelimiter
=
arg
List
.
length
<
5
?
null
:
argList
[
4
].
getValue
(
session
).
getString
();
String
escapeCharacter
=
arg
List
.
length
<
6
?
null
:
argList
[
5
].
getValue
(
session
).
getString
();
Csv
csv
=
Csv
.
getInstance
();
setCsvDelimiterEscape
(
csv
,
fieldSeparatorRead
,
fieldDelimiter
,
escapeCharacter
);
char
fieldSeparator
=
csv
.
getFieldSeparatorRead
();
...
...
@@ -1896,7 +1896,7 @@ public class Function extends Expression implements FunctionCall {
default
:
break
;
}
return
(
ValueResultSet
)
getValueWithArgs
(
session
,
arg
s
);
return
(
ValueResultSet
)
getValueWithArgs
(
session
,
arg
List
);
}
private
void
setCsvDelimiterEscape
(
Csv
csv
,
String
fieldSeparator
,
String
fieldDelimiter
,
String
escapeCharacter
)
{
...
...
h2/src/main/org/h2/expression/JavaFunction.java
浏览文件 @
4419055c
...
...
@@ -107,8 +107,8 @@ public class JavaFunction extends Expression implements FunctionCall {
return
javaMethod
.
getParameterCount
();
}
public
ValueResultSet
getValueForColumnList
(
Session
session
,
Expression
[]
arg
s
)
throws
SQLException
{
Value
v
=
javaMethod
.
getValue
(
session
,
arg
s
,
true
);
public
ValueResultSet
getValueForColumnList
(
Session
session
,
Expression
[]
arg
List
)
throws
SQLException
{
Value
v
=
javaMethod
.
getValue
(
session
,
arg
List
,
true
);
return
v
==
ValueNull
.
INSTANCE
?
null
:
(
ValueResultSet
)
v
;
}
...
...
h2/src/main/org/h2/expression/TableFunction.java
浏览文件 @
4419055c
...
...
@@ -74,7 +74,7 @@ public class TableFunction extends Function {
columns
.
toArray
(
columnList
);
}
private
ValueResultSet
getTable
(
Session
session
,
Expression
[]
arg
s
,
boolean
onlyColumnList
,
boolean
distinct
)
throws
SQLException
{
private
ValueResultSet
getTable
(
Session
session
,
Expression
[]
arg
List
,
boolean
onlyColumnList
,
boolean
distinctRows
)
throws
SQLException
{
int
len
=
columnList
.
length
;
Expression
[]
header
=
new
Expression
[
len
];
Database
db
=
session
.
getDatabase
();
...
...
@@ -84,24 +84,24 @@ public class TableFunction extends Function {
header
[
i
]
=
col
;
}
LocalResult
result
=
new
LocalResult
(
session
,
header
,
len
);
if
(
distinct
)
{
if
(
distinct
Rows
)
{
result
.
setDistinct
();
}
if
(!
onlyColumnList
)
{
Value
[][]
list
=
new
Value
[
len
][];
int
row
Count
=
0
;
int
row
s
=
0
;
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
Value
v
=
arg
s
[
i
].
getValue
(
session
);
Value
v
=
arg
List
[
i
].
getValue
(
session
);
if
(
v
==
ValueNull
.
INSTANCE
)
{
list
[
i
]
=
new
Value
[
0
];
}
else
{
ValueArray
array
=
(
ValueArray
)
v
.
convertTo
(
Value
.
ARRAY
);
Value
[]
l
=
array
.
getList
();
list
[
i
]
=
l
;
row
Count
=
Math
.
max
(
rowCount
,
l
.
length
);
row
s
=
Math
.
max
(
rows
,
l
.
length
);
}
}
for
(
int
row
=
0
;
row
<
row
Count
;
row
++)
{
for
(
int
row
=
0
;
row
<
row
s
;
row
++)
{
Value
[]
r
=
new
Value
[
len
];
for
(
int
j
=
0
;
j
<
len
;
j
++)
{
Value
[]
l
=
list
[
j
];
...
...
h2/src/main/org/h2/fulltext/FullText.java
浏览文件 @
4419055c
...
...
@@ -871,16 +871,16 @@ public class FullText {
if
(
newRow
!=
null
)
{
// update
if
(
hasChanged
(
oldRow
,
newRow
,
index
.
indexColumns
))
{
delete
(
setting
,
oldRow
);
insert
(
setting
,
newRow
);
delete
(
oldRow
);
insert
(
newRow
);
}
}
else
{
// delete
delete
(
setting
,
oldRow
);
delete
(
oldRow
);
}
}
else
if
(
newRow
!=
null
)
{
// insert
insert
(
setting
,
newRow
);
insert
(
newRow
);
}
}
...
...
@@ -901,10 +901,9 @@ public class FullText {
/**
* Add a row to the index.
*
* @param setting the setting
* @param row the row
*/
protected
void
insert
(
FullTextSettings
setting
,
Object
[]
row
)
throws
SQLException
{
protected
void
insert
(
Object
[]
row
)
throws
SQLException
{
String
key
=
getKey
(
row
);
int
hash
=
key
.
hashCode
();
prepInsertRow
.
setInt
(
1
,
hash
);
...
...
@@ -915,7 +914,7 @@ public class FullText {
rs
.
next
();
int
rowId
=
rs
.
getInt
(
1
);
prepInsertMap
.
setInt
(
1
,
rowId
);
int
[]
wordIds
=
getWordIds
(
setting
,
row
);
int
[]
wordIds
=
getWordIds
(
row
);
for
(
int
id
:
wordIds
)
{
prepInsertMap
.
setInt
(
2
,
id
);
prepInsertMap
.
execute
();
...
...
@@ -925,10 +924,9 @@ public class FullText {
/**
* Delete a row from the index.
*
* @param setting the setting
* @param row the row
*/
protected
void
delete
(
FullTextSettings
setting
,
Object
[]
row
)
throws
SQLException
{
protected
void
delete
(
Object
[]
row
)
throws
SQLException
{
String
key
=
getKey
(
row
);
int
hash
=
key
.
hashCode
();
prepSelectRow
.
setInt
(
1
,
hash
);
...
...
@@ -938,7 +936,7 @@ public class FullText {
if
(
rs
.
next
())
{
int
rowId
=
rs
.
getInt
(
1
);
prepDeleteMap
.
setInt
(
1
,
rowId
);
int
[]
wordIds
=
getWordIds
(
setting
,
row
);
int
[]
wordIds
=
getWordIds
(
row
);
for
(
int
id
:
wordIds
)
{
prepDeleteMap
.
setInt
(
2
,
id
);
prepDeleteMap
.
executeUpdate
();
...
...
@@ -950,7 +948,7 @@ public class FullText {
}
}
private
int
[]
getWordIds
(
FullTextSettings
setting
,
Object
[]
row
)
throws
SQLException
{
private
int
[]
getWordIds
(
Object
[]
row
)
throws
SQLException
{
HashSet
<
String
>
words
=
New
.
hashSet
();
for
(
int
i
=
0
;
i
<
index
.
indexColumns
.
length
;
i
++)
{
int
idx
=
index
.
indexColumns
[
i
];
...
...
h2/src/main/org/h2/index/BaseIndex.java
浏览文件 @
4419055c
...
...
@@ -43,23 +43,23 @@ public abstract class BaseIndex extends SchemaObjectBase implements Index {
/**
* Initialize the base index.
*
* @param
t
able the table
* @param
newT
able the table
* @param id the object id
* @param name the index name
* @param
indexColumns the columns that are indexed or null if this is not
* yet known
* @param
i
ndexType the index type
* @param
newIndexColumns the columns that are indexed or null if this is
*
not
yet known
* @param
newI
ndexType the index type
*/
void
initBaseIndex
(
Table
table
,
int
id
,
String
name
,
IndexColumn
[]
indexColumns
,
IndexType
i
ndexType
)
{
initSchemaObjectBase
(
t
able
.
getSchema
(),
id
,
name
,
Trace
.
INDEX
);
this
.
indexType
=
i
ndexType
;
this
.
table
=
t
able
;
if
(
i
ndexColumns
!=
null
)
{
this
.
indexColumns
=
i
ndexColumns
;
columns
=
new
Column
[
i
ndexColumns
.
length
];
void
initBaseIndex
(
Table
newTable
,
int
id
,
String
name
,
IndexColumn
[]
newIndexColumns
,
IndexType
newI
ndexType
)
{
initSchemaObjectBase
(
newT
able
.
getSchema
(),
id
,
name
,
Trace
.
INDEX
);
this
.
indexType
=
newI
ndexType
;
this
.
table
=
newT
able
;
if
(
newI
ndexColumns
!=
null
)
{
this
.
indexColumns
=
newI
ndexColumns
;
columns
=
new
Column
[
newI
ndexColumns
.
length
];
columnIds
=
new
int
[
columns
.
length
];
for
(
int
i
=
0
;
i
<
columns
.
length
;
i
++)
{
Column
col
=
i
ndexColumns
[
i
].
column
;
Column
col
=
newI
ndexColumns
[
i
].
column
;
columns
[
i
]
=
col
;
columnIds
[
i
]
=
col
.
getColumnId
();
}
...
...
h2/src/main/org/h2/index/IndexCursor.java
浏览文件 @
4419055c
...
...
@@ -60,11 +60,11 @@ public class IndexCursor implements Cursor {
/**
* Re-evaluate the start and end values of the index search for rows.
*
* @param s
ession
the session
* @param s the session
* @param indexConditions the index conditions
*/
public
void
find
(
Session
s
ession
,
ObjectArray
<
IndexCondition
>
indexConditions
)
throws
SQLException
{
this
.
session
=
s
ession
;
public
void
find
(
Session
s
,
ObjectArray
<
IndexCondition
>
indexConditions
)
throws
SQLException
{
this
.
session
=
s
;
alwaysFalse
=
false
;
start
=
end
=
null
;
inList
=
null
;
...
...
@@ -79,16 +79,16 @@ public class IndexCursor implements Cursor {
if
(
condition
.
getCompareType
()
==
Comparison
.
IN_LIST
)
{
if
(
start
==
null
&&
end
==
null
)
{
this
.
inColumn
=
column
;
inList
=
condition
.
getCurrentValueList
(
s
ession
);
inList
=
condition
.
getCurrentValueList
(
s
);
inListIndex
=
0
;
}
}
else
if
(
condition
.
getCompareType
()
==
Comparison
.
IN_QUERY
)
{
if
(
start
==
null
&&
end
==
null
)
{
this
.
inColumn
=
column
;
inResult
=
condition
.
getCurrentResult
(
s
ession
);
inResult
=
condition
.
getCurrentResult
(
s
);
}
}
else
{
Value
v
=
column
.
convert
(
condition
.
getCurrentValue
(
s
ession
));
Value
v
=
column
.
convert
(
condition
.
getCurrentValue
(
s
));
boolean
isStart
=
condition
.
isStart
();
boolean
isEnd
=
condition
.
isEnd
();
int
id
=
column
.
getColumnId
();
...
...
@@ -125,7 +125,7 @@ public class IndexCursor implements Cursor {
return
;
}
if
(!
alwaysFalse
)
{
cursor
=
index
.
find
(
s
ession
,
start
,
end
);
cursor
=
index
.
find
(
s
,
start
,
end
);
}
}
...
...
h2/src/main/org/h2/index/ViewIndex.java
浏览文件 @
4419055c
...
...
@@ -35,10 +35,10 @@ public class ViewIndex extends BaseIndex {
private
final
ObjectArray
<
Parameter
>
originalParameters
;
private
final
SmallLRUCache
<
IntArray
,
CostElement
>
costCache
=
SmallLRUCache
.
newInstance
(
Constants
.
VIEW_INDEX_CACHE_SIZE
);
private
boolean
recursive
;
private
int
[]
m
asks
;
private
int
[]
indexM
asks
;
private
String
planSQL
;
private
Query
query
;
private
Session
s
ession
;
private
Session
createS
ession
;
public
ViewIndex
(
TableView
view
,
String
querySQL
,
ObjectArray
<
Parameter
>
originalParameters
,
boolean
recursive
)
{
initBaseIndex
(
view
,
0
,
null
,
null
,
IndexType
.
createNonUnique
(
false
));
...
...
@@ -55,15 +55,15 @@ public class ViewIndex extends BaseIndex {
this
.
querySQL
=
index
.
querySQL
;
this
.
originalParameters
=
index
.
originalParameters
;
this
.
recursive
=
index
.
recursive
;
this
.
m
asks
=
masks
;
this
.
s
ession
=
session
;
this
.
indexM
asks
=
masks
;
this
.
createS
ession
=
session
;
columns
=
new
Column
[
0
];
query
=
getQuery
(
session
,
masks
);
planSQL
=
query
.
getPlanSQL
();
}
public
Session
getSession
()
{
return
s
ession
;
return
createS
ession
;
}
public
String
getPlanSQL
()
{
...
...
@@ -107,7 +107,7 @@ public class ViewIndex extends BaseIndex {
return
cachedCost
.
cost
;
}
}
Query
q
uery
=
(
Query
)
session
.
prepare
(
querySQL
,
true
);
Query
q
=
(
Query
)
session
.
prepare
(
querySQL
,
true
);
if
(
masks
!=
null
)
{
IntArray
paramIndex
=
new
IntArray
();
for
(
int
i
=
0
;
i
<
masks
.
length
;
i
++)
{
...
...
@@ -121,28 +121,28 @@ public class ViewIndex extends BaseIndex {
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
int
idx
=
paramIndex
.
get
(
i
);
int
mask
=
masks
[
idx
];
int
nextParamIndex
=
q
uery
.
getParameters
().
size
()
+
view
.
getParameterOffset
();
int
nextParamIndex
=
q
.
getParameters
().
size
()
+
view
.
getParameterOffset
();
if
((
mask
&
IndexCondition
.
EQUALITY
)
!=
0
)
{
Parameter
param
=
new
Parameter
(
nextParamIndex
);
q
uery
.
addGlobalCondition
(
param
,
idx
,
Comparison
.
EQUAL
);
q
.
addGlobalCondition
(
param
,
idx
,
Comparison
.
EQUAL
);
}
else
{
if
((
mask
&
IndexCondition
.
START
)
!=
0
)
{
Parameter
param
=
new
Parameter
(
nextParamIndex
);
q
uery
.
addGlobalCondition
(
param
,
idx
,
Comparison
.
BIGGER_EQUAL
);
q
.
addGlobalCondition
(
param
,
idx
,
Comparison
.
BIGGER_EQUAL
);
}
if
((
mask
&
IndexCondition
.
END
)
!=
0
)
{
Parameter
param
=
new
Parameter
(
nextParamIndex
);
q
uery
.
addGlobalCondition
(
param
,
idx
,
Comparison
.
SMALLER_EQUAL
);
q
.
addGlobalCondition
(
param
,
idx
,
Comparison
.
SMALLER_EQUAL
);
}
}
}
if
(
recursive
)
{
return
10
;
}
String
sql
=
q
uery
.
getPlanSQL
();
q
uery
=
(
Query
)
session
.
prepare
(
sql
,
true
);
String
sql
=
q
.
getPlanSQL
();
q
=
(
Query
)
session
.
prepare
(
sql
,
true
);
}
double
cost
=
q
uery
.
getCost
();
double
cost
=
q
.
getCost
();
cachedCost
=
new
CostElement
();
cachedCost
.
evaluatedAt
=
System
.
currentTimeMillis
();
cachedCost
.
cost
=
cost
;
...
...
@@ -181,7 +181,7 @@ public class ViewIndex extends BaseIndex {
}
}
// for equality, only one parameter is used (first == last)
if
(
last
!=
null
&&
m
asks
[
i
]
!=
IndexCondition
.
EQUALITY
)
{
if
(
last
!=
null
&&
indexM
asks
[
i
]
!=
IndexCondition
.
EQUALITY
)
{
Value
v
=
last
.
getValue
(
i
);
if
(
v
!=
null
)
{
Parameter
param
=
paramList
.
get
(
idx
++);
...
...
@@ -194,9 +194,9 @@ public class ViewIndex extends BaseIndex {
}
private
Query
getQuery
(
Session
session
,
int
[]
masks
)
throws
SQLException
{
Query
q
uery
=
(
Query
)
session
.
prepare
(
querySQL
,
true
);
Query
q
=
(
Query
)
session
.
prepare
(
querySQL
,
true
);
if
(
masks
==
null
)
{
return
q
uery
;
return
q
;
}
int
firstIndexParam
=
originalParameters
==
null
?
0
:
originalParameters
.
size
();
firstIndexParam
+=
view
.
getParameterOffset
();
...
...
@@ -221,24 +221,24 @@ public class ViewIndex extends BaseIndex {
int
mask
=
masks
[
idx
];
if
((
mask
&
IndexCondition
.
EQUALITY
)
==
IndexCondition
.
EQUALITY
)
{
Parameter
param
=
new
Parameter
(
firstIndexParam
+
i
);
q
uery
.
addGlobalCondition
(
param
,
idx
,
Comparison
.
EQUAL
);
q
.
addGlobalCondition
(
param
,
idx
,
Comparison
.
EQUAL
);
i
++;
}
else
{
if
((
mask
&
IndexCondition
.
START
)
==
IndexCondition
.
START
)
{
Parameter
param
=
new
Parameter
(
firstIndexParam
+
i
);
q
uery
.
addGlobalCondition
(
param
,
idx
,
Comparison
.
BIGGER_EQUAL
);
q
.
addGlobalCondition
(
param
,
idx
,
Comparison
.
BIGGER_EQUAL
);
i
++;
}
if
((
mask
&
IndexCondition
.
END
)
==
IndexCondition
.
END
)
{
Parameter
param
=
new
Parameter
(
firstIndexParam
+
i
);
q
uery
.
addGlobalCondition
(
param
,
idx
,
Comparison
.
SMALLER_EQUAL
);
q
.
addGlobalCondition
(
param
,
idx
,
Comparison
.
SMALLER_EQUAL
);
i
++;
}
}
}
String
sql
=
q
uery
.
getPlanSQL
();
q
uery
=
(
Query
)
session
.
prepare
(
sql
,
true
);
return
q
uery
;
String
sql
=
q
.
getPlanSQL
();
q
=
(
Query
)
session
.
prepare
(
sql
,
true
);
return
q
;
}
public
void
remove
(
Session
session
)
throws
SQLException
{
...
...
h2/src/main/org/h2/result/ResultTempTable.java
浏览文件 @
4419055c
...
...
@@ -35,7 +35,7 @@ public class ResultTempTable implements ResultExternal {
private
TableData
table
;
private
SortOrder
sort
;
private
Index
index
;
private
Cursor
c
ursor
;
private
Cursor
resultC
ursor
;
public
ResultTempTable
(
Session
session
,
SortOrder
sort
)
throws
SQLException
{
this
.
session
=
session
;
...
...
@@ -137,16 +137,16 @@ public class ResultTempTable implements ResultExternal {
}
public
Value
[]
next
()
throws
SQLException
{
if
(!
c
ursor
.
next
())
{
if
(!
resultC
ursor
.
next
())
{
return
null
;
}
Row
row
=
c
ursor
.
get
();
Row
row
=
resultC
ursor
.
get
();
ValueArray
data
=
(
ValueArray
)
row
.
getValue
(
0
);
return
data
.
getList
();
}
public
void
reset
()
throws
SQLException
{
c
ursor
=
index
.
find
(
session
,
null
,
null
);
resultC
ursor
=
index
.
find
(
session
,
null
,
null
);
}
private
Row
convertToRow
(
Value
[]
values
)
{
...
...
h2/src/main/org/h2/tools/Recover.java
浏览文件 @
4419055c
...
...
@@ -577,9 +577,9 @@ public class Recover extends Tool implements DataHandler {
sessionCommit
.
put
(
sessionId
,
pos
);
}
}
else
{
int
s
torage
Id
=
s
.
readInt
();
int
sId
=
s
.
readInt
();
int
recId
=
s
.
readInt
();
int
b
lock
Count
=
s
.
readInt
();
int
bCount
=
s
.
readInt
();
if
(
type
!=
'T'
)
{
s
.
readDataPageNoSize
();
}
...
...
@@ -600,9 +600,9 @@ public class Recover extends Tool implements DataHandler {
case
'T'
:
containsUncommitted
=
true
;
if
(!
onlySetSessionState
)
{
writer
.
println
(
"// truncate session: "
+
sessionId
+
" storage: "
+
s
torageId
+
" pos: "
+
recId
+
" blockCount: "
+
block
Count
);
writer
.
println
(
"// truncate session: "
+
sessionId
+
" storage: "
+
s
Id
+
" pos: "
+
recId
+
" blockCount: "
+
b
Count
);
if
(
sessionCommit
.
get
(
sessionId
)
>=
pos
)
{
setStorage
(
s
torage
Id
);
setStorage
(
sId
);
writer
.
println
(
"TRUNCATE TABLE "
+
storageName
+
";"
);
}
}
...
...
@@ -610,10 +610,10 @@ public class Recover extends Tool implements DataHandler {
case
'I'
:
containsUncommitted
=
true
;
if
(!
onlySetSessionState
)
{
writer
.
println
(
"// insert session: "
+
sessionId
+
" storage: "
+
s
torageId
+
" pos: "
+
recId
+
" blockCount: "
+
block
Count
);
if
(
s
torage
Id
>=
0
)
{
writer
.
println
(
"// insert session: "
+
sessionId
+
" storage: "
+
s
Id
+
" pos: "
+
recId
+
" blockCount: "
+
b
Count
);
if
(
sId
>=
0
)
{
if
(
sessionCommit
.
get
(
sessionId
)
>=
pos
)
{
setStorage
(
s
torage
Id
);
setStorage
(
sId
);
writeLogRecord
(
writer
,
s
,
true
);
}
}
...
...
@@ -622,10 +622,10 @@ public class Recover extends Tool implements DataHandler {
case
'D'
:
containsUncommitted
=
true
;
if
(!
onlySetSessionState
)
{
writer
.
println
(
"// delete session: "
+
sessionId
+
" storage: "
+
s
torageId
+
" pos: "
+
recId
+
" blockCount: "
+
block
Count
);
if
(
s
torage
Id
>=
0
)
{
writer
.
println
(
"// delete session: "
+
sessionId
+
" storage: "
+
s
Id
+
" pos: "
+
recId
+
" blockCount: "
+
b
Count
);
if
(
sId
>=
0
)
{
if
(
sessionCommit
.
get
(
sessionId
)
>=
pos
)
{
setStorage
(
s
torage
Id
);
setStorage
(
sId
);
writeLogRecord
(
writer
,
s
,
false
);
}
}
...
...
@@ -634,7 +634,7 @@ public class Recover extends Tool implements DataHandler {
default
:
containsUncommitted
=
true
;
if
(!
onlySetSessionState
)
{
writer
.
println
(
"// type?: "
+
type
+
" session: "
+
sessionId
+
" storage: "
+
s
torageId
+
" pos: "
+
recId
+
" blockCount: "
+
block
Count
);
writer
.
println
(
"// type?: "
+
type
+
" session: "
+
sessionId
+
" storage: "
+
s
Id
+
" pos: "
+
recId
+
" blockCount: "
+
b
Count
);
}
break
;
}
...
...
@@ -685,9 +685,9 @@ public class Recover extends Tool implements DataHandler {
writer
.
println
(
"//"
);
int
len
=
in
.
readInt
();
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
int
s
torage
Id
=
in
.
readInt
();
if
(
s
torage
Id
!=
-
1
)
{
writer
.
println
(
"// pos: "
+
(
i
*
DiskFile
.
BLOCKS_PER_PAGE
)
+
" storage: "
+
s
torage
Id
);
int
sId
=
in
.
readInt
();
if
(
sId
!=
-
1
)
{
writer
.
println
(
"// pos: "
+
(
i
*
DiskFile
.
BLOCKS_PER_PAGE
)
+
" storage: "
+
sId
);
}
}
while
(
true
)
{
...
...
@@ -705,22 +705,22 @@ public class Recover extends Tool implements DataHandler {
private
void
dumpIndex
(
String
fileName
)
{
PrintWriter
writer
=
null
;
FileStore
s
tore
=
null
;
FileStore
fileS
tore
=
null
;
try
{
setDatabaseName
(
fileName
.
substring
(
fileName
.
length
()
-
Constants
.
SUFFIX_INDEX_FILE
.
length
()));
writer
=
getWriter
(
fileName
,
".txt"
);
s
tore
=
FileStore
.
open
(
null
,
fileName
,
"r"
);
long
length
=
s
tore
.
length
();
fileS
tore
=
FileStore
.
open
(
null
,
fileName
,
"r"
);
long
length
=
fileS
tore
.
length
();
int
offset
=
FileStore
.
HEADER_LENGTH
;
int
blockSize
=
DiskFile
.
BLOCK_SIZE
;
int
blocks
=
(
int
)
(
length
/
blockSize
);
blockCount
=
1
;
int
[]
pageOwners
=
new
int
[
blocks
/
DiskFile
.
BLOCKS_PER_PAGE
];
for
(
block
=
0
;
block
<
blocks
;
block
+=
blockCount
)
{
s
tore
.
seek
(
offset
+
(
long
)
block
*
blockSize
);
fileS
tore
.
seek
(
offset
+
(
long
)
block
*
blockSize
);
byte
[]
buff
=
new
byte
[
blockSize
];
DataPage
s
=
DataPage
.
create
(
this
,
buff
);
s
tore
.
readFully
(
buff
,
0
,
blockSize
);
fileS
tore
.
readFully
(
buff
,
0
,
blockSize
);
blockCount
=
s
.
readInt
();
setStorage
(-
1
);
recordLength
=
-
1
;
...
...
@@ -746,7 +746,7 @@ public class Recover extends Tool implements DataHandler {
continue
;
}
if
(
blockCount
>
1
)
{
s
tore
.
readFully
(
s
.
getBytes
(),
blockSize
,
blockCount
*
blockSize
-
blockSize
);
fileS
tore
.
readFully
(
s
.
getBytes
(),
blockSize
,
blockCount
*
blockSize
-
blockSize
);
}
try
{
s
.
check
(
blockCount
*
blockSize
);
...
...
@@ -799,7 +799,7 @@ public class Recover extends Tool implements DataHandler {
e
.
printStackTrace
();
}
finally
{
IOUtils
.
closeSilently
(
writer
);
closeSilently
(
s
tore
);
closeSilently
(
fileS
tore
);
}
}
...
...
h2/src/test/org/h2/test/db/TestFunctions.java
浏览文件 @
4419055c
...
...
@@ -541,7 +541,7 @@ public class TestFunctions extends TestBase implements AggregateFunction {
/**
* Test method to create a simple result set.
*
* @param
c
ount the number of rows
* @param
rowC
ount the number of rows
* @param ip an int
* @param bp a boolean
* @param fp a float
...
...
@@ -551,24 +551,24 @@ public class TestFunctions extends TestBase implements AggregateFunction {
* @param sp a short
* @return a result set
*/
public
static
ResultSet
simpleResultSet
(
Integer
c
ount
,
int
ip
,
boolean
bp
,
float
fp
,
double
dp
,
long
lp
,
public
static
ResultSet
simpleResultSet
(
Integer
rowC
ount
,
int
ip
,
boolean
bp
,
float
fp
,
double
dp
,
long
lp
,
byte
byParam
,
short
sp
)
throws
SQLException
{
SimpleResultSet
rs
=
new
SimpleResultSet
();
rs
.
addColumn
(
"ID"
,
Types
.
INTEGER
,
10
,
0
);
rs
.
addColumn
(
"NAME"
,
Types
.
VARCHAR
,
255
,
0
);
if
(
c
ount
==
null
)
{
if
(
rowC
ount
==
null
)
{
if
(
ip
!=
0
||
bp
||
fp
!=
0.0
||
dp
!=
0.0
||
sp
!=
0
||
lp
!=
0
||
byParam
!=
0
)
{
throw
new
AssertionError
(
"params not 0/false"
);
}
}
if
(
c
ount
!=
null
)
{
if
(
rowC
ount
!=
null
)
{
if
(
ip
!=
1
||
!
bp
||
fp
!=
1.0
||
dp
!=
1.0
||
sp
!=
1
||
lp
!=
1
||
byParam
!=
1
)
{
throw
new
AssertionError
(
"params not 1/true"
);
}
if
(
c
ount
.
intValue
()
>=
1
)
{
if
(
rowC
ount
.
intValue
()
>=
1
)
{
rs
.
addRow
(
0
,
"Hello"
);
}
if
(
c
ount
.
intValue
()
>=
2
)
{
if
(
rowC
ount
.
intValue
()
>=
2
)
{
rs
.
addRow
(
1
,
"World"
);
}
}
...
...
h2/src/test/org/h2/test/jdbc/TestBatchUpdates.java
浏览文件 @
4419055c
...
...
@@ -61,8 +61,8 @@ public class TestBatchUpdates extends TestBase {
private
void
testExecuteCall
()
throws
SQLException
{
deleteDb
(
"batchUpdates"
);
Connection
conn
=
getConnection
(
"batchUpdates"
);
Statement
stat
=
conn
.
createStatement
();
conn
=
getConnection
(
"batchUpdates"
);
stat
=
conn
.
createStatement
();
stat
.
execute
(
"CREATE ALIAS updatePrices FOR \""
+
getClass
().
getName
()
+
".updatePrices\""
);
CallableStatement
call
=
conn
.
prepareCall
(
"{call updatePrices(?, ?)}"
);
call
.
setString
(
1
,
"Hello"
);
...
...
@@ -93,10 +93,10 @@ public class TestBatchUpdates extends TestBase {
private
void
testException
()
throws
SQLException
{
deleteDb
(
"batchUpdates"
);
Connection
conn
=
getConnection
(
"batchUpdates"
);
Statement
stat
=
conn
.
createStatement
();
conn
=
getConnection
(
"batchUpdates"
);
stat
=
conn
.
createStatement
();
stat
.
execute
(
"create table test(id int primary key)"
);
PreparedStatement
prep
=
conn
.
prepareStatement
(
"insert into test values(?)"
);
prep
=
conn
.
prepareStatement
(
"insert into test values(?)"
);
for
(
int
i
=
0
;
i
<
700
;
i
++)
{
prep
.
setString
(
1
,
"x"
);
prep
.
addBatch
();
...
...
@@ -119,7 +119,7 @@ public class TestBatchUpdates extends TestBase {
private
void
testCoffee
()
throws
SQLException
{
deleteDb
(
"batchUpdates"
);
this
.
conn
=
getConnection
(
"batchUpdates"
);
conn
=
getConnection
(
"batchUpdates"
);
stat
=
conn
.
createStatement
();
DatabaseMetaData
meta
=
conn
.
getMetaData
();
if
(!
meta
.
supportsBatchUpdates
())
{
...
...
h2/src/test/org/h2/test/jdbc/TestMetaData.java
浏览文件 @
4419055c
...
...
@@ -197,7 +197,7 @@ public class TestMetaData extends TestBase {
trace
(
name
+
"="
+
value
);
}
test
(
conn
);
test
More
(
);
// meta.getTablePrivileges()
...
...
@@ -215,17 +215,17 @@ public class TestMetaData extends TestBase {
}
private
void
testColumnLobMeta
()
throws
SQLException
{
Statement
stat
=
conn
.
createStatement
();
stat
=
conn
.
createStatement
();
stat
.
executeUpdate
(
"CREATE TABLE t (blob BLOB, clob CLOB)"
);
stat
.
execute
(
"INSERT INTO t VALUES('', '')"
);
ResultSet
rs
=
stat
.
executeQuery
(
"SELECT blob,clob FROM t"
);
ResultSetMetaData
m
eta
=
rs
.
getMetaData
();
ResultSetMetaData
rsM
eta
=
rs
.
getMetaData
();
if
(
SysProperties
.
RETURN_LOB_OBJECTS
)
{
assertEquals
(
"java.sql.Blob"
,
m
eta
.
getColumnClassName
(
1
));
assertEquals
(
"java.sql.Clob"
,
m
eta
.
getColumnClassName
(
2
));
assertEquals
(
"java.sql.Blob"
,
rsM
eta
.
getColumnClassName
(
1
));
assertEquals
(
"java.sql.Clob"
,
rsM
eta
.
getColumnClassName
(
2
));
}
else
{
assertEquals
(
"java.io.InputStream"
,
m
eta
.
getColumnClassName
(
1
));
assertEquals
(
"java.io.Reader"
,
m
eta
.
getColumnClassName
(
2
));
assertEquals
(
"java.io.InputStream"
,
rsM
eta
.
getColumnClassName
(
1
));
assertEquals
(
"java.io.Reader"
,
rsM
eta
.
getColumnClassName
(
2
));
}
rs
.
next
();
if
(
SysProperties
.
RETURN_LOB_OBJECTS
)
{
...
...
@@ -239,50 +239,50 @@ public class TestMetaData extends TestBase {
}
private
void
testColumnMetaData
()
throws
SQLException
{
String
s
tatement
=
"select substring('Hello',0,1)"
;
ResultSet
rs
=
conn
.
prepareStatement
(
s
tatement
).
executeQuery
();
String
s
ql
=
"select substring('Hello',0,1)"
;
ResultSet
rs
=
conn
.
prepareStatement
(
s
ql
).
executeQuery
();
rs
.
next
();
int
type
=
rs
.
getMetaData
().
getColumnType
(
1
);
assertEquals
(
Types
.
VARCHAR
,
type
);
rs
=
conn
.
createStatement
().
executeQuery
(
"SELECT COUNT(*) C FROM DUAL"
);
assertEquals
(
"C"
,
rs
.
getMetaData
().
getColumnName
(
1
));
Statement
stat
=
conn
.
createStatement
();
stat
=
conn
.
createStatement
();
stat
.
execute
(
"create table a(x array)"
);
stat
.
execute
(
"insert into a values((1, 2))"
);
rs
=
stat
.
executeQuery
(
"SELECT x[1] FROM a"
);
ResultSetMetaData
m
eta
=
rs
.
getMetaData
();
assertEquals
(
Types
.
VARCHAR
,
m
eta
.
getColumnType
(
1
));
ResultSetMetaData
rsM
eta
=
rs
.
getMetaData
();
assertEquals
(
Types
.
VARCHAR
,
rsM
eta
.
getColumnType
(
1
));
rs
.
next
();
// assertEquals(String.class.getName(), rs.getObject(1).getClass().getName());
stat
.
execute
(
"drop table a"
);
}
private
void
testColumnPrecision
()
throws
SQLException
{
Statement
stat
=
conn
.
createStatement
();
stat
=
conn
.
createStatement
();
stat
.
execute
(
"CREATE TABLE ONE(X NUMBER(12,2), Y FLOAT)"
);
stat
.
execute
(
"CREATE TABLE TWO AS SELECT * FROM ONE"
);
ResultSet
rs
;
ResultSetMetaData
m
eta
;
ResultSetMetaData
rsM
eta
;
rs
=
stat
.
executeQuery
(
"SELECT * FROM ONE"
);
m
eta
=
rs
.
getMetaData
();
assertEquals
(
12
,
m
eta
.
getPrecision
(
1
));
assertEquals
(
17
,
m
eta
.
getPrecision
(
2
));
assertEquals
(
Types
.
DECIMAL
,
m
eta
.
getColumnType
(
1
));
assertEquals
(
Types
.
DOUBLE
,
m
eta
.
getColumnType
(
2
));
rsM
eta
=
rs
.
getMetaData
();
assertEquals
(
12
,
rsM
eta
.
getPrecision
(
1
));
assertEquals
(
17
,
rsM
eta
.
getPrecision
(
2
));
assertEquals
(
Types
.
DECIMAL
,
rsM
eta
.
getColumnType
(
1
));
assertEquals
(
Types
.
DOUBLE
,
rsM
eta
.
getColumnType
(
2
));
rs
=
stat
.
executeQuery
(
"SELECT * FROM TWO"
);
m
eta
=
rs
.
getMetaData
();
assertEquals
(
12
,
m
eta
.
getPrecision
(
1
));
assertEquals
(
17
,
m
eta
.
getPrecision
(
2
));
assertEquals
(
Types
.
DECIMAL
,
m
eta
.
getColumnType
(
1
));
assertEquals
(
Types
.
DOUBLE
,
m
eta
.
getColumnType
(
2
));
rsM
eta
=
rs
.
getMetaData
();
assertEquals
(
12
,
rsM
eta
.
getPrecision
(
1
));
assertEquals
(
17
,
rsM
eta
.
getPrecision
(
2
));
assertEquals
(
Types
.
DECIMAL
,
rsM
eta
.
getColumnType
(
1
));
assertEquals
(
Types
.
DOUBLE
,
rsM
eta
.
getColumnType
(
2
));
stat
.
execute
(
"DROP TABLE ONE, TWO"
);
}
private
void
testColumnDefault
()
throws
SQLException
{
DatabaseMetaData
meta
=
conn
.
getMetaData
();
meta
=
conn
.
getMetaData
();
ResultSet
rs
;
Statement
stat
=
conn
.
createStatement
();
stat
=
conn
.
createStatement
();
stat
.
execute
(
"CREATE TABLE TEST(A INT, B INT DEFAULT NULL)"
);
rs
=
meta
.
getColumns
(
null
,
null
,
"TEST"
,
null
);
rs
.
next
();
...
...
@@ -296,9 +296,9 @@ public class TestMetaData extends TestBase {
}
private
void
testProcedureColumns
()
throws
SQLException
{
DatabaseMetaData
meta
=
conn
.
getMetaData
();
meta
=
conn
.
getMetaData
();
ResultSet
rs
;
Statement
stat
=
conn
.
createStatement
();
stat
=
conn
.
createStatement
();
stat
.
execute
(
"CREATE ALIAS PROP FOR \"java.lang.System.getProperty(java.lang.String)\""
);
stat
.
execute
(
"CREATE ALIAS EXIT FOR \"java.lang.System.exit\""
);
rs
=
meta
.
getProcedures
(
null
,
null
,
"EX%"
);
...
...
@@ -330,12 +330,11 @@ public class TestMetaData extends TestBase {
}
private
void
testCrossReferences
()
throws
SQLException
{
DatabaseMetaData
meta
=
conn
.
getMetaData
();
meta
=
conn
.
getMetaData
();
ResultSet
rs
;
Statement
stat
=
conn
.
createStatement
();
stat
=
conn
.
createStatement
();
stat
.
execute
(
"CREATE TABLE PARENT(A INT, B INT, PRIMARY KEY(A, B))"
);
stat
.
execute
(
"CREATE TABLE CHILD(ID INT PRIMARY KEY, PA INT, PB INT, CONSTRAINT AB FOREIGN KEY(PA, PB) REFERENCES PARENT(A, B))"
);
stat
.
execute
(
"CREATE TABLE CHILD(ID INT PRIMARY KEY, PA INT, PB INT, CONSTRAINT AB FOREIGN KEY(PA, PB) REFERENCES PARENT(A, B))"
);
rs
=
meta
.
getCrossReference
(
null
,
"PUBLIC"
,
"PARENT"
,
null
,
"PUBLIC"
,
"CHILD"
);
checkCrossRef
(
rs
);
rs
=
meta
.
getImportedKeys
(
null
,
"PUBLIC"
,
"CHILD"
);
...
...
@@ -363,8 +362,8 @@ public class TestMetaData extends TestBase {
}
private
void
testTempTable
()
throws
SQLException
{
Connection
conn
=
getConnection
(
"metaData"
);
Statement
stat
=
conn
.
createStatement
();
conn
=
getConnection
(
"metaData"
);
stat
=
conn
.
createStatement
();
stat
.
execute
(
"DROP TABLE IF EXISTS TEST_TEMP"
);
stat
.
execute
(
"CREATE TEMP TABLE TEST_TEMP(ID INT PRIMARY KEY, NAME VARCHAR(255))"
);
stat
.
execute
(
"CREATE INDEX IDX_NAME ON TEST_TEMP(NAME)"
);
...
...
@@ -579,9 +578,9 @@ public class TestMetaData extends TestBase {
assertTrue
(
meta
.
usesLocalFiles
());
}
private
void
test
(
Connection
conn
)
throws
SQLException
{
DatabaseMetaData
meta
=
conn
.
getMetaData
();
Statement
stat
=
conn
.
createStatement
();
private
void
test
More
(
)
throws
SQLException
{
meta
=
conn
.
getMetaData
();
stat
=
conn
.
createStatement
();
ResultSet
rs
;
conn
.
setReadOnly
(
true
);
...
...
h2/src/test/org/h2/test/jdbc/TestNativeSQL.java
浏览文件 @
4419055c
...
...
@@ -209,7 +209,7 @@ public class TestNativeSQL extends TestBase {
private
void
testPairs
()
{
for
(
int
i
=
0
;
i
<
PAIRS
.
length
;
i
+=
2
)
{
test
(
conn
,
PAIRS
[
i
],
PAIRS
[
i
+
1
]);
test
(
PAIRS
[
i
],
PAIRS
[
i
+
1
]);
}
}
...
...
@@ -241,7 +241,7 @@ public class TestNativeSQL extends TestBase {
assertFalse
(
conn
.
isClosed
());
}
private
void
test
(
Connection
conn
,
String
original
,
String
expected
)
{
private
void
test
(
String
original
,
String
expected
)
{
trace
(
"original: <"
+
original
+
">"
);
trace
(
"expected: <"
+
expected
+
">"
);
try
{
...
...
h2/src/test/org/h2/test/jdbc/TestResultSet.java
浏览文件 @
4419055c
...
...
@@ -166,7 +166,7 @@ public class TestResultSet extends TestBase {
assertFalse
(
meta
.
ownDeletesAreVisible
(
type
));
assertFalse
(
meta
.
ownInsertsAreVisible
(
type
));
}
Statement
stat
=
conn
.
createStatement
(
ResultSet
.
TYPE_SCROLL_INSENSITIVE
,
stat
=
conn
.
createStatement
(
ResultSet
.
TYPE_SCROLL_INSENSITIVE
,
ResultSet
.
CONCUR_UPDATABLE
);
stat
.
execute
(
"CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255))"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(1, 'Hello')"
);
...
...
@@ -182,7 +182,7 @@ public class TestResultSet extends TestBase {
}
private
void
testUpdatePrimaryKey
()
throws
SQLException
{
Statement
stat
=
conn
.
createStatement
(
ResultSet
.
TYPE_SCROLL_INSENSITIVE
,
stat
=
conn
.
createStatement
(
ResultSet
.
TYPE_SCROLL_INSENSITIVE
,
ResultSet
.
CONCUR_UPDATABLE
);
stat
.
execute
(
"CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255))"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(1, 'Hello')"
);
...
...
@@ -920,7 +920,7 @@ public class TestResultSet extends TestBase {
trace
(
"Test CLOB"
);
ResultSet
rs
;
String
string
;
Statement
stat
=
conn
.
createStatement
(
ResultSet
.
TYPE_FORWARD_ONLY
,
ResultSet
.
CONCUR_UPDATABLE
);
stat
=
conn
.
createStatement
(
ResultSet
.
TYPE_FORWARD_ONLY
,
ResultSet
.
CONCUR_UPDATABLE
);
stat
.
execute
(
"CREATE TABLE TEST(ID INT PRIMARY KEY,VALUE CLOB)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(1,'Test')"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(2,'Hello')"
);
...
...
h2/src/test/org/h2/test/jdbc/TestStatement.java
浏览文件 @
4419055c
...
...
@@ -66,22 +66,22 @@ public class TestStatement extends TestBase {
// ignore
}
FileObject
trace
=
FileSystem
.
getInstance
(
fileName
).
openFileObject
(
fileName
,
"r"
);
long
start
=
trace
.
length
();
long
lengthBefore
=
trace
.
length
();
try
{
stat
.
execute
(
"ERROR"
);
}
catch
(
SQLException
e
)
{
// ignore
}
long
error
=
trace
.
length
();
assertSmaller
(
start
,
error
);
start
=
error
;
assertSmaller
(
lengthBefore
,
error
);
lengthBefore
=
error
;
try
{
stat
.
execute
(
"INSERT INTO TEST VALUES(1)"
);
}
catch
(
SQLException
e
)
{
// ignore
}
error
=
trace
.
length
();
assertEquals
(
start
,
error
);
assertEquals
(
lengthBefore
,
error
);
stat
.
execute
(
"DROP TABLE TEST IF EXISTS"
);
}
...
...
h2/src/test/org/h2/test/jdbcx/TestConnectionPool.java
浏览文件 @
4419055c
...
...
@@ -60,17 +60,17 @@ public class TestConnectionPool extends TestBase {
JdbcConnectionPool
man
=
JdbcConnectionPool
.
create
(
url
,
user
,
password
);
Connection
conn
=
man
.
getConnection
();
int
len
=
1000
;
long
start
=
System
.
currentTimeMillis
();
long
time
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
man
.
getConnection
().
close
();
}
trace
((
int
)
(
System
.
currentTimeMillis
()
-
start
));
trace
((
int
)
(
System
.
currentTimeMillis
()
-
time
));
man
.
dispose
();
start
=
System
.
currentTimeMillis
();
time
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
DriverManager
.
getConnection
(
url
,
user
,
password
).
close
();
}
trace
((
int
)
(
System
.
currentTimeMillis
()
-
start
));
trace
((
int
)
(
System
.
currentTimeMillis
()
-
time
));
conn
.
close
();
}
...
...
h2/src/test/org/h2/test/synth/TestCrashAPI.java
浏览文件 @
4419055c
...
...
@@ -182,8 +182,8 @@ public class TestCrashAPI extends TestBase {
throw
e
;
}
int
len
=
random
.
getInt
(
50
);
int
star
t
=
random
.
getInt
(
statements
.
size
()
-
len
);
int
end
=
star
t
+
len
;
int
firs
t
=
random
.
getInt
(
statements
.
size
()
-
len
);
int
end
=
firs
t
+
len
;
Statement
stat
=
conn
.
createStatement
();
stat
.
execute
(
"SET LOCK_TIMEOUT 10"
);
stat
.
execute
(
"SET WRITE_DELAY 0"
);
...
...
@@ -197,7 +197,7 @@ public class TestCrashAPI extends TestBase {
}
}
stat
.
execute
(
"SCRIPT NOPASSWORDS NOSETTINGS"
);
for
(
int
i
=
star
t
;
i
<
end
&&
i
<
statements
.
size
();
i
++)
{
for
(
int
i
=
firs
t
;
i
<
end
&&
i
<
statements
.
size
();
i
++)
{
try
{
stat
.
execute
(
"SELECT * FROM TEST WHERE ID=1"
);
}
catch
(
Throwable
t
)
{
...
...
h2/src/test/org/h2/test/synth/TestHalt.java
浏览文件 @
4419055c
...
...
@@ -228,14 +228,14 @@ public abstract class TestHalt extends TestBase {
// OP_DELETE = 1, OP_UPDATE = 2, OP_SELECT = 4;
// int flags = FLAG_NODELAY;
// FLAG_NO_DELAY = 1, FLAG_AUTO_COMMIT = 2, FLAG_SMALL_CACHE = 4;
int
v
alue
=
random
.
nextInt
(
1000
);
int
testV
alue
=
random
.
nextInt
(
1000
);
// for Derby and HSQLDB
// String classPath = "-cp
// .;D:/data/java/hsqldb.jar;D:/data/java/derby.jar";
String
selfDestruct
=
SelfDestructor
.
getPropertyString
(
60
);
String
[]
procDef
=
new
String
[]
{
"java"
,
selfDestruct
,
getPageStoreProperty
(),
"-cp"
,
getClassPath
(),
getClass
().
getName
(),
""
+
operations
,
""
+
flags
,
""
+
v
alue
};
getClass
().
getName
(),
""
+
operations
,
""
+
flags
,
""
+
testV
alue
};
traceOperation
(
"start: "
+
StringUtils
.
arrayCombine
(
procDef
,
' '
));
Process
p
=
Runtime
.
getRuntime
().
exec
(
procDef
);
InputStream
in
=
p
.
getInputStream
();
...
...
h2/src/test/org/h2/test/synth/TestJoin.java
浏览文件 @
4419055c
...
...
@@ -100,14 +100,14 @@ public class TestJoin extends TestBase {
execute
(
"INSERT INTO TWO VALUES(3, 3)"
,
null
);
execute
(
"INSERT INTO TWO VALUES(4, NULL)"
,
null
);
random
=
new
Random
();
long
start
=
System
.
currentTimeMillis
();
long
start
Time
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;;
i
++)
{
paramCount
=
0
;
buff
=
new
StringBuilder
();
long
time
=
System
.
currentTimeMillis
();
if
(
time
-
start
>
5000
)
{
if
(
time
-
start
Time
>
5000
)
{
printTime
(
"i:"
+
i
);
start
=
time
;
start
Time
=
time
;
}
buff
.
append
(
"SELECT "
);
int
tables
=
1
+
random
.
nextInt
(
5
);
...
...
@@ -279,27 +279,27 @@ public class TestJoin extends TestBase {
}
private
String
readResult
(
ResultSet
rs
)
throws
SQLException
{
StringBuilder
b
uff
=
new
StringBuilder
();
StringBuilder
b
=
new
StringBuilder
();
ResultSetMetaData
meta
=
rs
.
getMetaData
();
int
columnCount
=
meta
.
getColumnCount
();
for
(
int
i
=
0
;
i
<
columnCount
;
i
++)
{
if
(
i
>
0
)
{
b
uff
.
append
(
","
);
b
.
append
(
","
);
}
b
uff
.
append
(
StringUtils
.
toUpperEnglish
(
meta
.
getColumnLabel
(
i
+
1
)));
b
.
append
(
StringUtils
.
toUpperEnglish
(
meta
.
getColumnLabel
(
i
+
1
)));
}
b
uff
.
append
(
":\n"
);
String
result
=
b
uff
.
toString
();
b
.
append
(
":\n"
);
String
result
=
b
.
toString
();
ArrayList
<
String
>
list
=
New
.
arrayList
();
while
(
rs
.
next
())
{
b
uff
=
new
StringBuilder
();
b
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
columnCount
;
i
++)
{
if
(
i
>
0
)
{
b
uff
.
append
(
","
);
b
.
append
(
","
);
}
b
uff
.
append
(
rs
.
getString
(
i
+
1
));
b
.
append
(
rs
.
getString
(
i
+
1
));
}
list
.
add
(
b
uff
.
toString
());
list
.
add
(
b
.
toString
());
}
Collections
.
sort
(
list
);
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
...
...
h2/src/test/org/h2/test/synth/TestRandomSQL.java
浏览文件 @
4419055c
...
...
@@ -30,7 +30,7 @@ public class TestRandomSQL extends TestBase {
private
ArrayList
<
RuleHead
>
statements
;
private
int
seed
;
private
boolean
exitOnError
=
true
;
private
Bnf
bnf
;
private
Bnf
bnf
Syntax
;
private
int
success
,
total
;
/**
...
...
@@ -99,9 +99,9 @@ public class TestRandomSQL extends TestBase {
public
TestBase
init
(
TestAll
conf
)
throws
Exception
{
super
.
init
(
conf
);
bnf
=
Bnf
.
getInstance
(
null
);
bnf
.
linkStatements
();
statements
=
bnf
.
getStatements
();
bnf
Syntax
=
Bnf
.
getInstance
(
null
);
bnf
Syntax
.
linkStatements
();
statements
=
bnf
Syntax
.
getStatements
();
// go backwards so we can append at the end
for
(
int
i
=
statements
.
size
()
-
1
;
i
>=
0
;
i
--)
{
...
...
@@ -131,8 +131,8 @@ public class TestRandomSQL extends TestBase {
return
this
;
}
private
void
testWithSeed
(
Bnf
config
)
throws
SQLException
{
config
.
getRandom
().
setSeed
(
seed
);
private
void
testWithSeed
(
Bnf
bnf
)
throws
SQLException
{
bnf
.
getRandom
().
setSeed
(
seed
);
Connection
conn
=
null
;
try
{
conn
=
connect
();
...
...
@@ -142,9 +142,9 @@ public class TestRandomSQL extends TestBase {
}
Statement
stat
=
conn
.
createStatement
();
for
(
int
i
=
0
;
i
<
statements
.
size
();
i
++)
{
int
sid
=
config
.
getRandom
().
nextInt
(
statements
.
size
());
int
sid
=
bnf
.
getRandom
().
nextInt
(
statements
.
size
());
RuleHead
r
=
statements
.
get
(
sid
);
String
rand
=
r
.
getRule
().
random
(
config
,
0
).
trim
();
String
rand
=
r
.
getRule
().
random
(
bnf
,
0
).
trim
();
if
(
rand
.
length
()
>
0
)
{
try
{
Thread
.
yield
();
...
...
@@ -184,7 +184,7 @@ public class TestRandomSQL extends TestBase {
}
catch
(
SQLException
e
)
{
processException
(
"deleteDb"
,
e
);
}
testWithSeed
(
bnf
);
testWithSeed
(
bnf
Syntax
);
}
finally
{
SysProperties
.
setScriptDirectory
(
old
);
}
...
...
@@ -203,8 +203,8 @@ public class TestRandomSQL extends TestBase {
exitOnError
=
false
;
showSQL
=
false
;
for
(
int
a
=
0
;
a
<
len
;
a
++)
{
int
s
eed
=
RandomUtils
.
nextInt
(
Integer
.
MAX_VALUE
);
testCase
(
s
eed
);
int
s
=
RandomUtils
.
nextInt
(
Integer
.
MAX_VALUE
);
testCase
(
s
);
}
}
...
...
h2/src/test/org/h2/test/synth/TestThreads.java
浏览文件 @
4419055c
...
...
@@ -67,10 +67,10 @@ public class TestThreads extends TestBase implements Runnable {
int
threadCount
=
4
;
Thread
[]
threads
=
new
Thread
[
threadCount
];
for
(
int
i
=
0
;
i
<
threadCount
;
i
++)
{
String
t
able
=
random
.
nextBoolean
()
?
null
:
getRandomTable
();
String
t
=
random
.
nextBoolean
()
?
null
:
getRandomTable
();
int
op
=
random
.
nextInt
(
OP_TYPES
);
op
=
i
%
2
==
0
?
RECONNECT
:
CHECKPOINT
;
threads
[
i
]
=
new
Thread
(
new
TestThreads
(
this
,
op
,
t
able
));
threads
[
i
]
=
new
Thread
(
new
TestThreads
(
this
,
op
,
t
));
}
for
(
int
i
=
0
;
i
<
threadCount
;
i
++)
{
threads
[
i
].
start
();
...
...
h2/src/test/org/h2/test/synth/TestTimer.java
浏览文件 @
4419055c
...
...
@@ -47,7 +47,7 @@ public class TestTimer extends TestBase {
Random
random
=
new
Random
();
int
max
=
0
;
int
count
=
0
;
long
start
=
System
.
currentTimeMillis
();
long
start
Time
=
System
.
currentTimeMillis
();
while
(
true
)
{
int
action
=
random
.
nextInt
(
10
);
int
x
=
max
==
0
?
0
:
random
.
nextInt
(
max
);
...
...
@@ -82,9 +82,9 @@ public class TestTimer extends TestBase {
int
c
=
rs
.
getInt
(
1
);
assertEquals
(
count
,
c
);
long
time
=
System
.
currentTimeMillis
();
if
(
time
>
start
+
5000
)
{
if
(
time
>
start
Time
+
5000
)
{
println
(
"rows: "
+
count
);
start
=
time
;
start
Time
=
time
;
}
break
;
default
:
...
...
h2/src/test/org/h2/test/unit/TestAutoReconnect.java
浏览文件 @
4419055c
...
...
@@ -55,13 +55,14 @@ public class TestAutoReconnect extends TestBase implements DatabaseEventListener
}
public
void
test
()
throws
Exception
{
testReconnect
(
true
);
testReconnect
(
false
);
autoServer
=
true
;
testReconnect
();
autoServer
=
false
;
testReconnect
();
deleteDb
(
"autoReconnect"
);
}
private
void
testReconnect
(
boolean
autoServer
)
throws
Exception
{
this
.
autoServer
=
autoServer
;
private
void
testReconnect
()
throws
Exception
{
deleteDb
(
"autoReconnect"
);
if
(
autoServer
)
{
url
=
"jdbc:h2:"
+
baseDir
+
"/autoReconnect;"
+
...
...
@@ -197,7 +198,7 @@ public class TestAutoReconnect extends TestBase implements DatabaseEventListener
// ignore
}
public
void
init
(
String
u
rl
)
{
public
void
init
(
String
u
)
{
state
=
"init"
;
}
...
...
h2/src/test/org/h2/test/unit/TestClearReferences.java
浏览文件 @
4419055c
...
...
@@ -47,9 +47,8 @@ public class TestClearReferences extends TestBase {
}
public
void
test
()
throws
Exception
{
String
baseDir
=
"bin/org/h2"
;
ArrayList
<
Class
<
?
>>
classes
=
New
.
arrayList
();
check
(
classes
,
new
File
(
baseDir
));
check
(
classes
,
new
File
(
"bin/org/h2"
));
for
(
Class
<
?
>
clazz
:
classes
)
{
clearClass
(
clazz
);
}
...
...
h2/src/test/org/h2/test/unit/TestCompress.java
浏览文件 @
4419055c
...
...
@@ -137,7 +137,7 @@ public class TestCompress extends TestBase {
byte
[]
test
=
new
byte
[
2
*
pageSize
];
compress
.
compress
(
buff
,
pageSize
,
test
,
0
);
for
(
int
j
=
0
;
j
<
4
;
j
++)
{
long
start
=
System
.
currentTimeMillis
();
long
time
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
1000
;
i
++)
{
InputStream
in
=
FileSystem
.
getInstance
(
"memFS:"
).
openFileInputStream
(
"memFS:compress.h2.db"
);
int
total
=
0
;
...
...
@@ -150,7 +150,7 @@ public class TestCompress extends TestBase {
}
in
.
close
();
}
System
.
out
.
println
(
"compress: "
+
(
System
.
currentTimeMillis
()
-
start
)
+
" ms"
);
System
.
out
.
println
(
"compress: "
+
(
System
.
currentTimeMillis
()
-
time
)
+
" ms"
);
}
for
(
int
j
=
0
;
j
<
4
;
j
++)
{
...
...
@@ -168,14 +168,14 @@ public class TestCompress extends TestBase {
}
in
.
close
();
byte
[]
result
=
new
byte
[
pageSize
];
long
start
=
System
.
currentTimeMillis
();
long
time
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
1000
;
i
++)
{
for
(
int
k
=
0
;
k
<
comp
.
size
();
k
++)
{
byte
[]
data
=
comp
.
get
(
k
);
compress
.
expand
(
data
,
0
,
data
.
length
,
result
,
0
,
pageSize
);
}
}
System
.
out
.
println
(
"expand: "
+
(
System
.
currentTimeMillis
()
-
start
)
+
" ms"
);
System
.
out
.
println
(
"expand: "
+
(
System
.
currentTimeMillis
()
-
time
)
+
" ms"
);
}
}
...
...
@@ -214,11 +214,11 @@ public class TestCompress extends TestBase {
}
CompressTool
utils
=
CompressTool
.
getInstance
();
for
(
String
a
:
new
String
[]
{
"LZF"
,
"No"
,
"Deflate"
})
{
long
start
=
System
.
currentTimeMillis
();
long
time
=
System
.
currentTimeMillis
();
byte
[]
out
=
utils
.
compress
(
buff
,
a
);
byte
[]
test
=
utils
.
expand
(
out
);
if
(
testPerformance
)
{
System
.
out
.
println
(
"p:"
+
pattern
+
" len: "
+
out
.
length
+
" time: "
+
(
System
.
currentTimeMillis
()
-
start
)
+
" "
+
a
);
System
.
out
.
println
(
"p:"
+
pattern
+
" len: "
+
out
.
length
+
" time: "
+
(
System
.
currentTimeMillis
()
-
time
)
+
" "
+
a
);
}
assertEquals
(
buff
.
length
,
test
.
length
);
assertEquals
(
buff
,
test
);
...
...
h2/src/test/org/h2/test/unit/TestDataPage.java
浏览文件 @
4419055c
...
...
@@ -217,8 +217,8 @@ public class TestDataPage extends TestBase implements DataHandler {
return
null
;
}
public
int
getChecksum
(
byte
[]
data
,
int
s
tart
,
int
end
)
{
return
e
nd
-
start
;
public
int
getChecksum
(
byte
[]
data
,
int
s
,
int
e
)
{
return
e
-
s
;
}
public
void
checkPowerOff
()
{
...
...
h2/src/test/org/h2/test/unit/TestFile.java
浏览文件 @
4419055c
...
...
@@ -157,7 +157,7 @@ public class TestFile extends TestBase implements DataHandler {
// nothing to do
}
public
int
getChecksum
(
byte
[]
data
,
int
s
tart
,
int
end
)
{
public
int
getChecksum
(
byte
[]
data
,
int
s
,
int
e
)
{
return
0
;
}
...
...
h2/src/test/org/h2/test/unit/TestFileLock.java
浏览文件 @
4419055c
...
...
@@ -78,13 +78,13 @@ public class TestFileLock extends TestBase implements Runnable {
lock2
.
unlock
();
}
private
void
test
(
boolean
allowSockets
)
throws
Exception
{
private
void
test
(
boolean
allowSockets
Lock
)
throws
Exception
{
int
threadCount
=
getSize
(
3
,
5
);
wait
=
getSize
(
20
,
200
);
Thread
[]
threads
=
new
Thread
[
threadCount
];
new
File
(
FILE
).
delete
();
for
(
int
i
=
0
;
i
<
threadCount
;
i
++)
{
threads
[
i
]
=
new
Thread
(
new
TestFileLock
(
this
,
allowSockets
));
threads
[
i
]
=
new
Thread
(
new
TestFileLock
(
this
,
allowSockets
Lock
));
threads
[
i
].
start
();
Thread
.
sleep
(
wait
+
(
int
)
(
Math
.
random
()
*
wait
));
}
...
...
h2/src/test/org/h2/test/unit/TestFileLockSerialized.java
浏览文件 @
4419055c
...
...
@@ -71,9 +71,9 @@ public class TestFileLockSerialized extends TestBase {
deleteDb
(
"fileLockSerialized"
);
final
String
url
=
"jdbc:h2:"
+
baseDir
+
"/fileLockSerialized;FILE_LOCK=SERIALIZED;OPEN_NEW=TRUE"
;
Connection
c
=
DriverManager
.
getConnection
(
url
);
c
.
createStatement
().
execute
(
"create table test(id int) as select 1"
);
c
.
close
();
Connection
c
onn
=
DriverManager
.
getConnection
(
url
);
c
onn
.
createStatement
().
execute
(
"create table test(id int) as select 1"
);
c
onn
.
close
();
final
int
len
=
10
;
final
Exception
[]
ex
=
new
Exception
[
1
];
...
...
@@ -147,9 +147,9 @@ public class TestFileLockSerialized extends TestBase {
while
(!
stop
[
0
])
{
try
{
Thread
.
sleep
(
10
);
Connection
c
onn
=
DriverManager
.
getConnection
(
writeUrl
,
"sa"
,
"sa"
);
c
onn
.
createStatement
().
execute
(
"select * from test"
);
c
onn
.
close
();
Connection
c
=
DriverManager
.
getConnection
(
writeUrl
,
"sa"
,
"sa"
);
c
.
createStatement
().
execute
(
"select * from test"
);
c
.
close
();
}
catch
(
Exception
e
)
{
// ignore
}
...
...
@@ -294,10 +294,10 @@ public class TestFileLockSerialized extends TestBase {
final
String
url
=
"jdbc:h2:"
+
baseDir
+
"/fileLockSerialized;FILE_LOCK=SERIALIZED;OPEN_NEW=TRUE;"
+
"AUTO_RECONNECT=TRUE;MAX_LENGTH_INPLACE_LOB=8192;COMPRESS_LOB=DEFLATE;LOG=2;CACHE_SIZE=65536"
;
Connection
c
=
DriverManager
.
getConnection
(
url
);
c
.
createStatement
().
execute
(
"create table test(id int)"
);
c
.
createStatement
().
execute
(
"insert into test values(1)"
);
c
.
close
();
Connection
c
onn
=
DriverManager
.
getConnection
(
url
);
c
onn
.
createStatement
().
execute
(
"create table test(id int)"
);
c
onn
.
createStatement
().
execute
(
"insert into test values(1)"
);
c
onn
.
close
();
final
long
endTime
=
System
.
currentTimeMillis
()
+
runTime
;
final
Exception
[]
ex
=
new
Exception
[
1
];
...
...
h2/src/test/org/h2/test/unit/TestOverflow.java
浏览文件 @
4419055c
...
...
@@ -24,7 +24,7 @@ import org.h2.value.ValueString;
public
class
TestOverflow
extends
TestBase
{
private
ArrayList
<
Value
>
values
;
private
int
t
ype
;
private
int
dataT
ype
;
private
BigInteger
min
,
max
;
private
boolean
successExpected
;
...
...
@@ -44,24 +44,24 @@ public class TestOverflow extends TestBase {
test
(
Value
.
SHORT
,
Short
.
MIN_VALUE
,
Short
.
MAX_VALUE
);
}
private
void
test
(
int
type
,
long
min
,
long
max
)
throws
SQLException
{
private
void
test
(
int
type
,
long
min
Value
,
long
maxValue
)
throws
SQLException
{
values
=
New
.
arrayList
();
this
.
t
ype
=
type
;
this
.
min
=
new
BigInteger
(
""
+
min
);
this
.
max
=
new
BigInteger
(
""
+
max
);
this
.
dataT
ype
=
type
;
this
.
min
=
new
BigInteger
(
""
+
min
Value
);
this
.
max
=
new
BigInteger
(
""
+
max
Value
);
add
(
0
);
add
(
min
);
add
(
max
);
add
(
max
-
1
);
add
(
min
+
1
);
add
(
min
Value
);
add
(
max
Value
);
add
(
max
Value
-
1
);
add
(
min
Value
+
1
);
add
(
1
);
add
(-
1
);
Random
random
=
new
Random
(
1
);
for
(
int
i
=
0
;
i
<
40
;
i
++)
{
if
(
max
>
Integer
.
MAX_VALUE
)
{
if
(
max
Value
>
Integer
.
MAX_VALUE
)
{
add
(
random
.
nextLong
());
}
else
{
add
((
random
.
nextBoolean
()
?
1
:
-
1
)
*
random
.
nextInt
((
int
)
max
));
add
((
random
.
nextBoolean
()
?
1
:
-
1
)
*
random
.
nextInt
((
int
)
max
Value
));
}
}
for
(
Value
va
:
values
)
{
...
...
@@ -127,7 +127,7 @@ public class TestOverflow extends TestBase {
}
private
void
add
(
long
l
)
throws
SQLException
{
values
.
add
(
ValueString
.
get
(
""
+
l
).
convertTo
(
t
ype
));
values
.
add
(
ValueString
.
get
(
""
+
l
).
convertTo
(
dataT
ype
));
}
}
h2/src/test/org/h2/test/unit/TestPageStore.java
浏览文件 @
4419055c
...
...
@@ -325,15 +325,15 @@ public class TestPageStore extends TestBase implements DatabaseEventListener {
p
=
updateMany
[
random
.
nextInt
(
tableCount
)];
p
.
setInt
(
1
,
i
);
p
.
setInt
(
2
,
random
.
nextInt
(
50
));
int
star
t
=
random
.
nextInt
(
1
+
i
);
p
.
setInt
(
3
,
star
t
);
p
.
setInt
(
4
,
star
t
+
random
.
nextInt
(
50
));
int
firs
t
=
random
.
nextInt
(
1
+
i
);
p
.
setInt
(
3
,
firs
t
);
p
.
setInt
(
4
,
firs
t
+
random
.
nextInt
(
50
));
p
.
executeUpdate
();
}
else
{
p
=
deleteMany
[
random
.
nextInt
(
tableCount
)];
int
star
t
=
random
.
nextInt
(
1
+
i
);
p
.
setInt
(
1
,
star
t
);
p
.
setInt
(
2
,
star
t
+
random
.
nextInt
(
100
));
int
firs
t
=
random
.
nextInt
(
1
+
i
);
p
.
setInt
(
1
,
firs
t
);
p
.
setInt
(
2
,
firs
t
+
random
.
nextInt
(
100
));
p
.
executeUpdate
();
}
}
...
...
h2/src/test/org/h2/test/unit/TestTools.java
浏览文件 @
4419055c
...
...
@@ -354,10 +354,10 @@ public class TestTools extends TestBase {
private
void
testManagementDb
()
throws
SQLException
{
int
count
=
getSize
(
2
,
10
);
for
(
int
i
=
0
;
i
<
count
;
i
++)
{
Server
s
erver
=
Server
.
createTcpServer
(
"-tcpPort"
,
"9192"
).
start
();
s
erver
.
stop
();
s
erver
=
Server
.
createTcpServer
(
"-tcpPassword"
,
"abc"
,
"-tcpPort"
,
"9192"
).
start
();
s
erver
.
stop
();
Server
tcpS
erver
=
Server
.
createTcpServer
(
"-tcpPort"
,
"9192"
).
start
();
tcpS
erver
.
stop
();
tcpS
erver
=
Server
.
createTcpServer
(
"-tcpPassword"
,
"abc"
,
"-tcpPort"
,
"9192"
).
start
();
tcpS
erver
.
stop
();
}
}
...
...
@@ -494,13 +494,13 @@ public class TestTools extends TestBase {
private
void
testServer
()
throws
SQLException
{
Connection
conn
;
deleteDb
(
"test"
);
Server
s
erver
=
Server
.
createTcpServer
(
Server
tcpS
erver
=
Server
.
createTcpServer
(
"-baseDir"
,
baseDir
,
"-tcpPort"
,
"9192"
,
"-tcpAllowOthers"
).
start
();
conn
=
DriverManager
.
getConnection
(
"jdbc:h2:tcp://localhost:9192/test"
,
"sa"
,
""
);
conn
.
close
();
s
erver
.
stop
();
tcpS
erver
.
stop
();
Server
.
createTcpServer
(
"-ifExists"
,
"-tcpPassword"
,
"abc"
,
...
...
h2/src/test/org/h2/test/unit/TestValueHashMap.java
浏览文件 @
4419055c
...
...
@@ -122,7 +122,7 @@ public class TestValueHashMap extends TestBase implements DataHandler {
return
null
;
}
public
int
getChecksum
(
byte
[]
data
,
int
s
tart
,
int
end
)
{
public
int
getChecksum
(
byte
[]
data
,
int
s
,
int
e
)
{
return
0
;
}
...
...
h2/src/test/org/h2/test/unit/TestValueMemory.java
浏览文件 @
4419055c
...
...
@@ -214,7 +214,7 @@ public class TestValueMemory extends TestBase implements DataHandler {
// nothing to do
}
public
int
getChecksum
(
byte
[]
data
,
int
s
tart
,
int
end
)
{
public
int
getChecksum
(
byte
[]
data
,
int
s
,
int
e
)
{
return
0
;
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论