Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
96ab15f8
提交
96ab15f8
authored
3月 19, 2018
作者:
thomasmueller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://github.com/h2database/h2database
上级
30ef394b
5f105925
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
47 个修改的文件
包含
430 行增加
和
338 行删除
+430
-338
changelog.html
h2/src/docsrc/html/changelog.html
+11
-1
systemtables.html
h2/src/docsrc/html/systemtables.html
+17
-2
Constants.java
h2/src/main/org/h2/engine/Constants.java
+1
-1
SessionRemote.java
h2/src/main/org/h2/engine/SessionRemote.java
+9
-26
Comparison.java
h2/src/main/org/h2/expression/Comparison.java
+2
-2
Function.java
h2/src/main/org/h2/expression/Function.java
+3
-3
HashIndex.java
h2/src/main/org/h2/index/HashIndex.java
+1
-1
RangeIndex.java
h2/src/main/org/h2/index/RangeIndex.java
+20
-6
JdbcDatabaseMetaData.java
h2/src/main/org/h2/jdbc/JdbcDatabaseMetaData.java
+59
-62
JdbcPreparedStatement.java
h2/src/main/org/h2/jdbc/JdbcPreparedStatement.java
+0
-1
MVStoreTool.java
h2/src/main/org/h2/mvstore/MVStoreTool.java
+1
-2
JdbcUtils.java
h2/src/main/org/h2/util/JdbcUtils.java
+1
-1
TestBase.java
h2/src/test/org/h2/test/TestBase.java
+32
-7
AbstractBaseForCommonTableExpressions.java
...org/h2/test/db/AbstractBaseForCommonTableExpressions.java
+1
-1
TestDeadlock.java
h2/src/test/org/h2/test/db/TestDeadlock.java
+1
-1
TestFunctions.java
h2/src/test/org/h2/test/db/TestFunctions.java
+1
-1
TestReadOnly.java
h2/src/test/org/h2/test/db/TestReadOnly.java
+3
-3
TestRunscript.java
h2/src/test/org/h2/test/db/TestRunscript.java
+2
-2
TestSpatial.java
h2/src/test/org/h2/test/db/TestSpatial.java
+2
-2
TestSynonymForTable.java
h2/src/test/org/h2/test/db/TestSynonymForTable.java
+1
-1
TestTableEngines.java
h2/src/test/org/h2/test/db/TestTableEngines.java
+1
-1
UpdateTest.java
h2/src/test/org/h2/test/jaqu/UpdateTest.java
+2
-2
TestBatchUpdates.java
h2/src/test/org/h2/test/jdbc/TestBatchUpdates.java
+7
-7
TestDatabaseEventListener.java
h2/src/test/org/h2/test/jdbc/TestDatabaseEventListener.java
+3
-3
TestGetGeneratedKeys.java
h2/src/test/org/h2/test/jdbc/TestGetGeneratedKeys.java
+4
-4
TestMetaData.java
h2/src/test/org/h2/test/jdbc/TestMetaData.java
+5
-5
TestPreparedStatement.java
h2/src/test/org/h2/test/jdbc/TestPreparedStatement.java
+6
-6
TestResultSet.java
h2/src/test/org/h2/test/jdbc/TestResultSet.java
+60
-60
TestStatement.java
h2/src/test/org/h2/test/jdbc/TestStatement.java
+9
-9
TestXA.java
h2/src/test/org/h2/test/jdbcx/TestXA.java
+3
-3
RecoverLobTest.java
h2/src/test/org/h2/test/recover/RecoverLobTest.java
+1
-1
range_table.sql
h2/src/test/org/h2/test/scripts/range_table.sql
+128
-0
testScript.sql
h2/src/test/org/h2/test/scripts/testScript.sql
+0
-78
TestCacheLIRS.java
h2/src/test/org/h2/test/store/TestCacheLIRS.java
+3
-3
TestCacheLongKeyLIRS.java
h2/src/test/org/h2/test/store/TestCacheLongKeyLIRS.java
+3
-3
TestDataUtils.java
h2/src/test/org/h2/test/store/TestDataUtils.java
+1
-1
TestMVRTree.java
h2/src/test/org/h2/test/store/TestMVRTree.java
+4
-4
TestMVStore.java
h2/src/test/org/h2/test/store/TestMVStore.java
+4
-4
TestMVStoreBenchmark.java
h2/src/test/org/h2/test/store/TestMVStoreBenchmark.java
+1
-1
TestMVTableEngine.java
h2/src/test/org/h2/test/store/TestMVTableEngine.java
+1
-1
TestTransactionStore.java
h2/src/test/org/h2/test/store/TestTransactionStore.java
+1
-1
TestClassLoaderLeak.java
h2/src/test/org/h2/test/unit/TestClassLoaderLeak.java
+1
-1
TestFileSystem.java
h2/src/test/org/h2/test/unit/TestFileSystem.java
+7
-7
TestNetUtils.java
h2/src/test/org/h2/test/unit/TestNetUtils.java
+1
-1
TestTools.java
h2/src/test/org/h2/test/unit/TestTools.java
+4
-4
TestValue.java
h2/src/test/org/h2/test/unit/TestValue.java
+1
-1
TestColumnNamer.java
h2/src/test/org/h2/test/utils/TestColumnNamer.java
+1
-1
没有找到文件。
h2/src/docsrc/html/changelog.html
浏览文件 @
96ab15f8
...
...
@@ -21,14 +21,24 @@ Change Log
<h2>
Next Version (unreleased)
</h2>
<ul>
<li>
-
<li>
PR #989: Fix more issues with range table and improve its documentation
</li>
</ul>
<h2>
Version 1.4.197 (2018-03-18)
</h2>
<ul>
<li>
PR #988: Fix RangeTable.getRowCount() for non-default step
</li>
<li>
PR #987: ValueBoolean constants are not cleared and may be used directly
</li>
<li>
PR #986: Check parameters in JdbcPreparedStatement.addBatch()
</li>
<li>
PR #984: Minor refactorings in Parser
</li>
<li>
PR #983: Code cleanups via IntelliJ IDEA inspections
</li>
<li>
Issue #960: Implement remaining time unit in "date_trunc" function
</li>
<li>
Issue #933: MVStore background writer endless loop
</li>
<li>
PR #981: Reorganize date-time functions
...
...
h2/src/docsrc/html/systemtables.html
浏览文件 @
96ab15f8
...
...
@@ -37,12 +37,27 @@ of all tables in the database as well as the current settings.
<h2
id=
"range_table"
class=
"notranslate"
>
Range Table
</h2>
<p>
The range table is a dynamic system table that contains all values from a start to an end value.
The table contains one column called X. Both the start and end values are included in the result.
Non-zero step value may be also specified, default is 1.
Start value, end value, and optional step value are converted to BIGINT data type.
The table contains one column called X.
If start value is greater than end value and step is positive the result is empty.
If start value is less than end value and step is negative the result is empty too.
If start value is equal to end value the result contains only start value.
Start value, start value plus step, start value plus step multiplied by two and so on are included in result.
If step is positive the last value is less than or equal to the specified end value.
If step in negative the last value is greater than or equal to the specified end value.
The table is used as follows:
</p>
<p>
Example:
</p>
<p>
Example
s
:
</p>
<pre>
SELECT X FROM SYSTEM_RANGE(1, 10);
-- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
SELECT X FROM SYSTEM_RANGE(1, 10, 2);
-- 1, 3, 5, 7, 9
SELECT X FROM SYSTEM_RANGE(1, 10, -1);
-- No rows
SELECT X FROM SYSTEM_RANGE(10, 2, -2);
-- 10, 8, 6, 4, 2
</pre>
<!-- [close] { -->
</div></td></tr></table>
<!-- } --><!-- analytics -->
</body></html>
h2/src/main/org/h2/engine/Constants.java
浏览文件 @
96ab15f8
...
...
@@ -101,7 +101,7 @@ public class Constants {
/**
* The TCP protocol version number 17.
* @since 1.4.197 (
TODO
)
* @since 1.4.197 (
2018-03-18
)
*/
public
static
final
int
TCP_PROTOCOL_VERSION_17
=
17
;
...
...
h2/src/main/org/h2/engine/SessionRemote.java
浏览文件 @
96ab15f8
...
...
@@ -73,7 +73,6 @@ public class SessionRemote extends SessionWithState implements DataHandler {
private
ArrayList
<
Transfer
>
transferList
=
New
.
arrayList
();
private
int
nextId
;
private
boolean
autoCommit
=
true
;
private
CommandInterface
autoCommitFalse
,
autoCommitTrue
;
private
ConnectionInfo
connectionInfo
;
private
String
databaseName
;
private
String
cipher
;
...
...
@@ -246,31 +245,15 @@ public class SessionRemote extends SessionWithState implements DataHandler {
}
private
synchronized
void
setAutoCommitSend
(
boolean
autoCommit
)
{
if
(
clientVersion
>=
Constants
.
TCP_PROTOCOL_VERSION_8
)
{
for
(
int
i
=
0
,
count
=
0
;
i
<
transferList
.
size
();
i
++)
{
Transfer
transfer
=
transferList
.
get
(
i
);
try
{
traceOperation
(
"SESSION_SET_AUTOCOMMIT"
,
autoCommit
?
1
:
0
);
transfer
.
writeInt
(
SessionRemote
.
SESSION_SET_AUTOCOMMIT
).
writeBoolean
(
autoCommit
);
done
(
transfer
);
}
catch
(
IOException
e
)
{
removeServer
(
e
,
i
--,
++
count
);
}
}
}
else
{
if
(
autoCommit
)
{
if
(
autoCommitTrue
==
null
)
{
autoCommitTrue
=
prepareCommand
(
"SET AUTOCOMMIT TRUE"
,
Integer
.
MAX_VALUE
);
}
autoCommitTrue
.
executeUpdate
(
false
);
}
else
{
if
(
autoCommitFalse
==
null
)
{
autoCommitFalse
=
prepareCommand
(
"SET AUTOCOMMIT FALSE"
,
Integer
.
MAX_VALUE
);
}
autoCommitFalse
.
executeUpdate
(
false
);
for
(
int
i
=
0
,
count
=
0
;
i
<
transferList
.
size
();
i
++)
{
Transfer
transfer
=
transferList
.
get
(
i
);
try
{
traceOperation
(
"SESSION_SET_AUTOCOMMIT"
,
autoCommit
?
1
:
0
);
transfer
.
writeInt
(
SessionRemote
.
SESSION_SET_AUTOCOMMIT
).
writeBoolean
(
autoCommit
);
done
(
transfer
);
}
catch
(
IOException
e
)
{
removeServer
(
e
,
i
--,
++
count
);
}
}
}
...
...
h2/src/main/org/h2/expression/Comparison.java
浏览文件 @
96ab15f8
...
...
@@ -244,7 +244,7 @@ public class Comparison extends Condition {
result
=
l
==
ValueNull
.
INSTANCE
;
break
;
case
IS_NOT_NULL:
result
=
!(
l
==
ValueNull
.
INSTANCE
)
;
result
=
l
!=
ValueNull
.
INSTANCE
;
break
;
default
:
throw
DbException
.
throwInternalError
(
"type="
+
compareType
);
...
...
@@ -275,7 +275,7 @@ public class Comparison extends Condition {
return
ValueBoolean
.
get
(
result
);
}
private
String
[]
getEnumerators
(
Value
left
,
Value
right
)
{
private
static
String
[]
getEnumerators
(
Value
left
,
Value
right
)
{
if
(
left
.
getType
()
==
Value
.
ENUM
)
{
return
((
ValueEnum
)
left
).
getEnumerators
();
}
else
if
(
right
.
getType
()
==
Value
.
ENUM
)
{
...
...
h2/src/main/org/h2/expression/Function.java
浏览文件 @
96ab15f8
...
...
@@ -956,7 +956,7 @@ public class Function extends Expression implements FunctionCall {
result
=
v0
;
for
(
int
i
=
0
;
i
<
args
.
length
;
i
++)
{
Value
v
=
getNullOrValue
(
session
,
args
,
values
,
i
);
if
(
!(
v
==
ValueNull
.
INSTANCE
)
)
{
if
(
v
!=
ValueNull
.
INSTANCE
)
{
result
=
v
.
convertTo
(
dataType
);
break
;
}
...
...
@@ -968,7 +968,7 @@ public class Function extends Expression implements FunctionCall {
result
=
ValueNull
.
INSTANCE
;
for
(
int
i
=
0
;
i
<
args
.
length
;
i
++)
{
Value
v
=
getNullOrValue
(
session
,
args
,
values
,
i
);
if
(
!(
v
==
ValueNull
.
INSTANCE
)
)
{
if
(
v
!=
ValueNull
.
INSTANCE
)
{
v
=
v
.
convertTo
(
dataType
);
if
(
result
==
ValueNull
.
INSTANCE
)
{
result
=
v
;
...
...
@@ -1005,7 +1005,7 @@ public class Function extends Expression implements FunctionCall {
// (expr, when, then, else)
// (expr, when, then, when, then)
// (expr, when, then, when, then, else)
if
(
!(
v0
==
ValueNull
.
INSTANCE
)
)
{
if
(
v0
!=
ValueNull
.
INSTANCE
)
{
for
(
int
i
=
1
,
len
=
args
.
length
-
1
;
i
<
len
;
i
+=
2
)
{
Value
when
=
args
[
i
].
getValue
(
session
);
if
(
database
.
areEqual
(
v0
,
when
))
{
...
...
h2/src/main/org/h2/index/HashIndex.java
浏览文件 @
96ab15f8
...
...
@@ -90,7 +90,7 @@ public class HashIndex extends BaseIndex {
@Override
public
long
getRowCount
(
Session
session
)
{
return
getRowCountApproximation
();
return
rows
.
size
();
}
@Override
...
...
h2/src/main/org/h2/index/RangeIndex.java
浏览文件 @
96ab15f8
...
...
@@ -47,20 +47,34 @@ public class RangeIndex extends BaseIndex {
@Override
public
Cursor
find
(
Session
session
,
SearchRow
first
,
SearchRow
last
)
{
long
min
=
rangeTable
.
getMin
(
session
)
,
start
=
min
;
long
max
=
rangeTable
.
getMax
(
session
)
,
end
=
max
;
long
min
=
rangeTable
.
getMin
(
session
);
long
max
=
rangeTable
.
getMax
(
session
);
long
step
=
rangeTable
.
getStep
(
session
);
try
{
start
=
Math
.
max
(
min
,
first
==
null
?
min
:
first
.
getValue
(
0
).
getLong
());
long
v
=
first
.
getValue
(
0
).
getLong
();
if
(
step
>
0
)
{
if
(
v
>
min
)
{
min
+=
(
v
-
min
+
step
-
1
)
/
step
*
step
;
}
}
else
if
(
v
>
max
)
{
max
=
v
;
}
}
catch
(
Exception
e
)
{
// error when converting the value - ignore
}
try
{
end
=
Math
.
min
(
max
,
last
==
null
?
max
:
last
.
getValue
(
0
).
getLong
());
long
v
=
last
.
getValue
(
0
).
getLong
();
if
(
step
>
0
)
{
if
(
v
<
max
)
{
max
=
v
;
}
}
else
if
(
v
<
min
)
{
min
-=
(
min
-
v
-
step
-
1
)
/
step
*
step
;
}
}
catch
(
Exception
e
)
{
// error when converting the value - ignore
}
return
new
RangeCursor
(
session
,
start
,
end
,
step
);
return
new
RangeCursor
(
session
,
min
,
max
,
step
);
}
@Override
...
...
@@ -108,7 +122,7 @@ public class RangeIndex extends BaseIndex {
@Override
public
long
getRowCount
(
Session
session
)
{
return
rangeTable
.
getRowCount
Approximation
(
);
return
rangeTable
.
getRowCount
(
session
);
}
@Override
...
...
h2/src/main/org/h2/jdbc/JdbcDatabaseMetaData.java
浏览文件 @
96ab15f8
...
...
@@ -143,19 +143,44 @@ public class JdbcDatabaseMetaData extends TraceObject implements
", "
+
quoteArray
(
types
)
+
");"
);
}
checkClosed
();
String
tableType
;
if
(
types
!=
null
&&
types
.
length
>
0
)
{
StatementBuilder
buff
=
new
StatementBuilder
(
"TABLE_TYPE IN("
);
for
(
String
ignored
:
types
)
{
buff
.
appendExceptFirst
(
", "
);
buff
.
append
(
'?'
);
}
tableType
=
buff
.
append
(
')'
).
toString
();
}
else
{
tableType
=
"TRUE"
;
}
int
typesLength
=
types
!=
null
?
types
.
length
:
0
;
boolean
includeSynonyms
=
types
==
null
||
Arrays
.
asList
(
types
).
contains
(
"SYNONYM"
);
String
tableSelect
=
"SELECT "
// (1024 - 16) is enough for the most cases
StringBuilder
select
=
new
StringBuilder
(
1008
);
if
(
includeSynonyms
)
{
select
.
append
(
"SELECT "
+
"TABLE_CAT, "
+
"TABLE_SCHEM, "
+
"TABLE_NAME, "
+
"TABLE_TYPE, "
+
"REMARKS, "
+
"TYPE_CAT, "
+
"TYPE_SCHEM, "
+
"TYPE_NAME, "
+
"SELF_REFERENCING_COL_NAME, "
+
"REF_GENERATION, "
+
"SQL "
+
"FROM ("
+
"SELECT "
+
"SYNONYM_CATALOG TABLE_CAT, "
+
"SYNONYM_SCHEMA TABLE_SCHEM, "
+
"SYNONYM_NAME as TABLE_NAME, "
+
"TYPE_NAME AS TABLE_TYPE, "
+
"REMARKS, "
+
"TYPE_NAME TYPE_CAT, "
+
"TYPE_NAME TYPE_SCHEM, "
+
"TYPE_NAME AS TYPE_NAME, "
+
"TYPE_NAME SELF_REFERENCING_COL_NAME, "
+
"TYPE_NAME REF_GENERATION, "
+
"NULL AS SQL "
+
"FROM INFORMATION_SCHEMA.SYNONYMS "
+
"WHERE SYNONYM_CATALOG LIKE ?1 ESCAPE ?4 "
+
"AND SYNONYM_SCHEMA LIKE ?2 ESCAPE ?4 "
+
"AND SYNONYM_NAME LIKE ?3 ESCAPE ?4 "
+
"UNION "
);
}
select
.
append
(
"SELECT "
+
"TABLE_CATALOG TABLE_CAT, "
+
"TABLE_SCHEMA TABLE_SCHEM, "
+
"TABLE_NAME, "
...
...
@@ -168,58 +193,30 @@ public class JdbcDatabaseMetaData extends TraceObject implements
+
"TYPE_NAME REF_GENERATION, "
+
"SQL "
+
"FROM INFORMATION_SCHEMA.TABLES "
+
"WHERE TABLE_CATALOG LIKE ? ESCAPE ? "
+
"AND TABLE_SCHEMA LIKE ? ESCAPE ? "
+
"AND TABLE_NAME LIKE ? ESCAPE ? "
+
"AND ("
+
tableType
+
") "
;
boolean
includeSynonyms
=
types
==
null
||
Arrays
.
asList
(
types
).
contains
(
"SYNONYM"
);
String
synonymSelect
=
"SELECT "
+
"SYNONYM_CATALOG TABLE_CAT, "
+
"SYNONYM_SCHEMA TABLE_SCHEM, "
+
"SYNONYM_NAME as TABLE_NAME, "
+
"TYPE_NAME AS TABLE_TYPE, "
+
"REMARKS, "
+
"TYPE_NAME TYPE_CAT, "
+
"TYPE_NAME TYPE_SCHEM, "
+
"TYPE_NAME AS TYPE_NAME, "
+
"TYPE_NAME SELF_REFERENCING_COL_NAME, "
+
"TYPE_NAME REF_GENERATION, "
+
"NULL AS SQL "
+
"FROM INFORMATION_SCHEMA.SYNONYMS "
+
"WHERE SYNONYM_CATALOG LIKE ? ESCAPE ? "
+
"AND SYNONYM_SCHEMA LIKE ? ESCAPE ? "
+
"AND SYNONYM_NAME LIKE ? ESCAPE ? "
+
"AND ("
+
includeSynonyms
+
") "
;
PreparedStatement
prep
=
conn
.
prepareAutoCloseStatement
(
"SELECT "
+
"TABLE_CAT, "
+
"TABLE_SCHEM, "
+
"TABLE_NAME, "
+
"TABLE_TYPE, "
+
"REMARKS, "
+
"TYPE_CAT, "
+
"TYPE_SCHEM, "
+
"TYPE_NAME, "
+
"SELF_REFERENCING_COL_NAME, "
+
"REF_GENERATION, "
+
"SQL "
+
"FROM ("
+
synonymSelect
+
" UNION "
+
tableSelect
+
") "
+
"ORDER BY TABLE_TYPE, TABLE_SCHEM, TABLE_NAME"
);
+
"WHERE TABLE_CATALOG LIKE ?1 ESCAPE ?4 "
+
"AND TABLE_SCHEMA LIKE ?2 ESCAPE ?4 "
+
"AND TABLE_NAME LIKE ?3 ESCAPE ?4"
);
if
(
typesLength
>
0
)
{
select
.
append
(
" AND TABLE_TYPE IN("
);
for
(
int
i
=
0
;
i
<
typesLength
;
i
++)
{
if
(
i
>
0
)
{
select
.
append
(
", "
);
}
select
.
append
(
'?'
).
append
(
i
+
5
);
}
select
.
append
(
')'
);
}
if
(
includeSynonyms
)
{
select
.
append
(
')'
);
}
PreparedStatement
prep
=
conn
.
prepareAutoCloseStatement
(
select
.
append
(
" ORDER BY TABLE_TYPE, TABLE_SCHEM, TABLE_NAME"
).
toString
());
prep
.
setString
(
1
,
getCatalogPattern
(
catalogPattern
));
prep
.
setString
(
2
,
"\\"
);
prep
.
setString
(
3
,
get
SchemaPattern
(
schema
Pattern
));
prep
.
setString
(
2
,
getSchemaPattern
(
schemaPattern
)
);
prep
.
setString
(
3
,
get
Pattern
(
tableName
Pattern
));
prep
.
setString
(
4
,
"\\"
);
prep
.
setString
(
5
,
getPattern
(
tableNamePattern
));
prep
.
setString
(
6
,
"\\"
);
prep
.
setString
(
7
,
getCatalogPattern
(
catalogPattern
));
prep
.
setString
(
8
,
"\\"
);
prep
.
setString
(
9
,
getSchemaPattern
(
schemaPattern
));
prep
.
setString
(
10
,
"\\"
);
prep
.
setString
(
11
,
getPattern
(
tableNamePattern
));
prep
.
setString
(
12
,
"\\"
);
for
(
int
i
=
0
;
types
!=
null
&&
i
<
types
.
length
;
i
++)
{
prep
.
setString
(
13
+
i
,
types
[
i
]);
for
(
int
i
=
0
;
i
<
typesLength
;
i
++)
{
prep
.
setString
(
5
+
i
,
types
[
i
]);
}
return
prep
.
executeQuery
();
}
catch
(
Exception
e
)
{
...
...
h2/src/main/org/h2/jdbc/JdbcPreparedStatement.java
浏览文件 @
96ab15f8
...
...
@@ -1250,7 +1250,6 @@ public class JdbcPreparedStatement extends JdbcStatement implements
@Override
public
int
[]
executeBatch
()
throws
SQLException
{
try
{
int
id
=
getNextId
(
TraceObject
.
PREPARED_STATEMENT
);
debugCodeCall
(
"executeBatch"
);
if
(
batchParameters
==
null
)
{
// TODO batch: check what other database do if no parameters are
...
...
h2/src/main/org/h2/mvstore/MVStoreTool.java
浏览文件 @
96ab15f8
...
...
@@ -222,8 +222,7 @@ public class MVStoreTool {
if
(
mapId
==
0
&&
details
)
{
ByteBuffer
data
;
if
(
compressed
)
{
boolean
fast
=
!((
type
&
DataUtils
.
PAGE_COMPRESSED_HIGH
)
==
DataUtils
.
PAGE_COMPRESSED_HIGH
);
boolean
fast
=
(
type
&
DataUtils
.
PAGE_COMPRESSED_HIGH
)
!=
DataUtils
.
PAGE_COMPRESSED_HIGH
;
Compressor
compressor
=
getCompressor
(
fast
);
int
lenAdd
=
DataUtils
.
readVarInt
(
chunk
);
int
compLen
=
pageSize
+
start
-
chunk
.
position
();
...
...
h2/src/main/org/h2/util/JdbcUtils.java
浏览文件 @
96ab15f8
...
...
@@ -177,7 +177,7 @@ public class JdbcUtils {
if
(
classFactory
.
match
(
className
))
{
try
{
Class
<?>
userClass
=
classFactory
.
loadClass
(
className
);
if
(
!(
userClass
==
null
)
)
{
if
(
userClass
!=
null
)
{
return
(
Class
<
Z
>)
userClass
;
}
}
catch
(
Exception
e
)
{
...
...
h2/src/test/org/h2/test/TestBase.java
浏览文件 @
96ab15f8
...
...
@@ -716,11 +716,7 @@ public abstract class TestBase {
* @throws AssertionError if the values are not equal
*/
public
void
assertEquals
(
Object
expected
,
Object
actual
)
{
if
(
expected
==
null
||
actual
==
null
)
{
assertTrue
(
expected
==
actual
);
return
;
}
if
(!
expected
.
equals
(
actual
))
{
if
(!
Objects
.
equals
(
expected
,
actual
))
{
fail
(
" expected: "
+
expected
+
" actual: "
+
actual
);
}
}
...
...
@@ -961,7 +957,9 @@ public abstract class TestBase {
* @throws AssertionError if the condition is false
*/
public
void
assertTrue
(
boolean
condition
)
{
assertTrue
(
"Expected: true got: false"
,
condition
);
if
(!
condition
)
{
fail
(
"Expected: true got: false"
);
}
}
/**
...
...
@@ -976,6 +974,31 @@ public abstract class TestBase {
}
}
/**
* Check that the passed object is not null.
*
* @param obj the object
* @throws AssertionError if the condition is false
*/
public
void
assertNotNull
(
Object
obj
)
{
if
(
obj
==
null
)
{
fail
(
"Expected: not null got: null"
);
}
}
/**
* Check that the passed object is not null.
*
* @param message the message to print if the condition is false
* @param obj the object
* @throws AssertionError if the condition is false
*/
public
void
assertNotNull
(
String
message
,
Object
obj
)
{
if
(
obj
==
null
)
{
fail
(
message
);
}
}
/**
* Check that the passed boolean is true.
*
...
...
@@ -996,7 +1019,9 @@ public abstract class TestBase {
* @throws AssertionError if the condition is true
*/
protected
void
assertFalse
(
boolean
value
)
{
assertFalse
(
"Expected: false got: true"
,
value
);
if
(
value
)
{
fail
(
"Expected: false got: true"
);
}
}
/**
...
...
h2/src/test/org/h2/test/db/AbstractBaseForCommonTableExpressions.java
浏览文件 @
96ab15f8
...
...
@@ -57,7 +57,7 @@ public abstract class AbstractBaseForCommonTableExpressions extends TestBase {
rs
=
prep
.
executeQuery
();
for
(
int
columnIndex
=
1
;
columnIndex
<=
rs
.
getMetaData
().
getColumnCount
();
columnIndex
++)
{
assert
True
(
rs
.
getMetaData
().
getColumnLabel
(
columnIndex
)
!=
null
);
assert
NotNull
(
rs
.
getMetaData
().
getColumnLabel
(
columnIndex
)
);
assertEquals
(
expectedColumnNames
[
columnIndex
-
1
],
rs
.
getMetaData
().
getColumnLabel
(
columnIndex
));
assertEquals
(
"wrong type of column "
+
rs
.
getMetaData
().
getColumnLabel
(
columnIndex
)
+
" on iteration #"
...
...
h2/src/test/org/h2/test/db/TestDeadlock.java
浏览文件 @
96ab15f8
...
...
@@ -390,7 +390,7 @@ public class TestDeadlock extends TestBase {
}
private
void
checkDeadlock
()
throws
SQLException
{
assert
True
(
lastException
!=
null
);
assert
NotNull
(
lastException
);
assertKnownException
(
lastException
);
assertEquals
(
ErrorCode
.
DEADLOCK_1
,
lastException
.
getErrorCode
());
SQLException
e2
=
lastException
.
getNextException
();
...
...
h2/src/test/org/h2/test/db/TestFunctions.java
浏览文件 @
96ab15f8
...
...
@@ -520,7 +520,7 @@ public class TestFunctions extends TestBase implements AggregateFunction {
stat
.
execute
(
"delete from test"
);
rs
=
stat
.
executeQuery
(
"call transaction_id()"
);
rs
.
next
();
assert
True
(
rs
.
getString
(
1
)
!=
null
);
assert
NotNull
(
rs
.
getString
(
1
)
);
stat
.
execute
(
"drop table test"
);
conn
.
close
();
}
...
...
h2/src/test/org/h2/test/db/TestReadOnly.java
浏览文件 @
96ab15f8
...
...
@@ -130,7 +130,7 @@ public class TestReadOnly extends TestBase {
File
f
=
File
.
createTempFile
(
"test"
,
"temp"
);
assertTrue
(
f
.
canWrite
());
f
.
setReadOnly
();
assert
True
(!
f
.
canWrite
());
assert
False
(
f
.
canWrite
());
f
.
delete
();
f
=
File
.
createTempFile
(
"test"
,
"temp"
);
...
...
@@ -138,7 +138,7 @@ public class TestReadOnly extends TestBase {
r
.
write
(
1
);
f
.
setReadOnly
();
r
.
close
();
assert
True
(!
f
.
canWrite
());
assert
False
(
f
.
canWrite
());
f
.
delete
();
deleteDb
(
"readonlyFiles"
);
...
...
@@ -147,7 +147,7 @@ public class TestReadOnly extends TestBase {
stat
.
execute
(
"CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(1, 'Hello')"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(2, 'World')"
);
assert
True
(!
conn
.
isReadOnly
());
assert
False
(
conn
.
isReadOnly
());
conn
.
close
();
if
(
setReadOnly
)
{
...
...
h2/src/test/org/h2/test/db/TestRunscript.java
浏览文件 @
96ab15f8
...
...
@@ -350,7 +350,7 @@ public class TestRunscript extends TestBase implements Trigger {
Thread
.
sleep
(
200
);
stat
.
cancel
();
SQLException
e
=
(
SQLException
)
task
.
getException
();
assert
True
(
e
!=
null
);
assert
NotNull
(
e
);
assertEquals
(
ErrorCode
.
STATEMENT_WAS_CANCELED
,
e
.
getErrorCode
());
stat
.
execute
(
"set throttle 1000"
);
...
...
@@ -367,7 +367,7 @@ public class TestRunscript extends TestBase implements Trigger {
Thread
.
sleep
(
200
);
stat
.
cancel
();
e
=
(
SQLException
)
task
.
getException
();
assert
True
(
e
!=
null
);
assert
NotNull
(
e
);
assertEquals
(
ErrorCode
.
STATEMENT_WAS_CANCELED
,
e
.
getErrorCode
());
conn
.
close
();
...
...
h2/src/test/org/h2/test/db/TestSpatial.java
浏览文件 @
96ab15f8
...
...
@@ -914,7 +914,7 @@ public class TestSpatial extends TestBase {
count
++;
int
id
=
rs
.
getInt
(
1
);
if
(
id
==
3
||
id
==
6
)
{
assert
True
(
rs
.
getObject
(
2
)
!=
null
);
assert
NotNull
(
rs
.
getObject
(
2
)
);
}
else
{
assertNull
(
rs
.
getObject
(
2
));
}
...
...
@@ -933,7 +933,7 @@ public class TestSpatial extends TestBase {
count
=
0
;
while
(
rs
.
next
())
{
count
++;
assert
True
(
rs
.
getObject
(
2
)
!=
null
);
assert
NotNull
(
rs
.
getObject
(
2
)
);
}
assertEquals
(
2
,
count
);
...
...
h2/src/test/org/h2/test/db/TestSynonymForTable.java
浏览文件 @
96ab15f8
...
...
@@ -184,7 +184,7 @@ public class TestSynonymForTable extends TestBase {
assertEquals
(
"BACKINGTABLE"
,
synonyms
.
getString
(
"SYNONYM_FOR"
));
assertEquals
(
"VALID"
,
synonyms
.
getString
(
"STATUS"
));
assertEquals
(
""
,
synonyms
.
getString
(
"REMARKS"
));
assert
True
(
synonyms
.
getString
(
"ID"
)
!=
null
);
assert
NotNull
(
synonyms
.
getString
(
"ID"
)
);
assertFalse
(
synonyms
.
next
());
conn
.
close
();
}
...
...
h2/src/test/org/h2/test/db/TestTableEngines.java
浏览文件 @
96ab15f8
...
...
@@ -507,7 +507,7 @@ public class TestTableEngines extends TestBase {
stat
.
executeUpdate
(
"CREATE TABLE T(ID INT AFFINITY PRIMARY KEY, NAME VARCHAR, AGE INT)"
+
" ENGINE \""
+
AffinityTableEngine
.
class
.
getName
()
+
"\""
);
Table
tbl
=
AffinityTableEngine
.
createdTbl
;
assert
True
(
tbl
!=
nul
l
);
assert
NotNull
(
tb
l
);
assertEquals
(
3
,
tbl
.
getIndexes
().
size
());
Index
aff
=
tbl
.
getIndexes
().
get
(
2
);
assertTrue
(
aff
.
getIndexType
().
isAffinity
());
...
...
h2/src/test/org/h2/test/jaqu/UpdateTest.java
浏览文件 @
96ab15f8
...
...
@@ -75,7 +75,7 @@ public class UpdateTest extends TestBase {
Order
ourUpdatedOrder
=
db
.
from
(
o
).
where
(
o
.
orderDate
)
.
is
(
valueOf
(
"2007-01-03"
)).
selectFirst
();
assert
True
(
"updated order not found"
,
ourUpdatedOrder
!=
null
);
assert
NotNull
(
"updated order not found"
,
ourUpdatedOrder
);
// undo update
ourOrder
.
orderDate
=
valueOf
(
"2007-01-02"
);
...
...
@@ -113,7 +113,7 @@ public class UpdateTest extends TestBase {
Order
ourUpdatedOrder
=
db
.
from
(
o
).
where
(
o
.
orderDate
)
.
is
(
valueOf
(
"2007-01-03"
)).
selectFirst
();
assert
True
(
"updated order not found"
,
ourUpdatedOrder
!=
null
);
assert
NotNull
(
"updated order not found"
,
ourUpdatedOrder
);
// undo update
ourOrder
.
orderDate
=
valueOf
(
"2007-01-02"
);
...
...
h2/src/test/org/h2/test/jdbc/TestBatchUpdates.java
浏览文件 @
96ab15f8
...
...
@@ -79,13 +79,13 @@ public class TestBatchUpdates extends TestBase {
}
catch
(
SQLException
e
)
{
assertContains
(
e
.
toString
(),
"TEST_Y"
);
e
=
e
.
getNextException
();
assert
True
(
e
!=
null
);
assert
NotNull
(
e
);
assertContains
(
e
.
toString
(),
"TEST_Y"
);
e
=
e
.
getNextException
();
assert
True
(
e
!=
null
);
assert
NotNull
(
e
);
assertContains
(
e
.
toString
(),
"TEST_X"
);
e
=
e
.
getNextException
();
assert
True
(
e
==
null
);
assert
Null
(
e
);
}
stat
.
execute
(
"create table test(id int)"
);
PreparedStatement
prep
=
conn
.
prepareStatement
(
"insert into test values(?)"
);
...
...
@@ -98,13 +98,13 @@ public class TestBatchUpdates extends TestBase {
}
catch
(
SQLException
e
)
{
assertContains
(
e
.
toString
(),
"TEST_Y"
);
e
=
e
.
getNextException
();
assert
True
(
e
!=
null
);
assert
NotNull
(
e
);
assertContains
(
e
.
toString
(),
"TEST_Y"
);
e
=
e
.
getNextException
();
assert
True
(
e
!=
null
);
assert
NotNull
(
e
);
assertContains
(
e
.
toString
(),
"TEST_X"
);
e
=
e
.
getNextException
();
assert
True
(
e
==
null
);
assert
Null
(
e
);
}
stat
.
execute
(
"drop table test"
);
conn
.
close
();
...
...
@@ -542,7 +542,7 @@ public class TestBatchUpdates extends TestBase {
trace
(
"Count val is: "
+
count
);
// make sure that we have the correct error code for
// the failed update.
if
(
!(
batchUpdates
[
1
]
==
-
3
&&
count
==
1
)
)
{
if
(
batchUpdates
[
1
]
!=
-
3
||
count
!=
1
)
{
fail
(
"insert failed"
);
}
}
...
...
h2/src/test/org/h2/test/jdbc/TestDatabaseEventListener.java
浏览文件 @
96ab15f8
...
...
@@ -143,7 +143,7 @@ public class TestDatabaseEventListener extends TestBase {
MyDatabaseEventListener
.
class
.
getName
());
conn
=
org
.
h2
.
Driver
.
load
().
connect
(
url
,
p
);
conn
.
close
();
assert
True
(!
calledCreateIndex
);
assert
False
(
calledCreateIndex
);
}
private
void
testIndexNotRebuilt
()
throws
SQLException
{
...
...
@@ -176,7 +176,7 @@ public class TestDatabaseEventListener extends TestBase {
MyDatabaseEventListener
.
class
.
getName
());
conn
=
org
.
h2
.
Driver
.
load
().
connect
(
url
,
p
);
conn
.
close
();
assert
True
(!
calledCreateIndex
);
assert
False
(
calledCreateIndex
);
}
private
void
testCloseLog0
(
boolean
shutdown
)
throws
SQLException
{
...
...
@@ -205,7 +205,7 @@ public class TestDatabaseEventListener extends TestBase {
conn
=
org
.
h2
.
Driver
.
load
().
connect
(
url
,
p
);
conn
.
close
();
if
(
calledOpened
)
{
assert
True
(!
calledScan
);
assert
False
(
calledScan
);
}
}
...
...
h2/src/test/org/h2/test/jdbc/TestGetGeneratedKeys.java
浏览文件 @
96ab15f8
...
...
@@ -130,19 +130,19 @@ public class TestGetGeneratedKeys extends TestBase {
rs
.
next
();
assertEquals
(
1L
,
rs
.
getLong
(
1
));
UUID
u1
=
(
UUID
)
rs
.
getObject
(
2
);
assert
True
(
u1
!=
null
);
assert
NotNull
(
u1
);
rs
.
next
();
assertEquals
(
2L
,
rs
.
getLong
(
1
));
UUID
u2
=
(
UUID
)
rs
.
getObject
(
2
);
assert
True
(
u2
!=
null
);
assert
NotNull
(
u2
);
rs
.
next
();
assertEquals
(
3L
,
rs
.
getLong
(
1
));
UUID
u3
=
(
UUID
)
rs
.
getObject
(
2
);
assert
True
(
u3
!=
null
);
assert
NotNull
(
u3
);
rs
.
next
();
assertEquals
(
4L
,
rs
.
getLong
(
1
));
UUID
u4
=
(
UUID
)
rs
.
getObject
(
2
);
assert
True
(
u4
!=
null
);
assert
NotNull
(
u4
);
assertFalse
(
rs
.
next
());
assertFalse
(
u1
.
equals
(
u2
));
assertFalse
(
u2
.
equals
(
u3
));
...
...
h2/src/test/org/h2/test/jdbc/TestMetaData.java
浏览文件 @
96ab15f8
...
...
@@ -127,7 +127,7 @@ public class TestMetaData extends TestBase {
rs
=
stat
.
executeQuery
(
"select 1 from dual"
);
rs
.
next
();
rsMeta
=
rs
.
getMetaData
();
assert
True
(
rsMeta
.
getCatalogName
(
1
)
!=
null
);
assert
NotNull
(
rsMeta
.
getCatalogName
(
1
)
);
assertEquals
(
"1"
,
rsMeta
.
getColumnLabel
(
1
));
assertEquals
(
"1"
,
rsMeta
.
getColumnName
(
1
));
assertEquals
(
""
,
rsMeta
.
getSchemaName
(
1
));
...
...
@@ -367,7 +367,7 @@ public class TestMetaData extends TestBase {
assertTrue
(
dr
.
jdbcCompliant
());
assertEquals
(
0
,
dr
.
getPropertyInfo
(
null
,
null
).
length
);
assert
True
(
dr
.
connect
(
"jdbc:test:false"
,
null
)
==
null
);
assert
Null
(
dr
.
connect
(
"jdbc:test:false"
,
null
)
);
assertTrue
(
meta
.
getNumericFunctions
().
length
()
>
0
);
assertTrue
(
meta
.
getStringFunctions
().
length
()
>
0
);
...
...
@@ -994,9 +994,9 @@ public class TestMetaData extends TestBase {
Types
.
VARCHAR
,
Types
.
VARCHAR
,
Types
.
VARCHAR
,
Types
.
VARCHAR
,
Types
.
VARCHAR
,
Types
.
VARCHAR
,
Types
.
VARCHAR
},
null
,
null
);
assert
True
(
conn
.
getWarnings
()
==
null
);
assert
Null
(
conn
.
getWarnings
()
);
conn
.
clearWarnings
();
assert
True
(
conn
.
getWarnings
()
==
null
);
assert
Null
(
conn
.
getWarnings
()
);
conn
.
close
();
}
...
...
@@ -1050,7 +1050,7 @@ public class TestMetaData extends TestBase {
rs
=
meta
.
getTables
(
null
,
Constants
.
SCHEMA_MAIN
,
null
,
new
String
[]
{
"TABLE"
});
assert
True
(
rs
.
getStatement
()
==
null
);
assert
Null
(
rs
.
getStatement
()
);
rs
.
next
();
assertEquals
(
"TEST"
,
rs
.
getString
(
"TABLE_NAME"
));
assertFalse
(
rs
.
next
());
...
...
h2/src/test/org/h2/test/jdbc/TestPreparedStatement.java
浏览文件 @
96ab15f8
...
...
@@ -404,7 +404,7 @@ public class TestPreparedStatement extends TestBase {
Thread
.
sleep
(
100
);
prep
.
cancel
();
SQLException
e
=
(
SQLException
)
t
.
getException
();
assert
True
(
e
!=
null
);
assert
NotNull
(
e
);
assertEquals
(
ErrorCode
.
STATEMENT_WAS_CANCELED
,
e
.
getErrorCode
());
prep
.
setInt
(
1
,
1
);
prep
.
setInt
(
2
,
1
);
...
...
@@ -618,7 +618,7 @@ public class TestPreparedStatement extends TestBase {
rs
.
next
();
Object
o
=
rs
.
getObject
(
2
);
assertTrue
(
o
instanceof
byte
[]);
assert
True
(
rs
.
getObject
(
3
)
==
null
);
assert
Null
(
rs
.
getObject
(
3
)
);
rs
.
next
();
o
=
rs
.
getObject
(
2
);
assertTrue
(
o
instanceof
byte
[]);
...
...
@@ -1446,9 +1446,9 @@ public class TestPreparedStatement extends TestBase {
assertEquals
(
ascii2
,
rs
.
getString
(
3
));
assertFalse
(
rs
.
next
());
assert
True
(
prep
.
getWarnings
()
==
null
);
assert
Null
(
prep
.
getWarnings
()
);
prep
.
clearWarnings
();
assert
True
(
prep
.
getWarnings
()
==
null
);
assert
Null
(
prep
.
getWarnings
()
);
assertTrue
(
conn
==
prep
.
getConnection
());
}
...
...
@@ -1534,12 +1534,12 @@ public class TestPreparedStatement extends TestBase {
java
.
math
.
BigDecimal
x
=
rs
.
getBigDecimal
(
1
);
trace
(
"v="
+
v
+
" x="
+
x
);
if
(
v
==
null
)
{
assert
True
(
x
==
null
);
assert
Null
(
x
);
}
else
{
assertTrue
(
x
.
compareTo
(
new
java
.
math
.
BigDecimal
(
v
))
==
0
);
}
}
assert
True
(!
rs
.
next
());
assert
False
(
rs
.
next
());
}
private
void
testColumnMetaDataWithEquals
(
Connection
conn
)
...
...
h2/src/test/org/h2/test/jdbc/TestResultSet.java
浏览文件 @
96ab15f8
差异被折叠。
点击展开。
h2/src/test/org/h2/test/jdbc/TestStatement.java
浏览文件 @
96ab15f8
...
...
@@ -204,7 +204,7 @@ public class TestStatement extends TestBase {
assertEquals
(
ResultSet
.
CONCUR_READ_ONLY
,
stat2
.
getResultSetConcurrency
());
assertEquals
(
0
,
stat
.
getMaxFieldSize
());
assert
True
(!
((
JdbcStatement
)
stat2
).
isClosed
());
assert
False
(
((
JdbcStatement
)
stat2
).
isClosed
());
stat2
.
close
();
assertTrue
(((
JdbcStatement
)
stat2
).
isClosed
());
...
...
@@ -279,19 +279,19 @@ public class TestStatement extends TestBase {
trace
(
"execute"
);
result
=
stat
.
execute
(
"CREATE TABLE TEST(ID INT PRIMARY KEY,VALUE VARCHAR(255))"
);
assert
True
(!
result
);
assert
False
(
result
);
result
=
stat
.
execute
(
"INSERT INTO TEST VALUES(1,'Hello')"
);
assert
True
(!
result
);
assert
False
(
result
);
result
=
stat
.
execute
(
"INSERT INTO TEST(VALUE,ID) VALUES('JDBC',2)"
);
assert
True
(!
result
);
assert
False
(
result
);
result
=
stat
.
execute
(
"UPDATE TEST SET VALUE='LDBC' WHERE ID=2"
);
assert
True
(!
result
);
assert
False
(
result
);
result
=
stat
.
execute
(
"DELETE FROM TEST WHERE ID=3"
);
assert
True
(!
result
);
assert
False
(
result
);
result
=
stat
.
execute
(
"SELECT * FROM TEST"
);
assertTrue
(
result
);
result
=
stat
.
execute
(
"DROP TABLE TEST"
);
assert
True
(!
result
);
assert
False
(
result
);
assertThrows
(
ErrorCode
.
METHOD_ONLY_ALLOWED_FOR_QUERY
,
stat
).
executeQuery
(
"CREATE TABLE TEST(ID INT PRIMARY KEY,VALUE VARCHAR(255))"
);
...
...
@@ -324,9 +324,9 @@ public class TestStatement extends TestBase {
stat
.
execute
(
"DROP TABLE TEST"
);
stat
.
executeUpdate
(
"DROP TABLE IF EXISTS TEST"
);
assert
True
(
stat
.
getWarnings
()
==
null
);
assert
Null
(
stat
.
getWarnings
()
);
stat
.
clearWarnings
();
assert
True
(
stat
.
getWarnings
()
==
null
);
assert
Null
(
stat
.
getWarnings
()
);
assertTrue
(
conn
==
stat
.
getConnection
());
assertEquals
(
"SOME_ID"
,
statBC
.
enquoteIdentifier
(
"SOME_ID"
,
false
));
...
...
h2/src/test/org/h2/test/jdbcx/TestXA.java
浏览文件 @
96ab15f8
...
...
@@ -148,13 +148,13 @@ public class TestXA extends TestBase {
XAResource
res
=
xa
.
getXAResource
();
res
.
start
(
xid
,
XAResource
.
TMNOFLAGS
);
assert
True
(!
c
.
getAutoCommit
());
assert
False
(
c
.
getAutoCommit
());
res
.
end
(
xid
,
XAResource
.
TMSUCCESS
);
res
.
commit
(
xid
,
true
);
assertTrue
(
c
.
getAutoCommit
());
res
.
start
(
xid
,
XAResource
.
TMNOFLAGS
);
assert
True
(!
c
.
getAutoCommit
());
assert
False
(
c
.
getAutoCommit
());
res
.
end
(
xid
,
XAResource
.
TMFAIL
);
res
.
rollback
(
xid
);
assertTrue
(
c
.
getAutoCommit
());
...
...
@@ -193,7 +193,7 @@ public class TestXA extends TestBase {
xa
.
getXAResource
().
start
(
xid
,
XAResource
.
TMNOFLAGS
);
Connection
c
=
xa
.
getConnection
();
assert
True
(!
c
.
getAutoCommit
());
assert
False
(
c
.
getAutoCommit
());
c
.
close
();
xa
.
close
();
}
...
...
h2/src/test/org/h2/test/recover/RecoverLobTest.java
浏览文件 @
96ab15f8
...
...
@@ -69,7 +69,7 @@ public class RecoverLobTest extends TestBase {
int
id
=
rs
.
getInt
(
1
);
String
data
=
rs
.
getString
(
2
);
assert
True
(
data
!=
null
);
assert
NotNull
(
data
);
assertTrue
(
data
.
length
()
==
10000
*
id
);
}
...
...
h2/src/test/org/h2/test/scripts/range_table.sql
浏览文件 @
96ab15f8
...
...
@@ -3,6 +3,80 @@
-- Initial Developer: H2 Group
--
explain
select
*
from
system_range
(
1
,
2
)
where
x
=
x
+
1
and
x
=
1
;
>
PLAN
>
---------------------------------------------------------------------------------------------------------------------------------
>
SELECT
SYSTEM_RANGE
.
X
FROM
SYSTEM_RANGE
(
1
,
2
)
/* PUBLIC.RANGE_INDEX: X = 1 */
WHERE
((
X
=
1
)
AND
(
X
=
(
X
+
1
)))
AND
(
1
=
(
X
+
1
))
>
rows
:
1
explain
select
*
from
system_range
(
1
,
2
)
where
not
(
x
=
1
and
x
*
2
=
2
);
>
PLAN
>
-------------------------------------------------------------------------------------------------------
>
SELECT
SYSTEM_RANGE
.
X
FROM
SYSTEM_RANGE
(
1
,
2
)
/* PUBLIC.RANGE_INDEX */
WHERE
(
X
<>
1
)
OR
((
X
*
2
)
<>
2
)
>
rows
:
1
explain
select
*
from
system_range
(
1
,
10
)
where
(
NOT
x
>=
5
);
>
PLAN
>
------------------------------------------------------------------------------------------
>
SELECT
SYSTEM_RANGE
.
X
FROM
SYSTEM_RANGE
(
1
,
10
)
/* PUBLIC.RANGE_INDEX: X < 5 */
WHERE
X
<
5
>
rows
:
1
select
(
select
t1
.
x
from
system_range
(
1
,
1
)
t2
)
from
system_range
(
1
,
1
)
t1
;
>
SELECT
T1
.
X
FROM
SYSTEM_RANGE
(
1
,
1
)
T2
/* PUBLIC.RANGE_INDEX */
/* scanCount: 2 */
>
----------------------------------------------------------------------------------
>
1
>
rows
:
1
EXPLAIN
PLAN
FOR
SELECT
*
FROM
SYSTEM_RANGE
(
1
,
20
);
>
PLAN
>
-----------------------------------------------------------------------
>
SELECT
SYSTEM_RANGE
.
X
FROM
SYSTEM_RANGE
(
1
,
20
)
/* PUBLIC.RANGE_INDEX */
>
rows
:
1
select
sum
(
x
)
from
system_range
(
2
,
1000
)
r
where
not
exists
(
select
*
from
system_range
(
2
,
32
)
r2
where
r
.
x
>
r2
.
x
and
mod
(
r
.
x
,
r2
.
x
)
=
0
);
>
SUM
(
X
)
>
------
>
76127
>
rows
:
1
SELECT
COUNT
(
*
)
FROM
SYSTEM_RANGE
(
0
,
2111222333
);
>
COUNT
(
*
)
>
----------
>
2111222334
>
rows
:
1
select
*
from
system_range
(
2
,
100
)
r
where
not
exists
(
select
*
from
system_range
(
2
,
11
)
r2
where
r
.
x
>
r2
.
x
and
mod
(
r
.
x
,
r2
.
x
)
=
0
);
>
X
>
--
>
11
>
13
>
17
>
19
>
2
>
23
>
29
>
3
>
31
>
37
>
41
>
43
>
47
>
5
>
53
>
59
>
61
>
67
>
7
>
71
>
73
>
79
>
83
>
89
>
97
>
rows
:
25
SELECT
*
FROM
SYSTEM_RANGE
(
1
,
10
)
ORDER
BY
1
;
>
X
>
--
...
...
@@ -118,3 +192,57 @@ SELECT * FROM SYSTEM_RANGE(2, 1, 0);
SELECT
COUNT
(
*
)
FROM
SYSTEM_RANGE
(
2
,
1
,
0
);
>
exception
SELECT
*
FROM
SYSTEM_RANGE
(
1
,
8
,
2
);
>
X
>
-
>
1
>
3
>
5
>
7
>
rows
:
4
SELECT
*
FROM
SYSTEM_RANGE
(
1
,
8
,
2
)
WHERE
X
=
2
;
>
X
>
-
>
rows
:
0
SELECT
COUNT
(
*
)
FROM
SYSTEM_RANGE
(
1
,
8
,
2
)
WHERE
X
=
2
;
>>
0
SELECT
*
FROM
SYSTEM_RANGE
(
1
,
8
,
2
)
WHERE
X
BETWEEN
2
AND
6
;
>
X
>
-
>
3
>
5
>
rows
:
2
SELECT
COUNT
(
*
)
FROM
SYSTEM_RANGE
(
1
,
8
,
2
)
WHERE
X
BETWEEN
2
AND
6
;
>>
2
SELECT
*
FROM
SYSTEM_RANGE
(
8
,
1
,
-
2
)
ORDER
BY
X
DESC
;
>
X
>
-
>
8
>
6
>
4
>
2
>
rows
(
ordered
):
4
SELECT
*
FROM
SYSTEM_RANGE
(
8
,
1
,
-
2
)
WHERE
X
=
3
;
>
X
>
-
>
rows
:
0
SELECT
COUNT
(
*
)
FROM
SYSTEM_RANGE
(
8
,
1
,
-
2
)
WHERE
X
=
3
;
>>
0
SELECT
*
FROM
SYSTEM_RANGE
(
8
,
1
,
-
2
)
WHERE
X
BETWEEN
3
AND
7
ORDER
BY
1
DESC
;
>
X
>
-
>
6
>
4
>
rows
(
ordered
):
2
SELECT
COUNT
(
*
)
FROM
SYSTEM_RANGE
(
8
,
1
,
-
2
)
WHERE
X
BETWEEN
3
AND
7
;
>>
2
h2/src/test/org/h2/test/scripts/testScript.sql
浏览文件 @
96ab15f8
...
...
@@ -1950,24 +1950,6 @@ create table test as select 1, space(10) from dual where 1=0 union all select x,
drop table test;
> ok
explain select * from system_range(1, 2) where x=x+1 and x=1;
> PLAN
> ---------------------------------------------------------------------------------------------------------------------------------
> SELECT SYSTEM_RANGE.X FROM SYSTEM_RANGE(1, 2) /* PUBLIC.RANGE_INDEX: X = 1 */ WHERE ((X = 1) AND (X = (X + 1))) AND (1 = (X + 1))
> rows: 1
explain select * from system_range(1, 2) where not (x = 1 and x*2 = 2);
> PLAN
> -------------------------------------------------------------------------------------------------------
> SELECT SYSTEM_RANGE.X FROM SYSTEM_RANGE(1, 2) /* PUBLIC.RANGE_INDEX */ WHERE (X <> 1) OR ((X * 2) <> 2)
> rows: 1
explain select * from system_range(1, 10) where (NOT x >= 5);
> PLAN
> ------------------------------------------------------------------------------------------
> SELECT SYSTEM_RANGE.X FROM SYSTEM_RANGE(1, 10) /* PUBLIC.RANGE_INDEX: X < 5 */ WHERE X < 5
> rows: 1
CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255));
> ok
...
...
@@ -3042,12 +3024,6 @@ SELECT t1.ID, (SELECT t1.id || ':' || AVG(t2.ID) FROM X t2) FROM X t1;
drop table x;
> ok
select (select t1.x from system_range(1,1) t2) from system_range(1,1) t1;
> SELECT T1.X FROM SYSTEM_RANGE(1, 1) T2 /* PUBLIC.RANGE_INDEX */ /* scanCount: 2 */
> ----------------------------------------------------------------------------------
> 1
> rows: 1
create table test(id int primary key, name varchar);
> ok
...
...
@@ -5872,12 +5848,6 @@ EXPLAIN PLAN FOR SELECT LEFT(NAME, 2) FROM TEST;
> SELECT LEFT(NAME, 2) FROM PUBLIC.TEST /* PUBLIC.TEST.tableScan */
> rows: 1
EXPLAIN PLAN FOR SELECT * FROM SYSTEM_RANGE(1, 20);
> PLAN
> -----------------------------------------------------------------------
> SELECT SYSTEM_RANGE.X FROM SYSTEM_RANGE(1, 20) /* PUBLIC.RANGE_INDEX */
> rows: 1
SELECT * FROM test t1 inner join test t2 on t1.id=t2.id and t2.name is not null where t1.id=1;
> ID NAME ID NAME
> -- ----- -- -----
...
...
@@ -6358,54 +6328,6 @@ SELECT * FROM TEST;
DROP TABLE TEST;
> ok
--- range ----------------------------------------------------------------------------------------------
--import java.math.*;
--int s=0;for(int i=2;i<=1000;i++)
--s+=BigInteger.valueOf(i).isProbablePrime(10000)?i:0;s;
select sum(x) from system_range(2, 1000) r where
not exists(select * from system_range(2, 32) r2 where r.x>r2.x and mod(r.x, r2.x)=0);
> SUM(X)
> ------
> 76127
> rows: 1
SELECT COUNT(*) FROM SYSTEM_RANGE(0, 2111222333);
> COUNT(*)
> ----------
> 2111222334
> rows: 1
select * from system_range(2, 100) r where
not exists(select * from system_range(2, 11) r2 where r.x>r2.x and mod(r.x, r2.x)=0);
> X
> --
> 11
> 13
> 17
> 19
> 2
> 23
> 29
> 3
> 31
> 37
> 41
> 43
> 47
> 5
> 53
> 59
> 61
> 67
> 7
> 71
> 73
> 79
> 83
> 89
> 97
> rows: 25
--- syntax errors ----------------------------------------------------------------------------------------------
CREATE SOMETHING STRANGE;
> exception
...
...
h2/src/test/org/h2/test/store/TestCacheLIRS.java
浏览文件 @
96ab15f8
...
...
@@ -449,8 +449,8 @@ public class TestCacheLIRS extends TestBase {
Integer
x
=
test
.
get
(
i
);
Integer
y
=
test
.
peek
(
i
);
if
(
i
<
size
/
2
)
{
assert
True
(
"i: "
+
i
,
x
!=
null
);
assert
True
(
"i: "
+
i
,
y
!=
null
);
assert
NotNull
(
"i: "
+
i
,
x
);
assert
NotNull
(
"i: "
+
i
,
y
);
assertEquals
(
i
*
10
,
x
.
intValue
());
assertEquals
(
i
*
10
,
y
.
intValue
());
}
else
{
...
...
@@ -469,7 +469,7 @@ public class TestCacheLIRS extends TestBase {
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
Integer
x
=
test
.
get
(
i
);
if
(
i
<
size
/
2
||
i
==
size
-
1
)
{
assert
True
(
"i: "
+
i
,
x
!=
null
);
assert
NotNull
(
"i: "
+
i
,
x
);
assertEquals
(
i
*
10
,
x
.
intValue
());
}
else
{
assertNull
(
x
);
...
...
h2/src/test/org/h2/test/store/TestCacheLongKeyLIRS.java
浏览文件 @
96ab15f8
...
...
@@ -378,8 +378,8 @@ public class TestCacheLongKeyLIRS extends TestBase {
Integer
x
=
test
.
get
(
i
);
Integer
y
=
test
.
peek
(
i
);
if
(
i
<
size
/
2
)
{
assert
True
(
"i: "
+
i
,
x
!=
null
);
assert
True
(
"i: "
+
i
,
y
!=
null
);
assert
NotNull
(
"i: "
+
i
,
x
);
assert
NotNull
(
"i: "
+
i
,
y
);
assertEquals
(
i
*
10
,
x
.
intValue
());
assertEquals
(
i
*
10
,
y
.
intValue
());
}
else
{
...
...
@@ -398,7 +398,7 @@ public class TestCacheLongKeyLIRS extends TestBase {
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
Integer
x
=
test
.
get
(
i
);
if
(
i
<
size
/
2
||
i
==
size
-
1
||
i
==
size
-
2
)
{
assert
True
(
"i: "
+
i
,
x
!=
null
);
assert
NotNull
(
"i: "
+
i
,
x
);
assertEquals
(
i
*
10
,
x
.
intValue
());
}
else
{
assertNull
(
x
);
...
...
h2/src/test/org/h2/test/store/TestDataUtils.java
浏览文件 @
96ab15f8
...
...
@@ -141,7 +141,7 @@ public class TestDataUtils extends TestBase {
}
try
{
HashMap
<
String
,
String
>
map
=
DataUtils
.
parseMap
(
buff
.
toString
());
assert
False
(
map
==
null
);
assert
NotNull
(
map
);
// ok
}
catch
(
IllegalStateException
e
)
{
// ok - but not another exception
...
...
h2/src/test/org/h2/test/store/TestMVRTree.java
浏览文件 @
96ab15f8
...
...
@@ -134,7 +134,7 @@ public class TestMVRTree extends TestMVStore {
for
(
SpatialKey
k
;
it
.
hasNext
();)
{
k
=
it
.
next
();
// System.out.println(k + ": " + r.get(k));
assert
True
(
k
!=
null
);
assert
NotNull
(
k
);
}
s
.
close
();
}
...
...
@@ -181,7 +181,7 @@ public class TestMVRTree extends TestMVStore {
assertEquals
(
len
,
r
.
size
());
int
count
=
0
;
for
(
SpatialKey
k
:
r
.
keySet
())
{
assert
True
(
r
.
get
(
k
)
!=
null
);
assert
NotNull
(
r
.
get
(
k
)
);
count
++;
}
assertEquals
(
len
,
count
);
...
...
@@ -413,7 +413,7 @@ public class TestMVRTree extends TestMVStore {
while
(
it
.
hasNext
())
{
SpatialKey
n
=
it
.
next
();
String
a
=
map
.
get
(
n
);
assert
False
(
a
==
null
);
assert
NotNull
(
a
);
}
break
;
}
...
...
@@ -424,7 +424,7 @@ public class TestMVRTree extends TestMVStore {
while
(
it
.
hasNext
())
{
SpatialKey
n
=
it
.
next
();
String
a
=
map
.
get
(
n
);
assert
False
(
a
==
null
);
assert
NotNull
(
a
);
}
break
;
}
...
...
h2/src/test/org/h2/test/store/TestMVStore.java
浏览文件 @
96ab15f8
...
...
@@ -528,7 +528,7 @@ public class TestMVStore extends TestBase {
sleep
(
10
);
}
Throwable
e
=
exRef
.
get
();
assert
True
(
e
!=
null
);
assert
NotNull
(
e
);
assertEquals
(
DataUtils
.
ERROR_WRITING_FAILED
,
DataUtils
.
getErrorCode
(
e
.
getMessage
()));
}
catch
(
IllegalStateException
e
)
{
...
...
@@ -894,7 +894,7 @@ public class TestMVStore extends TestBase {
s
.
close
();
s
=
openStore
(
fileName
);
Object
test
=
s
.
getStoreHeader
().
get
(
"test"
);
assert
False
(
test
==
null
);
assert
NotNull
(
test
);
assertEquals
(
"123"
,
test
.
toString
());
s
.
close
();
}
...
...
@@ -1506,8 +1506,8 @@ public class TestMVStore extends TestBase {
s
.
setRetentionTime
(
45000
);
assertEquals
(
2
,
s
.
getCurrentVersion
());
meta
=
s
.
getMetaMap
();
assert
True
(
meta
.
get
(
"name.data"
)
!=
null
);
assert
True
(
meta
.
get
(
"name.data0"
)
!=
null
);
assert
NotNull
(
meta
.
get
(
"name.data"
)
);
assert
NotNull
(
meta
.
get
(
"name.data0"
)
);
assertNull
(
meta
.
get
(
"name.data1"
));
m
=
s
.
openMap
(
"data"
);
m0
=
s
.
openMap
(
"data0"
);
...
...
h2/src/test/org/h2/test/store/TestMVStoreBenchmark.java
浏览文件 @
96ab15f8
...
...
@@ -174,7 +174,7 @@ public class TestMVStoreBenchmark extends TestBase {
for
(
int
a
=
0
;
a
<
5
;
a
++)
{
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
String
x
=
map
.
get
(
i
);
assert
True
(
x
!=
null
);
assert
NotNull
(
x
);
}
}
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
...
...
h2/src/test/org/h2/test/store/TestMVTableEngine.java
浏览文件 @
96ab15f8
...
...
@@ -180,7 +180,7 @@ public class TestMVTableEngine extends TestBase {
stat
.
execute
(
"checkpoint"
);
stat
.
execute
(
"shutdown immediately"
);
Exception
ex
=
t
.
getException
();
assert
True
(
ex
!=
null
);
assert
NotNull
(
ex
);
try
{
conn
.
close
();
}
catch
(
Exception
e
)
{
...
...
h2/src/test/org/h2/test/store/TestTransactionStore.java
浏览文件 @
96ab15f8
...
...
@@ -860,7 +860,7 @@ public class TestTransactionStore extends TestBase {
assertNull
(
map
.
get
(
x
));
}
}
catch
(
SQLException
e
)
{
assert
True
(
map
.
get
(
x
)
!=
null
);
assert
NotNull
(
map
.
get
(
x
)
);
assertFalse
(
map
.
tryRemove
(
x
));
// PostgreSQL needs to rollback
buff
.
append
(
" -> rollback"
);
...
...
h2/src/test/org/h2/test/unit/TestClassLoaderLeak.java
浏览文件 @
96ab15f8
...
...
@@ -50,7 +50,7 @@ public class TestClassLoaderLeak extends TestBase {
Thread
.
sleep
(
10
);
}
ClassLoader
cl
=
ref
.
get
();
assert
True
(
cl
==
nul
l
);
assert
Null
(
c
l
);
// fill the memory, so a heap dump is created
// using -XX:+HeapDumpOnOutOfMemoryError
// which can be analyzed using EclipseMAT
...
...
h2/src/test/org/h2/test/unit/TestFileSystem.java
浏览文件 @
96ab15f8
...
...
@@ -219,16 +219,16 @@ public class TestFileSystem extends TestBase {
String
resource
=
"org/h2/test/scripts/testSimple.in.txt"
;
InputStream
in
;
in
=
getClass
().
getResourceAsStream
(
"/"
+
resource
);
assert
True
(
in
!=
null
);
assert
NotNull
(
in
);
in
.
close
();
in
=
getClass
().
getClassLoader
().
getResourceAsStream
(
resource
);
assert
True
(
in
!=
null
);
assert
NotNull
(
in
);
in
.
close
();
in
=
FileUtils
.
newInputStream
(
"classpath:"
+
resource
);
assert
True
(
in
!=
null
);
assert
NotNull
(
in
);
in
.
close
();
in
=
FileUtils
.
newInputStream
(
"classpath:/"
+
resource
);
assert
True
(
in
!=
null
);
assert
NotNull
(
in
);
in
.
close
();
}
...
...
@@ -320,7 +320,7 @@ public class TestFileSystem extends TestBase {
for
(
String
f
:
FileUtils
.
newDirectoryStream
(
"zip:"
+
getBaseDir
()
+
"/fsJar.zip"
))
{
assertFalse
(
FileUtils
.
isAbsolute
(
f
));
assert
True
(!
FileUtils
.
isDirectory
(
f
));
assert
False
(
FileUtils
.
isDirectory
(
f
));
assertTrue
(
FileUtils
.
size
(
f
)
>
0
);
assertTrue
(
f
.
endsWith
(
FileUtils
.
getName
(
f
)));
assertEquals
(
0
,
FileUtils
.
lastModified
(
f
));
...
...
@@ -599,7 +599,7 @@ public class TestFileSystem extends TestBase {
IOUtils
.
copyFiles
(
fsBase
+
"/test"
,
fsBase
+
"/test3"
);
FileUtils
.
move
(
fsBase
+
"/test3"
,
fsBase
+
"/test2"
);
FileUtils
.
move
(
fsBase
+
"/test2"
,
fsBase
+
"/test2"
);
assert
True
(!
FileUtils
.
exists
(
fsBase
+
"/test3"
));
assert
False
(
FileUtils
.
exists
(
fsBase
+
"/test3"
));
assertTrue
(
FileUtils
.
exists
(
fsBase
+
"/test2"
));
assertEquals
(
10000
,
FileUtils
.
size
(
fsBase
+
"/test2"
));
byte
[]
buffer2
=
new
byte
[
10000
];
...
...
@@ -624,7 +624,7 @@ public class TestFileSystem extends TestBase {
assertTrue
(
FileUtils
.
isDirectory
(
fsBase
+
"/testDir"
));
if
(!
fsBase
.
startsWith
(
"jdbc:"
))
{
FileUtils
.
deleteRecursive
(
fsBase
+
"/testDir"
,
false
);
assert
True
(!
FileUtils
.
exists
(
fsBase
+
"/testDir"
));
assert
False
(
FileUtils
.
exists
(
fsBase
+
"/testDir"
));
}
}
}
...
...
h2/src/test/org/h2/test/unit/TestNetUtils.java
浏览文件 @
96ab15f8
...
...
@@ -125,7 +125,7 @@ public class TestNetUtils extends TestBase {
closeSilently
(
socket
);
closeSilently
(
serverSocket
);
if
(
task
!=
null
)
{
assert
True
(
task
.
getException
()
!=
null
);
assert
NotNull
(
task
.
getException
()
);
assertEquals
(
javax
.
net
.
ssl
.
SSLHandshakeException
.
class
.
getName
(),
task
.
getException
().
getClass
().
getName
());
assertContains
(
task
.
getException
().
getMessage
(),
"certificate_unknown"
);
...
...
h2/src/test/org/h2/test/unit/TestTools.java
浏览文件 @
96ab15f8
...
...
@@ -476,7 +476,7 @@ public class TestTools extends TestBase {
assertEquals
(
ResultSet
.
FETCH_FORWARD
,
rs
.
getFetchDirection
());
assertEquals
(
0
,
rs
.
getFetchSize
());
assertEquals
(
ResultSet
.
TYPE_SCROLL_INSENSITIVE
,
rs
.
getType
());
assert
True
(
rs
.
getStatement
()
==
null
);
assert
Null
(
rs
.
getStatement
()
);
assertFalse
(
rs
.
isClosed
());
rs
.
beforeFirst
();
...
...
@@ -760,7 +760,7 @@ public class TestTools extends TestBase {
assertEquals
(
Double
.
MIN_VALUE
,
rs
.
getDouble
(
"b"
));
assertEquals
(
Long
.
MIN_VALUE
,
rs
.
getLong
(
"c"
));
assertEquals
(
Short
.
MIN_VALUE
,
rs
.
getShort
(
"d"
));
assert
True
(!
rs
.
getBoolean
(
"e"
));
assert
False
(
rs
.
getBoolean
(
"e"
));
assertEquals
(
new
byte
[]
{
(
byte
)
10
,
(
byte
)
20
},
rs
.
getBytes
(
"f"
));
assertEquals
(
"2007-12-31"
,
rs
.
getString
(
"g"
));
assertEquals
(
"23:59:59"
,
rs
.
getString
(
"h"
));
...
...
@@ -902,8 +902,8 @@ public class TestTools extends TestBase {
"SELECT * FROM TEST ORDER BY ID"
);
rs
.
next
();
assertEquals
(
1
,
rs
.
getInt
(
1
));
assert
True
(
rs
.
getString
(
2
)
==
null
);
assert
True
(
rs
.
getString
(
3
)
==
null
);
assert
Null
(
rs
.
getString
(
2
)
);
assert
Null
(
rs
.
getString
(
3
)
);
rs
.
next
();
assertEquals
(
2
,
rs
.
getInt
(
1
));
assertEquals
(
"face"
,
rs
.
getString
(
2
));
...
...
h2/src/test/org/h2/test/unit/TestValue.java
浏览文件 @
96ab15f8
...
...
@@ -302,7 +302,7 @@ public class TestValue extends TestBase {
for
(
int
i
=
0
;
i
<
d
.
length
-
1
;
i
++)
{
assertTrue
(
values
[
i
].
compareTypeSafe
(
values
[
i
+
1
],
null
)
<
0
);
assertTrue
(
values
[
i
+
1
].
compareTypeSafe
(
values
[
i
],
null
)
>
0
);
assert
True
(!
values
[
i
].
equals
(
values
[
i
+
1
]));
assert
False
(
values
[
i
].
equals
(
values
[
i
+
1
]));
}
}
...
...
h2/src/test/org/h2/test/utils/TestColumnNamer.java
浏览文件 @
96ab15f8
...
...
@@ -47,7 +47,7 @@ public class TestColumnNamer extends TestBase {
for
(
String
id
:
ids
)
{
Expression
columnExp
=
ValueExpression
.
getDefault
();
String
newColumnName
=
columnNamer
.
getColumnName
(
columnExp
,
index
+
1
,
id
);
assert
True
(
newColumnName
!=
null
);
assert
NotNull
(
newColumnName
);
assertTrue
(
newColumnName
.
length
()
<=
30
);
assertTrue
(
newColumnName
.
length
()
>=
1
);
assertEquals
(
newColumnName
,
expectedColumnName
[
index
]);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论