Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
10fa11b8
提交
10fa11b8
authored
11 年前
作者:
Thomas Mueller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Limit line length to 80 characters (comments) and 100 (code)
上级
9ade2f38
隐藏空白字符变更
内嵌
并排
正在显示
50 个修改的文件
包含
293 行增加
和
174 行删除
+293
-174
RuleFixed.java
h2/src/main/org/h2/bnf/RuleFixed.java
+2
-1
AggregateDataCount.java
h2/src/main/org/h2/expression/AggregateDataCount.java
+4
-3
AggregateDataCountAll.java
h2/src/main/org/h2/expression/AggregateDataCountAll.java
+4
-3
AggregateDataGroupConcat.java
h2/src/main/org/h2/expression/AggregateDataGroupConcat.java
+4
-3
AggregateDataHistogram.java
h2/src/main/org/h2/expression/AggregateDataHistogram.java
+4
-3
SpatialTreeIndex.java
h2/src/main/org/h2/index/SpatialTreeIndex.java
+4
-3
DataUtils.java
h2/src/main/org/h2/mvstore/DataUtils.java
+10
-6
FileStore.java
h2/src/main/org/h2/mvstore/FileStore.java
+4
-2
MVMap.java
h2/src/main/org/h2/mvstore/MVMap.java
+4
-2
MVStore.java
h2/src/main/org/h2/mvstore/MVStore.java
+24
-12
MVStoreTool.java
h2/src/main/org/h2/mvstore/MVStoreTool.java
+13
-6
OffHeapStore.java
h2/src/main/org/h2/mvstore/OffHeapStore.java
+8
-4
Page.java
h2/src/main/org/h2/mvstore/Page.java
+22
-13
StreamStore.java
h2/src/main/org/h2/mvstore/StreamStore.java
+4
-2
CacheLongKeyLIRS.java
h2/src/main/org/h2/mvstore/cache/CacheLongKeyLIRS.java
+6
-3
MVSpatialIndex.java
h2/src/main/org/h2/mvstore/db/MVSpatialIndex.java
+4
-3
MVTable.java
h2/src/main/org/h2/mvstore/db/MVTable.java
+16
-7
MVTableEngine.java
h2/src/main/org/h2/mvstore/db/MVTableEngine.java
+11
-4
TransactionStore.java
h2/src/main/org/h2/mvstore/db/TransactionStore.java
+28
-14
ValueDataType.java
h2/src/main/org/h2/mvstore/db/ValueDataType.java
+4
-2
MVRTreeMap.java
h2/src/main/org/h2/mvstore/rtree/MVRTreeMap.java
+2
-1
SpatialDataType.java
h2/src/main/org/h2/mvstore/rtree/SpatialDataType.java
+2
-1
ObjectDataType.java
h2/src/main/org/h2/mvstore/type/ObjectDataType.java
+4
-2
DateTimeUtils.java
h2/src/main/org/h2/util/DateTimeUtils.java
+6
-3
DbDriverActivator.java
h2/src/main/org/h2/util/DbDriverActivator.java
+4
-3
OsgiDataSourceFactory.java
h2/src/main/org/h2/util/OsgiDataSourceFactory.java
+4
-3
CreateScriptFile.java
h2/src/test/org/h2/samples/CreateScriptFile.java
+4
-2
CsvSample.java
h2/src/test/org/h2/samples/CsvSample.java
+3
-1
SQLInjection.java
h2/src/test/org/h2/samples/SQLInjection.java
+2
-1
TestScalability.java
h2/src/test/org/h2/test/bench/TestScalability.java
+4
-3
TestMultiConn.java
h2/src/test/org/h2/test/db/TestMultiConn.java
+4
-3
TestOpenClose.java
h2/src/test/org/h2/test/db/TestOpenClose.java
+4
-3
TestQueryCache.java
h2/src/test/org/h2/test/db/TestQueryCache.java
+4
-3
TestSpatial.java
h2/src/test/org/h2/test/db/TestSpatial.java
+4
-3
TestBenchmark.java
h2/src/test/org/h2/test/store/TestBenchmark.java
+4
-3
TestCacheConcurrentLIRS.java
h2/src/test/org/h2/test/store/TestCacheConcurrentLIRS.java
+4
-3
TestCacheLIRS.java
h2/src/test/org/h2/test/store/TestCacheLIRS.java
+4
-3
TestCacheLongKeyLIRS.java
h2/src/test/org/h2/test/store/TestCacheLongKeyLIRS.java
+4
-3
TestConcurrent.java
h2/src/test/org/h2/test/store/TestConcurrent.java
+4
-3
TestDataUtils.java
h2/src/test/org/h2/test/store/TestDataUtils.java
+4
-3
TestFreeSpace.java
h2/src/test/org/h2/test/store/TestFreeSpace.java
+4
-3
TestKillProcessWhileWriting.java
...c/test/org/h2/test/store/TestKillProcessWhileWriting.java
+4
-3
TestMVStoreBenchmark.java
h2/src/test/org/h2/test/store/TestMVStoreBenchmark.java
+4
-3
TestRandomMapOps.java
h2/src/test/org/h2/test/store/TestRandomMapOps.java
+4
-3
TestPageStore.java
h2/src/test/org/h2/test/unit/TestPageStore.java
+4
-3
H2QueryBuilder.java
h2/src/tools/org/h2/android/H2QueryBuilder.java
+4
-3
H2Statement.java
h2/src/tools/org/h2/android/H2Statement.java
+4
-3
CheckTextFiles.java
h2/src/tools/org/h2/build/code/CheckTextFiles.java
+2
-2
CacheLIRS.java
h2/src/tools/org/h2/dev/cache/CacheLIRS.java
+4
-2
DbUpgrader.java
h2/src/tools/org/h2/jaqu/DbUpgrader.java
+4
-3
没有找到文件。
h2/src/main/org/h2/bnf/RuleFixed.java
浏览文件 @
10fa11b8
...
...
@@ -138,7 +138,8 @@ public class RuleFixed implements Rule {
}
break
;
case
AZ_UNDERSCORE:
if
(
s
.
length
()
>
0
&&
(
Character
.
isLetter
(
s
.
charAt
(
0
))
||
s
.
charAt
(
0
)
==
'_'
))
{
if
(
s
.
length
()
>
0
&&
(
Character
.
isLetter
(
s
.
charAt
(
0
))
||
s
.
charAt
(
0
)
==
'_'
))
{
s
=
s
.
substring
(
1
);
}
if
(
s
.
length
()
==
0
)
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/AggregateDataCount.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
expression
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/AggregateDataCountAll.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
expression
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/AggregateDataGroupConcat.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
expression
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/AggregateDataHistogram.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
expression
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/index/SpatialTreeIndex.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
index
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/DataUtils.java
浏览文件 @
10fa11b8
...
...
@@ -284,7 +284,8 @@ public class DataUtils {
* @param len the number of characters
* @return the byte buffer
*/
public
static
ByteBuffer
writeStringData
(
ByteBuffer
buff
,
String
s
,
int
len
)
{
public
static
ByteBuffer
writeStringData
(
ByteBuffer
buff
,
String
s
,
int
len
)
{
buff
=
DataUtils
.
ensureCapacity
(
buff
,
3
*
len
);
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
int
c
=
s
.
charAt
(
i
);
...
...
@@ -345,7 +346,8 @@ public class DataUtils {
* @param out the output stream
* @param x the value
*/
public
static
void
writeVarLong
(
OutputStream
out
,
long
x
)
throws
IOException
{
public
static
void
writeVarLong
(
OutputStream
out
,
long
x
)
throws
IOException
{
while
((
x
&
~
0x7f
)
!=
0
)
{
out
.
write
((
byte
)
(
0x80
|
(
x
&
0x7f
)));
x
>>>=
7
;
...
...
@@ -418,7 +420,8 @@ public class DataUtils {
}
throw
newIllegalStateException
(
ERROR_READING_FAILED
,
"Reading from {0} failed; file length {1} read length {2} at {3}"
,
"Reading from {0} failed; file length {1} "
+
"read length {2} at {3}"
,
file
,
size
,
dst
.
remaining
(),
pos
,
e
);
}
}
...
...
@@ -534,7 +537,8 @@ public class DataUtils {
* @param type the page type (1 for node, 0 for leaf)
* @return the position
*/
public
static
long
getPagePos
(
int
chunkId
,
int
offset
,
int
length
,
int
type
)
{
public
static
long
getPagePos
(
int
chunkId
,
int
offset
,
int
length
,
int
type
)
{
long
pos
=
(
long
)
chunkId
<<
38
;
pos
|=
(
long
)
offset
<<
6
;
pos
|=
encodeLength
(
length
)
<<
1
;
...
...
@@ -712,8 +716,8 @@ public class DataUtils {
* @param message the message
* @return the exception
*/
public
static
UnsupportedOperationException
newUnsupportedOperationException
(
String
message
)
{
public
static
UnsupportedOperationException
newUnsupportedOperationException
(
String
message
)
{
return
new
UnsupportedOperationException
(
formatMessage
(
0
,
message
));
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/FileStore.java
浏览文件 @
10fa11b8
...
...
@@ -148,11 +148,13 @@ public class FileStore {
}
}
catch
(
OverlappingFileLockException
e
)
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_FILE_LOCKED
,
"The file is locked: {0}"
,
fileName
,
e
);
DataUtils
.
ERROR_FILE_LOCKED
,
"The file is locked: {0}"
,
fileName
,
e
);
}
if
(
fileLock
==
null
)
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_FILE_LOCKED
,
"The file is locked: {0}"
,
fileName
);
DataUtils
.
ERROR_FILE_LOCKED
,
"The file is locked: {0}"
,
fileName
);
}
fileSize
=
file
.
size
();
}
catch
(
IOException
e
)
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/MVMap.java
浏览文件 @
10fa11b8
...
...
@@ -930,7 +930,8 @@ public class MVMap<K, V> extends AbstractMap<K, V>
protected
void
waitUntilWritten
(
long
version
)
{
if
(
readOnly
)
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_INTERNAL
,
"Waiting for writes to a read-only map"
);
DataUtils
.
ERROR_INTERNAL
,
"Waiting for writes to a read-only map"
);
}
while
(
currentWriteVersion
==
version
)
{
Thread
.
yield
();
...
...
@@ -997,7 +998,8 @@ public class MVMap<K, V> extends AbstractMap<K, V>
public
MVMap
<
K
,
V
>
openVersion
(
long
version
)
{
if
(
readOnly
)
{
throw
DataUtils
.
newUnsupportedOperationException
(
"This map is read-only; need to call the method on the writable map"
);
"This map is read-only; need to call "
+
"the method on the writable map"
);
}
DataUtils
.
checkArgument
(
version
>=
createVersion
,
"Unknown version {0}; this map was created in version is {1}"
,
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/MVStore.java
浏览文件 @
10fa11b8
...
...
@@ -164,7 +164,8 @@ public class MVStore {
* is the unsaved version, the value is the map of chunks. The maps contains
* the number of freed entries per chunk. Access is synchronized.
*/
private
final
ConcurrentHashMap
<
Long
,
HashMap
<
Integer
,
Chunk
>>
freedPageSpace
=
private
final
ConcurrentHashMap
<
Long
,
HashMap
<
Integer
,
Chunk
>>
freedPageSpace
=
new
ConcurrentHashMap
<
Long
,
HashMap
<
Integer
,
Chunk
>>();
/**
...
...
@@ -508,9 +509,11 @@ public class MVStore {
fileHeaderBlocks
.
get
(
buff
);
// the following can fail for various reasons
try
{
String
s
=
new
String
(
buff
,
0
,
BLOCK_SIZE
,
DataUtils
.
LATIN
).
trim
();
String
s
=
new
String
(
buff
,
0
,
BLOCK_SIZE
,
DataUtils
.
LATIN
).
trim
();
HashMap
<
String
,
String
>
m
=
DataUtils
.
parseMap
(
s
);
int
blockSize
=
DataUtils
.
readHexInt
(
m
,
"blockSize"
,
BLOCK_SIZE
);
int
blockSize
=
DataUtils
.
readHexInt
(
m
,
"blockSize"
,
BLOCK_SIZE
);
if
(
blockSize
!=
BLOCK_SIZE
)
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_UNSUPPORTED_FORMAT
,
...
...
@@ -521,7 +524,8 @@ public class MVStore {
m
.
remove
(
"fletcher"
);
s
=
s
.
substring
(
0
,
s
.
lastIndexOf
(
"fletcher"
)
-
1
);
byte
[]
bytes
=
s
.
getBytes
(
DataUtils
.
LATIN
);
int
checksum
=
DataUtils
.
getFletcher32
(
bytes
,
bytes
.
length
/
2
*
2
);
int
checksum
=
DataUtils
.
getFletcher32
(
bytes
,
bytes
.
length
/
2
*
2
);
if
(
check
!=
checksum
)
{
continue
;
}
...
...
@@ -546,7 +550,8 @@ public class MVStore {
if
(
format
>
FORMAT_WRITE
&&
!
fileStore
.
isReadOnly
())
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_UNSUPPORTED_FORMAT
,
"The write format {0} is larger than the supported format {1}, "
+
"The write format {0} is larger "
+
"than the supported format {1}, "
+
"and the file was not opened in read-only mode"
,
format
,
FORMAT_WRITE
);
}
...
...
@@ -554,7 +559,8 @@ public class MVStore {
if
(
format
>
FORMAT_READ
)
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_UNSUPPORTED_FORMAT
,
"The read format {0} is larger than the supported format {1}"
,
"The read format {0} is larger "
+
"than the supported format {1}"
,
format
,
FORMAT_READ
);
}
lastStoredVersion
=
-
1
;
...
...
@@ -610,7 +616,8 @@ public class MVStore {
}
lastChunk
=
header
;
newestVersion
=
header
.
version
;
if
(
header
.
next
==
0
||
header
.
next
>=
fileStore
.
size
()
/
BLOCK_SIZE
)
{
if
(
header
.
next
==
0
||
header
.
next
>=
fileStore
.
size
()
/
BLOCK_SIZE
)
{
// no (valid) next
break
;
}
...
...
@@ -1018,7 +1025,8 @@ public class MVStore {
// calculate and set the likely next position
if
(
reuseSpace
)
{
int
predictBlocks
=
c
.
len
;
long
predictedNextStart
=
fileStore
.
allocate
(
predictBlocks
*
BLOCK_SIZE
);
long
predictedNextStart
=
fileStore
.
allocate
(
predictBlocks
*
BLOCK_SIZE
);
fileStore
.
free
(
predictedNextStart
,
predictBlocks
*
BLOCK_SIZE
);
c
.
next
=
predictedNextStart
/
BLOCK_SIZE
;
}
else
{
...
...
@@ -1045,7 +1053,8 @@ public class MVStore {
// the last prediction did not matched
needHeader
=
true
;
}
else
{
long
headerVersion
=
DataUtils
.
readHexLong
(
fileHeader
,
"version"
,
0
);
long
headerVersion
=
DataUtils
.
readHexLong
(
fileHeader
,
"version"
,
0
);
if
(
lastChunk
.
version
-
headerVersion
>
20
)
{
// we write after at least 20 entries
needHeader
=
true
;
...
...
@@ -1531,7 +1540,8 @@ public class MVStore {
int
pageLength
=
buff
.
getInt
();
if
(
pageLength
<=
0
)
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_FILE_CORRUPT
,
"Page length {0}"
,
pageLength
);
DataUtils
.
ERROR_FILE_CORRUPT
,
"Page length {0}"
,
pageLength
);
}
buff
.
getShort
();
int
mapId
=
DataUtils
.
readVarInt
(
buff
);
...
...
@@ -1789,7 +1799,8 @@ public class MVStore {
if
(
oldMeta
==
null
)
{
return
false
;
}
for
(
Iterator
<
String
>
it
=
oldMeta
.
keyIterator
(
"chunk."
);
it
.
hasNext
();)
{
for
(
Iterator
<
String
>
it
=
oldMeta
.
keyIterator
(
"chunk."
);
it
.
hasNext
();)
{
String
chunkKey
=
it
.
next
();
if
(!
chunkKey
.
startsWith
(
"chunk."
))
{
break
;
...
...
@@ -1968,7 +1979,8 @@ public class MVStore {
}
private
void
revertTemp
(
long
storeVersion
)
{
for
(
Iterator
<
Long
>
it
=
freedPageSpace
.
keySet
().
iterator
();
it
.
hasNext
();)
{
for
(
Iterator
<
Long
>
it
=
freedPageSpace
.
keySet
().
iterator
();
it
.
hasNext
();)
{
long
v
=
it
.
next
();
if
(
v
>
storeVersion
)
{
continue
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/MVStoreTool.java
浏览文件 @
10fa11b8
...
...
@@ -87,7 +87,8 @@ public class MVStoreTool {
block
.
position
(
0
);
Chunk
c
=
Chunk
.
readChunkHeader
(
block
,
pos
);
int
length
=
c
.
len
*
MVStore
.
BLOCK_SIZE
;
pw
.
printf
(
"%n%0"
+
len
+
"x chunkHeader %s%n"
,
pos
,
c
.
toString
());
pw
.
printf
(
"%n%0"
+
len
+
"x chunkHeader %s%n"
,
pos
,
c
.
toString
());
ByteBuffer
chunk
=
ByteBuffer
.
allocate
(
length
);
DataUtils
.
readFully
(
file
,
pos
,
chunk
);
int
p
=
block
.
position
();
...
...
@@ -104,7 +105,8 @@ public class MVStoreTool {
boolean
compressed
=
(
type
&
2
)
!=
0
;
boolean
node
=
(
type
&
1
)
!=
0
;
pw
.
printf
(
"+%0"
+
len
+
"x %s, map %x, %d entries, %d bytes%n"
,
"+%0"
+
len
+
"x %s, map %x, %d entries, %d bytes%n"
,
p
,
(
node
?
"node"
:
"leaf"
)
+
(
compressed
?
" compressed"
:
""
),
...
...
@@ -138,14 +140,17 @@ public class MVStoreTool {
// meta map node
for
(
int
i
=
0
;
i
<
entries
;
i
++)
{
long
cp
=
children
[
i
];
pw
.
printf
(
" %d children < %s @ chunk %x +%0"
+
len
+
"x%n"
,
pw
.
printf
(
" %d children < %s @ "
+
"chunk %x +%0"
+
len
+
"x%n"
,
counts
[
i
],
keys
[
i
],
DataUtils
.
getPageChunkId
(
cp
),
DataUtils
.
getPageOffset
(
cp
));
}
long
cp
=
children
[
entries
];
pw
.
printf
(
" %d children >= %s @ chunk %x +%0"
+
len
+
"x%n"
,
pw
.
printf
(
" %d children >= %s @ chunk %x +%0"
+
len
+
"x%n"
,
counts
[
entries
],
keys
[
entries
],
DataUtils
.
getPageChunkId
(
cp
),
...
...
@@ -158,14 +163,16 @@ public class MVStoreTool {
values
[
i
]
=
v
;
}
for
(
int
i
=
0
;
i
<
entries
;
i
++)
{
pw
.
println
(
" "
+
keys
[
i
]
+
" = "
+
values
[
i
]);
pw
.
println
(
" "
+
keys
[
i
]
+
" = "
+
values
[
i
]);
}
}
}
else
{
if
(
node
)
{
for
(
int
i
=
0
;
i
<=
entries
;
i
++)
{
long
cp
=
children
[
i
];
pw
.
printf
(
" %d children @ chunk %x +%0"
+
len
+
"x%n"
,
pw
.
printf
(
" %d children @ chunk %x +%0"
+
len
+
"x%n"
,
counts
[
i
],
DataUtils
.
getPageChunkId
(
cp
),
DataUtils
.
getPageOffset
(
cp
));
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/OffHeapStore.java
浏览文件 @
10fa11b8
...
...
@@ -34,7 +34,8 @@ public class OffHeapStore extends FileStore {
public
ByteBuffer
readFully
(
long
pos
,
int
len
)
{
Entry
<
Long
,
ByteBuffer
>
memEntry
=
memory
.
floorEntry
(
pos
);
if
(
memEntry
==
null
)
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_READING_FAILED
,
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_READING_FAILED
,
"Could not read from position {0}"
,
pos
);
}
readCount
++;
...
...
@@ -53,7 +54,8 @@ public class OffHeapStore extends FileStore {
if
(
buff
==
null
)
{
// nothing was written (just allocated)
}
else
if
(
buff
.
remaining
()
!=
length
)
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_READING_FAILED
,
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_READING_FAILED
,
"Partial remove is not supported at position {0}"
,
pos
);
}
}
...
...
@@ -117,8 +119,10 @@ public class OffHeapStore extends FileStore {
}
ByteBuffer
buff
=
memory
.
get
(
pos
);
if
(
buff
.
capacity
()
>
size
)
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_READING_FAILED
,
"Could not truncate to {0}; partial truncate is not supported"
,
pos
);
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_READING_FAILED
,
"Could not truncate to {0}; "
+
"partial truncate is not supported"
,
pos
);
}
it
.
remove
();
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/Page.java
浏览文件 @
10fa11b8
...
...
@@ -138,10 +138,10 @@ public class Page {
* @param memory the memory used in bytes
* @return the page
*/
public
static
Page
create
(
MVMap
<?,
?>
map
,
long
version
,
int
keyCount
,
Object
[]
keys
,
Object
[]
values
,
int
childCount
,
long
[]
children
,
Page
[]
childrenPages
,
long
[]
counts
,
long
totalCount
,
int
sharedFlags
,
int
memory
)
{
public
static
Page
create
(
MVMap
<?,
?>
map
,
long
version
,
int
keyCount
,
Object
[]
keys
,
Object
[]
values
,
int
childCount
,
long
[]
children
,
Page
[]
childrenPages
,
long
[]
counts
,
long
totalCount
,
int
sharedFlags
,
int
memory
)
{
Page
p
=
new
Page
(
map
,
version
);
// the position is 0
p
.
keyCount
=
keyCount
;
...
...
@@ -479,7 +479,8 @@ public class Page {
if
(
c
!=
childrenPages
[
index
]
||
c
.
getPos
()
!=
children
[
index
])
{
if
((
sharedFlags
&
SHARED_CHILDREN
)
!=
0
)
{
children
=
Arrays
.
copyOf
(
children
,
children
.
length
);
childrenPages
=
Arrays
.
copyOf
(
childrenPages
,
childrenPages
.
length
);
childrenPages
=
Arrays
.
copyOf
(
childrenPages
,
childrenPages
.
length
);
sharedFlags
&=
~
SHARED_CHILDREN
;
}
children
[
index
]
=
c
.
getPos
();
...
...
@@ -590,8 +591,10 @@ public class Page {
public
void
insertLeaf
(
int
index
,
Object
key
,
Object
value
)
{
if
(((
sharedFlags
&
SHARED_KEYS
)
==
0
)
&&
keys
.
length
>
keyCount
+
1
)
{
if
(
index
<
keyCount
)
{
System
.
arraycopy
(
keys
,
index
,
keys
,
index
+
1
,
keyCount
-
index
);
System
.
arraycopy
(
values
,
index
,
values
,
index
+
1
,
keyCount
-
index
);
System
.
arraycopy
(
keys
,
index
,
keys
,
index
+
1
,
keyCount
-
index
);
System
.
arraycopy
(
values
,
index
,
values
,
index
+
1
,
keyCount
-
index
);
}
}
else
{
int
len
=
keyCount
+
6
;
...
...
@@ -633,7 +636,8 @@ public class Page {
children
=
newChildren
;
Page
[]
newChildrenPages
=
new
Page
[
childCount
+
1
];
DataUtils
.
copyWithGap
(
childrenPages
,
newChildrenPages
,
childCount
,
index
);
DataUtils
.
copyWithGap
(
childrenPages
,
newChildrenPages
,
childCount
,
index
);
newChildrenPages
[
index
]
=
childPage
;
childrenPages
=
newChildrenPages
;
...
...
@@ -659,9 +663,11 @@ public class Page {
int
keyIndex
=
index
>=
keyCount
?
index
-
1
:
index
;
Object
old
=
keys
[
keyIndex
];
addMemory
(-
map
.
getKeyType
().
getMemory
(
old
));
if
((
sharedFlags
&
SHARED_KEYS
)
==
0
&&
keys
.
length
>
keyCount
-
4
)
{
if
((
sharedFlags
&
SHARED_KEYS
)
==
0
&&
keys
.
length
>
keyCount
-
4
)
{
if
(
keyIndex
<
keyCount
-
1
)
{
System
.
arraycopy
(
keys
,
keyIndex
+
1
,
keys
,
keyIndex
,
keyCount
-
keyIndex
-
1
);
System
.
arraycopy
(
keys
,
keyIndex
+
1
,
keys
,
keyIndex
,
keyCount
-
keyIndex
-
1
);
}
keys
[
keyCount
-
1
]
=
null
;
}
else
{
...
...
@@ -674,9 +680,11 @@ public class Page {
if
(
values
!=
null
)
{
old
=
values
[
index
];
addMemory
(-
map
.
getValueType
().
getMemory
(
old
));
if
((
sharedFlags
&
SHARED_VALUES
)
==
0
&&
values
.
length
>
keyCount
-
4
)
{
if
((
sharedFlags
&
SHARED_VALUES
)
==
0
&&
values
.
length
>
keyCount
-
4
)
{
if
(
index
<
keyCount
-
1
)
{
System
.
arraycopy
(
values
,
index
+
1
,
values
,
index
,
keyCount
-
index
-
1
);
System
.
arraycopy
(
values
,
index
+
1
,
values
,
index
,
keyCount
-
index
-
1
);
}
values
[
keyCount
-
1
]
=
null
;
}
else
{
...
...
@@ -776,7 +784,8 @@ public class Page {
buff
.
get
(
comp
);
int
l
=
compLen
+
lenAdd
;
buff
=
ByteBuffer
.
allocate
(
l
);
compressor
.
expand
(
comp
,
0
,
compLen
,
buff
.
array
(),
buff
.
arrayOffset
(),
l
);
compressor
.
expand
(
comp
,
0
,
compLen
,
buff
.
array
(),
buff
.
arrayOffset
(),
l
);
}
map
.
getKeyType
().
read
(
buff
,
keys
,
len
,
true
);
if
(!
node
)
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/StreamStore.java
浏览文件 @
10fa11b8
...
...
@@ -164,7 +164,8 @@ public class StreamStore {
return
eof
;
}
private
static
byte
[]
read
(
InputStream
in
,
byte
[]
target
)
throws
IOException
{
private
static
byte
[]
read
(
InputStream
in
,
byte
[]
target
)
throws
IOException
{
int
copied
=
0
;
int
remaining
=
target
.
length
;
while
(
remaining
>
0
)
{
...
...
@@ -470,7 +471,8 @@ public class StreamStore {
}
default
:
throw
DataUtils
.
newIllegalArgumentException
(
"Unsupported id {0}"
,
Arrays
.
toString
(
idBuffer
.
array
()));
"Unsupported id {0}"
,
Arrays
.
toString
(
idBuffer
.
array
()));
}
}
return
null
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/cache/CacheLongKeyLIRS.java
浏览文件 @
10fa11b8
...
...
@@ -94,7 +94,8 @@ public class CacheLongKeyLIRS<V> {
this
.
stackMoveDistance
=
stackMoveDistance
;
segments
=
new
Segment
[
segmentCount
];
clear
();
this
.
segmentShift
=
Integer
.
numberOfTrailingZeros
(
segments
[
0
].
entries
.
length
);
this
.
segmentShift
=
Integer
.
numberOfTrailingZeros
(
segments
[
0
].
entries
.
length
);
}
/**
...
...
@@ -929,11 +930,13 @@ public class CacheLongKeyLIRS<V> {
ArrayList
<
Long
>
keys
=
new
ArrayList
<
Long
>();
if
(
cold
)
{
Entry
<
V
>
start
=
nonResident
?
queue2
:
queue
;
for
(
Entry
<
V
>
e
=
start
.
queueNext
;
e
!=
start
;
e
=
e
.
queueNext
)
{
for
(
Entry
<
V
>
e
=
start
.
queueNext
;
e
!=
start
;
e
=
e
.
queueNext
)
{
keys
.
add
(
e
.
key
);
}
}
else
{
for
(
Entry
<
V
>
e
=
stack
.
stackNext
;
e
!=
stack
;
e
=
e
.
stackNext
)
{
for
(
Entry
<
V
>
e
=
stack
.
stackNext
;
e
!=
stack
;
e
=
e
.
stackNext
)
{
keys
.
add
(
e
.
key
);
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/db/MVSpatialIndex.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
mvstore
.
db
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/db/MVTable.java
浏览文件 @
10fa11b8
...
...
@@ -177,7 +177,9 @@ public class MVTable extends TableBase {
if
(
checkDeadlock
)
{
ArrayList
<
Session
>
sessions
=
checkDeadlock
(
session
,
null
,
null
);
if
(
sessions
!=
null
)
{
throw
DbException
.
get
(
ErrorCode
.
DEADLOCK_1
,
getDeadlockDetails
(
sessions
));
throw
DbException
.
get
(
ErrorCode
.
DEADLOCK_1
,
getDeadlockDetails
(
sessions
));
}
}
else
{
// check for deadlocks from now on
...
...
@@ -188,7 +190,8 @@ public class MVTable extends TableBase {
// try at least one more time
max
=
now
+
session
.
getLockTimeout
();
}
else
if
(
now
>=
max
)
{
traceLock
(
session
,
exclusive
,
"timeout after "
+
session
.
getLockTimeout
());
traceLock
(
session
,
exclusive
,
"timeout after "
+
session
.
getLockTimeout
());
throw
DbException
.
get
(
ErrorCode
.
LOCK_TIMEOUT_1
,
getName
());
}
try
{
...
...
@@ -299,7 +302,8 @@ public class MVTable extends TableBase {
private
void
traceLock
(
Session
session
,
boolean
exclusive
,
String
s
)
{
if
(
traceLock
.
isDebugEnabled
())
{
traceLock
.
debug
(
"{0} {1} {2} {3}"
,
session
.
getId
(),
exclusive
?
"exclusive write lock"
:
"shared read lock"
,
s
,
getName
());
exclusive
?
"exclusive write lock"
:
"shared read lock"
,
s
,
getName
());
}
}
...
...
@@ -612,10 +616,13 @@ public class MVTable extends TableBase {
if
(
de
.
getErrorCode
()
==
ErrorCode
.
DUPLICATE_KEY_1
)
{
for
(
int
j
=
0
;
j
<
indexes
.
size
();
j
++)
{
Index
index
=
indexes
.
get
(
j
);
if
(
index
.
getIndexType
().
isUnique
()
&&
index
instanceof
MultiVersionIndex
)
{
if
(
index
.
getIndexType
().
isUnique
()
&&
index
instanceof
MultiVersionIndex
)
{
MultiVersionIndex
mv
=
(
MultiVersionIndex
)
index
;
if
(
mv
.
isUncommittedFromOtherSession
(
session
,
row
))
{
throw
DbException
.
get
(
ErrorCode
.
CONCURRENT_UPDATE_1
,
index
.
getName
());
throw
DbException
.
get
(
ErrorCode
.
CONCURRENT_UPDATE_1
,
index
.
getName
());
}
}
}
...
...
@@ -697,7 +704,8 @@ public class MVTable extends TableBase {
}
database
.
getMvStore
().
removeTable
(
this
);
super
.
removeChildrenAndResources
(
session
);
// go backwards because database.removeIndex will call table.removeIndex
// go backwards because database.removeIndex will
// call table.removeIndex
while
(
indexes
.
size
()
>
1
)
{
Index
index
=
indexes
.
get
(
1
);
if
(
index
.
getName
()
!=
null
)
{
...
...
@@ -708,7 +716,8 @@ public class MVTable extends TableBase {
for
(
SchemaObject
obj
:
database
.
getAllSchemaObjects
(
DbObject
.
INDEX
))
{
Index
index
=
(
Index
)
obj
;
if
(
index
.
getTable
()
==
this
)
{
DbException
.
throwInternalError
(
"index not dropped: "
+
index
.
getName
());
DbException
.
throwInternalError
(
"index not dropped: "
+
index
.
getName
());
}
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/db/MVTableEngine.java
浏览文件 @
10fa11b8
...
...
@@ -73,7 +73,8 @@ public class MVTableEngine implements TableEngine {
if
(
key
!=
null
)
{
char
[]
password
=
new
char
[
key
.
length
/
2
];
for
(
int
i
=
0
;
i
<
password
.
length
;
i
++)
{
password
[
i
]
=
(
char
)
(((
key
[
i
+
i
]
&
255
)
<<
16
)
|
((
key
[
i
+
i
+
1
])
&
255
));
password
[
i
]
=
(
char
)
(((
key
[
i
+
i
]
&
255
)
<<
16
)
|
((
key
[
i
+
i
+
1
])
&
255
));
}
builder
.
encryptionKey
(
password
);
}
...
...
@@ -96,12 +97,18 @@ public class MVTableEngine implements TableEngine {
int
errorCode
=
DataUtils
.
getErrorCode
(
e
.
getMessage
());
if
(
errorCode
==
DataUtils
.
ERROR_FILE_CORRUPT
)
{
if
(
key
!=
null
)
{
throw
DbException
.
get
(
ErrorCode
.
FILE_ENCRYPTION_ERROR_1
,
e
,
fileName
);
throw
DbException
.
get
(
ErrorCode
.
FILE_ENCRYPTION_ERROR_1
,
e
,
fileName
);
}
}
else
if
(
errorCode
==
DataUtils
.
ERROR_FILE_LOCKED
)
{
throw
DbException
.
get
(
ErrorCode
.
DATABASE_ALREADY_OPEN_1
,
e
,
fileName
);
throw
DbException
.
get
(
ErrorCode
.
DATABASE_ALREADY_OPEN_1
,
e
,
fileName
);
}
throw
DbException
.
get
(
ErrorCode
.
FILE_CORRUPTED_1
,
e
,
fileName
);
throw
DbException
.
get
(
ErrorCode
.
FILE_CORRUPTED_1
,
e
,
fileName
);
}
}
db
.
setMvStore
(
store
);
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/db/TransactionStore.java
浏览文件 @
10fa11b8
...
...
@@ -59,7 +59,8 @@ public class TransactionStore {
/**
* The map of maps.
*/
private
HashMap
<
Integer
,
MVMap
<
Object
,
VersionedValue
>>
maps
=
New
.
hashMap
();
private
HashMap
<
Integer
,
MVMap
<
Object
,
VersionedValue
>>
maps
=
New
.
hashMap
();
private
final
DataType
dataType
;
...
...
@@ -192,7 +193,8 @@ public class TransactionStore {
status
=
(
Integer
)
data
[
0
];
name
=
(
String
)
data
[
1
];
}
Transaction
t
=
new
Transaction
(
this
,
transactionId
,
status
,
name
,
logId
);
Transaction
t
=
new
Transaction
(
this
,
transactionId
,
status
,
name
,
logId
);
list
.
add
(
t
);
key
=
undoLog
.
ceilingKey
(
getOperationId
(
transactionId
+
1
,
0
));
}
...
...
@@ -227,7 +229,8 @@ public class TransactionStore {
* @param t the transaction
*/
synchronized
void
storeTransaction
(
Transaction
t
)
{
if
(
t
.
getStatus
()
==
Transaction
.
STATUS_PREPARED
||
t
.
getName
()
!=
null
)
{
if
(
t
.
getStatus
()
==
Transaction
.
STATUS_PREPARED
||
t
.
getName
()
!=
null
)
{
Object
[]
v
=
{
t
.
getStatus
(),
t
.
getName
()
};
preparedTransactions
.
put
(
t
.
getId
(),
v
);
}
...
...
@@ -251,7 +254,8 @@ public class TransactionStore {
if
(
undoLog
.
containsKey
(
undoKey
))
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_TRANSACTION_STILL_OPEN
,
"An old transaction with the same id is still open: {0}"
,
"An old transaction with the same id "
+
"is still open: {0}"
,
t
.
getId
());
}
}
...
...
@@ -303,7 +307,8 @@ public class TransactionStore {
if
(
op
==
null
)
{
// partially committed: load next
undoKey
=
undoLog
.
ceilingKey
(
undoKey
);
if
(
undoKey
==
null
||
getTransactionId
(
undoKey
)
!=
t
.
getId
())
{
if
(
undoKey
==
null
||
getTransactionId
(
undoKey
)
!=
t
.
getId
())
{
break
;
}
logId
=
getLogId
(
undoKey
)
-
1
;
...
...
@@ -460,7 +465,8 @@ public class TransactionStore {
if
(
op
==
null
)
{
// partially rolled back: load previous
undoKey
=
undoLog
.
floorKey
(
undoKey
);
if
(
undoKey
==
null
||
getTransactionId
(
undoKey
)
!=
t
.
getId
())
{
if
(
undoKey
==
null
||
getTransactionId
(
undoKey
)
!=
t
.
getId
())
{
break
;
}
logId
=
getLogId
(
undoKey
)
+
1
;
...
...
@@ -513,7 +519,8 @@ public class TransactionStore {
if
(
op
==
null
)
{
// partially rolled back: load previous
undoKey
=
undoLog
.
floorKey
(
undoKey
);
if
(
undoKey
==
null
||
getTransactionId
(
undoKey
)
!=
t
.
getId
())
{
if
(
undoKey
==
null
||
getTransactionId
(
undoKey
)
!=
t
.
getId
())
{
break
;
}
logId
=
getLogId
(
undoKey
);
...
...
@@ -528,7 +535,8 @@ public class TransactionStore {
current
.
mapName
=
m
.
getName
();
current
.
key
=
op
[
1
];
VersionedValue
oldValue
=
(
VersionedValue
)
op
[
2
];
current
.
value
=
oldValue
==
null
?
null
:
oldValue
.
value
;
current
.
value
=
oldValue
==
null
?
null
:
oldValue
.
value
;
return
;
}
}
...
...
@@ -712,7 +720,8 @@ public class TransactionStore {
public
<
K
,
V
>
TransactionMap
<
K
,
V
>
openMap
(
String
name
,
DataType
keyType
,
DataType
valueType
)
{
checkNotClosed
();
MVMap
<
K
,
VersionedValue
>
map
=
store
.
openMap
(
name
,
keyType
,
valueType
);
MVMap
<
K
,
VersionedValue
>
map
=
store
.
openMap
(
name
,
keyType
,
valueType
);
int
mapId
=
map
.
getId
();
return
new
TransactionMap
<
K
,
V
>(
this
,
map
,
mapId
);
}
...
...
@@ -725,7 +734,8 @@ public class TransactionStore {
* @param map the base map
* @return the transactional map
*/
public
<
K
,
V
>
TransactionMap
<
K
,
V
>
openMap
(
MVMap
<
K
,
VersionedValue
>
map
)
{
public
<
K
,
V
>
TransactionMap
<
K
,
V
>
openMap
(
MVMap
<
K
,
VersionedValue
>
map
)
{
checkNotClosed
();
int
mapId
=
map
.
getId
();
return
new
TransactionMap
<
K
,
V
>(
this
,
map
,
mapId
);
...
...
@@ -1521,14 +1531,16 @@ public class TransactionStore {
}
@Override
public
void
read
(
ByteBuffer
buff
,
Object
[]
obj
,
int
len
,
boolean
key
)
{
public
void
read
(
ByteBuffer
buff
,
Object
[]
obj
,
int
len
,
boolean
key
)
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
obj
[
i
]
=
read
(
buff
);
}
}
@Override
public
void
write
(
WriteBuffer
buff
,
Object
[]
obj
,
int
len
,
boolean
key
)
{
public
void
write
(
WriteBuffer
buff
,
Object
[]
obj
,
int
len
,
boolean
key
)
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
write
(
buff
,
obj
[
i
]);
}
...
...
@@ -1604,14 +1616,16 @@ public class TransactionStore {
}
@Override
public
void
read
(
ByteBuffer
buff
,
Object
[]
obj
,
int
len
,
boolean
key
)
{
public
void
read
(
ByteBuffer
buff
,
Object
[]
obj
,
int
len
,
boolean
key
)
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
obj
[
i
]
=
read
(
buff
);
}
}
@Override
public
void
write
(
WriteBuffer
buff
,
Object
[]
obj
,
int
len
,
boolean
key
)
{
public
void
write
(
WriteBuffer
buff
,
Object
[]
obj
,
int
len
,
boolean
key
)
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
write
(
buff
,
obj
[
i
]);
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/db/ValueDataType.java
浏览文件 @
10fa11b8
...
...
@@ -385,8 +385,10 @@ public class ValueDataType implements DataType {
while
(
rs
.
next
())
{
buff
.
put
((
byte
)
1
);
for
(
int
i
=
0
;
i
<
columnCount
;
i
++)
{
int
t
=
org
.
h2
.
value
.
DataType
.
getValueTypeFromResultSet
(
meta
,
i
+
1
);
Value
val
=
org
.
h2
.
value
.
DataType
.
readValue
(
null
,
rs
,
i
+
1
,
t
);
int
t
=
org
.
h2
.
value
.
DataType
.
getValueTypeFromResultSet
(
meta
,
i
+
1
);
Value
val
=
org
.
h2
.
value
.
DataType
.
readValue
(
null
,
rs
,
i
+
1
,
t
);
writeValue
(
buff
,
val
);
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/rtree/MVRTreeMap.java
浏览文件 @
10fa11b8
...
...
@@ -63,7 +63,8 @@ public class MVRTreeMap<V> extends MVMap<SpatialKey, V> {
public
RTreeCursor
findIntersectingKeys
(
SpatialKey
x
)
{
return
new
RTreeCursor
(
root
,
x
)
{
@Override
protected
boolean
check
(
boolean
leaf
,
SpatialKey
key
,
SpatialKey
test
)
{
protected
boolean
check
(
boolean
leaf
,
SpatialKey
key
,
SpatialKey
test
)
{
return
keyType
.
isOverlap
(
key
,
test
);
}
};
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/rtree/SpatialDataType.java
浏览文件 @
10fa11b8
...
...
@@ -278,7 +278,8 @@ public class SpatialDataType implements DataType {
float
min
=
boundsInner
.
min
(
bestDim
);
float
max
=
boundsInner
.
max
(
bestDim
);
int
firstIndex
=
-
1
,
lastIndex
=
-
1
;
for
(
int
i
=
0
;
i
<
list
.
size
()
&&
(
firstIndex
<
0
||
lastIndex
<
0
);
i
++)
{
for
(
int
i
=
0
;
i
<
list
.
size
()
&&
(
firstIndex
<
0
||
lastIndex
<
0
);
i
++)
{
SpatialKey
o
=
(
SpatialKey
)
list
.
get
(
i
);
if
(
firstIndex
<
0
&&
o
.
max
(
bestDim
)
==
min
)
{
firstIndex
=
i
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/type/ObjectDataType.java
浏览文件 @
10fa11b8
...
...
@@ -432,7 +432,8 @@ public class ObjectDataType implements DataType {
}
@Override
public
void
write
(
WriteBuffer
buff
,
Object
[]
obj
,
int
len
,
boolean
key
)
{
public
void
write
(
WriteBuffer
buff
,
Object
[]
obj
,
int
len
,
boolean
key
)
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
write
(
buff
,
obj
[
i
]);
}
...
...
@@ -444,7 +445,8 @@ public class ObjectDataType implements DataType {
}
@Override
public
void
read
(
ByteBuffer
buff
,
Object
[]
obj
,
int
len
,
boolean
key
)
{
public
void
read
(
ByteBuffer
buff
,
Object
[]
obj
,
int
len
,
boolean
key
)
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
obj
[
i
]
=
read
(
buff
);
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/util/DateTimeUtils.java
浏览文件 @
10fa11b8
...
...
@@ -357,7 +357,8 @@ public class DateTimeUtils {
if
(
hour
<
0
||
hour
>
23
)
{
throw
e
;
}
return
getTimeTry
(
true
,
tz
,
year
,
month
,
day
,
hour
,
minute
,
second
,
millis
);
return
getTimeTry
(
true
,
tz
,
year
,
month
,
day
,
hour
,
minute
,
second
,
millis
);
}
else
if
(
message
.
indexOf
(
"DAY_OF_MONTH"
)
>
0
)
{
int
maxDay
;
if
(
month
==
2
)
{
...
...
@@ -372,9 +373,11 @@ public class DateTimeUtils {
// using the timezone Brasilia and others,
// for example for 2042-10-12 00:00:00.
hour
+=
6
;
return
getTimeTry
(
true
,
tz
,
year
,
month
,
day
,
hour
,
minute
,
second
,
millis
);
return
getTimeTry
(
true
,
tz
,
year
,
month
,
day
,
hour
,
minute
,
second
,
millis
);
}
else
{
return
getTimeTry
(
true
,
tz
,
year
,
month
,
day
,
hour
,
minute
,
second
,
millis
);
return
getTimeTry
(
true
,
tz
,
year
,
month
,
day
,
hour
,
minute
,
second
,
millis
);
}
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/util/DbDriverActivator.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
util
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/util/OsgiDataSourceFactory.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
util
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/samples/CreateScriptFile.java
浏览文件 @
10fa11b8
...
...
@@ -117,7 +117,8 @@ public class CreateScriptFile {
}
else
{
out
=
FileUtils
.
newOutputStream
(
fileName
,
false
);
out
=
new
BufferedOutputStream
(
out
,
Constants
.
IO_BUFFER_SIZE
);
out
=
CompressTool
.
wrapOutputStream
(
out
,
compressionAlgorithm
,
"script.sql"
);
out
=
CompressTool
.
wrapOutputStream
(
out
,
compressionAlgorithm
,
"script.sql"
);
}
return
new
PrintWriter
(
new
OutputStreamWriter
(
out
,
charset
));
}
catch
(
Exception
e
)
{
...
...
@@ -145,7 +146,8 @@ public class CreateScriptFile {
byte
[]
key
=
SHA256
.
getKeyPasswordHash
(
"script"
,
password
.
toCharArray
());
FileStore
store
=
FileStore
.
open
(
null
,
fileName
,
"rw"
,
cipher
,
key
);
store
.
init
();
in
=
new
FileStoreInputStream
(
store
,
null
,
compressionAlgorithm
!=
null
,
false
);
in
=
new
FileStoreInputStream
(
store
,
null
,
compressionAlgorithm
!=
null
,
false
);
in
=
new
BufferedInputStream
(
in
,
Constants
.
IO_BUFFER_SIZE_COMPRESS
);
}
else
{
in
=
FileUtils
.
newInputStream
(
fileName
);
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/samples/CsvSample.java
浏览文件 @
10fa11b8
...
...
@@ -56,7 +56,9 @@ public class CsvSample {
ResultSetMetaData
meta
=
rs
.
getMetaData
();
while
(
rs
.
next
())
{
for
(
int
i
=
0
;
i
<
meta
.
getColumnCount
();
i
++)
{
System
.
out
.
println
(
meta
.
getColumnLabel
(
i
+
1
)
+
": "
+
rs
.
getString
(
i
+
1
));
System
.
out
.
println
(
meta
.
getColumnLabel
(
i
+
1
)
+
": "
+
rs
.
getString
(
i
+
1
));
}
System
.
out
.
println
();
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/samples/SQLInjection.java
浏览文件 @
10fa11b8
...
...
@@ -397,7 +397,8 @@ public class SQLInjection {
stat
.
execute
(
"CREATE CONSTANT HASH_ITERATIONS VALUE 100"
);
stat
.
execute
(
"CREATE CONSTANT HASH_ALGORITHM VALUE 'SHA256'"
);
stat
.
execute
(
"UPDATE USERS2 SET "
+
"HASH=HASH(HASH_ALGORITHM, STRINGTOUTF8('abc' || SALT), HASH_ITERATIONS) "
+
"HASH=HASH(HASH_ALGORITHM, "
+
"STRINGTOUTF8('abc' || SALT), HASH_ITERATIONS) "
+
"WHERE ID=1"
);
String
user
=
input
(
"user?"
);
String
password
=
input
(
"password?"
);
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/bench/TestScalability.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
bench
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/db/TestMultiConn.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
db
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/db/TestOpenClose.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
db
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/db/TestQueryCache.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
db
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/db/TestSpatial.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
db
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/store/TestBenchmark.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
store
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/store/TestCacheConcurrentLIRS.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
store
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/store/TestCacheLIRS.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
store
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/store/TestCacheLongKeyLIRS.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
store
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/store/TestConcurrent.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
store
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/store/TestDataUtils.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
store
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/store/TestFreeSpace.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
store
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/store/TestKillProcessWhileWriting.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
store
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/store/TestMVStoreBenchmark.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
store
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/store/TestRandomMapOps.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
store
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/unit/TestPageStore.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
test
.
unit
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/tools/org/h2/android/H2QueryBuilder.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
android
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/tools/org/h2/android/H2Statement.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: H2 Group
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
android
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/tools/org/h2/build/code/CheckTextFiles.java
浏览文件 @
10fa11b8
...
...
@@ -190,8 +190,8 @@ public class CheckTextFiles {
lastWasWhitespace
=
false
;
line
++;
int
lineLength
=
i
-
startLinePos
;
if
(
lineLength
>
MAX_SOURCE_LINE_SIZE
)
{
if
(
file
.
getName
().
endsWith
(
".java"
)
)
{
if
(
file
.
getName
().
endsWith
(
".java"
)
)
{
if
(
lineLength
>
MAX_SOURCE_LINE_SIZE
)
{
fail
(
file
,
"line too long: "
+
lineLength
,
line
);
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/tools/org/h2/dev/cache/CacheLIRS.java
浏览文件 @
10fa11b8
...
...
@@ -944,7 +944,8 @@ public class CacheLIRS<K, V> extends AbstractMap<K, V> {
*/
void
setMaxMemory
(
long
maxMemory
)
{
if
(
maxMemory
<=
0
)
{
throw
new
IllegalArgumentException
(
"Max memory must be larger than 0"
);
throw
new
IllegalArgumentException
(
"Max memory must be larger than 0"
);
}
this
.
maxMemory
=
maxMemory
;
}
...
...
@@ -957,7 +958,8 @@ public class CacheLIRS<K, V> extends AbstractMap<K, V> {
*/
void
setAverageMemory
(
int
averageMemory
)
{
if
(
averageMemory
<=
0
)
{
throw
new
IllegalArgumentException
(
"Average memory must be larger than 0"
);
throw
new
IllegalArgumentException
(
"Average memory must be larger than 0"
);
}
this
.
averageMemory
=
averageMemory
;
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/tools/org/h2/jaqu/DbUpgrader.java
浏览文件 @
10fa11b8
/*
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License, Version
* 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html). Initial Developer: James Moger
* Copyright 2004-2013 H2 Group. Multiple-Licensed under the H2 License,
* Version 1.0, and under the Eclipse Public License, Version 1.0
* (http://h2database.com/html/license.html).
* Initial Developer: James Moger
*/
package
org
.
h2
.
jaqu
;
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论