Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
23571cda
提交
23571cda
authored
7 年前
作者:
Evgenij Ryazanov
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into datetime
上级
a34de81e
c628a91c
显示空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
127 行增加
和
72 行删除
+127
-72
changelog.html
h2/src/docsrc/html/changelog.html
+29
-29
performance.html
h2/src/docsrc/html/performance.html
+1
-1
Aggregate.java
h2/src/main/org/h2/expression/Aggregate.java
+1
-1
AggregateDataMedian.java
h2/src/main/org/h2/expression/AggregateDataMedian.java
+21
-11
ConditionInParameter.java
h2/src/main/org/h2/expression/ConditionInParameter.java
+1
-1
TestBase.java
h2/src/test/org/h2/test/TestBase.java
+23
-3
AbstractBaseForCommonTableExpressions.java
...org/h2/test/db/AbstractBaseForCommonTableExpressions.java
+14
-1
TestOptimizations.java
h2/src/test/org/h2/test/db/TestOptimizations.java
+20
-13
TestScript.java
h2/src/test/org/h2/test/scripts/TestScript.java
+9
-9
TestDateTimeUtils.java
h2/src/test/org/h2/test/unit/TestDateTimeUtils.java
+5
-3
dictionary.txt
h2/src/tools/org/h2/build/doc/dictionary.txt
+3
-0
没有找到文件。
h2/src/docsrc/html/changelog.html
浏览文件 @
23571cda
This diff is collapsed.
Click to expand it.
h2/src/docsrc/html/performance.html
浏览文件 @
23571cda
...
@@ -490,7 +490,7 @@ Instead, use a prepared statement with arrays as in the following example:
...
@@ -490,7 +490,7 @@ Instead, use a prepared statement with arrays as in the following example:
</p>
</p>
<pre>
<pre>
PreparedStatement prep = conn.prepareStatement(
PreparedStatement prep = conn.prepareStatement(
"SELECT *
TEST.
ID = ANY(?)");
"SELECT *
FROM TEST WHERE
ID = ANY(?)");
prep.setObject(1, new Object[] { "1", "2" });
prep.setObject(1, new Object[] { "1", "2" });
ResultSet rs = prep.executeQuery();
ResultSet rs = prep.executeQuery();
</pre>
</pre>
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/Aggregate.java
浏览文件 @
23571cda
...
@@ -311,7 +311,7 @@ public class Aggregate extends Expression {
...
@@ -311,7 +311,7 @@ public class Aggregate extends Expression {
return
v
;
return
v
;
}
}
case
MEDIAN:
{
case
MEDIAN:
{
return
AggregateDataMedian
.
getFromIndex
(
session
,
on
,
dataType
);
return
AggregateDataMedian
.
get
Result
FromIndex
(
session
,
on
,
dataType
);
}
}
default
:
default
:
DbException
.
throwInternalError
(
"type="
+
type
);
DbException
.
throwInternalError
(
"type="
+
type
);
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/AggregateDataMedian.java
浏览文件 @
23571cda
...
@@ -49,6 +49,12 @@ class AggregateDataMedian extends AggregateData {
...
@@ -49,6 +49,12 @@ class AggregateDataMedian extends AggregateData {
||
(
sortType
&
SortOrder
.
DESCENDING
)
!=
0
&&
(
sortType
&
SortOrder
.
NULLS_FIRST
)
==
0
;
||
(
sortType
&
SortOrder
.
DESCENDING
)
!=
0
&&
(
sortType
&
SortOrder
.
NULLS_FIRST
)
==
0
;
}
}
/**
* Get the index (if any) for the column specified in the median aggregate.
*
* @param on the expression (usually a column expression)
* @return the index, or null
*/
static
Index
getMedianColumnIndex
(
Expression
on
)
{
static
Index
getMedianColumnIndex
(
Expression
on
)
{
if
(
on
instanceof
ExpressionColumn
)
{
if
(
on
instanceof
ExpressionColumn
)
{
ExpressionColumn
col
=
(
ExpressionColumn
)
on
;
ExpressionColumn
col
=
(
ExpressionColumn
)
on
;
...
@@ -68,8 +74,8 @@ class AggregateDataMedian extends AggregateData {
...
@@ -68,8 +74,8 @@ class AggregateDataMedian extends AggregateData {
if
(!
index
.
isFirstColumn
(
column
))
{
if
(!
index
.
isFirstColumn
(
column
))
{
continue
;
continue
;
}
}
if
(
result
==
null
||
result
.
getColumns
().
length
>
index
.
getColumns
().
length
// Prefer index without nulls last for nullable columns
// Prefer index without nulls last for nullable columns
if
(
result
==
null
||
result
.
getColumns
().
length
>
index
.
getColumns
().
length
||
nullable
&&
isNullsLast
(
result
)
&&
!
isNullsLast
(
index
))
{
||
nullable
&&
isNullsLast
(
result
)
&&
!
isNullsLast
(
index
))
{
result
=
index
;
result
=
index
;
}
}
...
@@ -81,7 +87,15 @@ class AggregateDataMedian extends AggregateData {
...
@@ -81,7 +87,15 @@ class AggregateDataMedian extends AggregateData {
return
null
;
return
null
;
}
}
static
Value
getFromIndex
(
Session
session
,
Expression
on
,
int
dataType
)
{
/**
* Get the result from the index.
*
* @param session the session
* @param on the expression
* @param dataType the data type
* @return the result
*/
static
Value
getResultFromIndex
(
Session
session
,
Expression
on
,
int
dataType
)
{
Index
index
=
getMedianColumnIndex
(
on
);
Index
index
=
getMedianColumnIndex
(
on
);
long
count
=
index
.
getRowCount
(
session
);
long
count
=
index
.
getRowCount
(
session
);
if
(
count
==
0
)
{
if
(
count
==
0
)
{
...
@@ -94,10 +108,8 @@ class AggregateDataMedian extends AggregateData {
...
@@ -94,10 +108,8 @@ class AggregateDataMedian extends AggregateData {
if
(
expr
.
getColumn
().
isNullable
())
{
if
(
expr
.
getColumn
().
isNullable
())
{
boolean
hasNulls
=
false
;
boolean
hasNulls
=
false
;
SearchRow
row
;
SearchRow
row
;
/*
// Try to skip nulls from the start first with the same cursor that
* Try to skip nulls from the start first with the same cursor that will be used
// will be used to read values.
* to read values.
*/
while
(
count
>
0
)
{
while
(
count
>
0
)
{
row
=
cursor
.
getSearchRow
();
row
=
cursor
.
getSearchRow
();
if
(
row
==
null
)
{
if
(
row
==
null
)
{
...
@@ -113,10 +125,8 @@ class AggregateDataMedian extends AggregateData {
...
@@ -113,10 +125,8 @@ class AggregateDataMedian extends AggregateData {
if
(
count
==
0
)
{
if
(
count
==
0
)
{
return
ValueNull
.
INSTANCE
;
return
ValueNull
.
INSTANCE
;
}
}
/*
// If no nulls found and if index orders nulls last create a second
* If no nulls found and if index orders nulls last create a second cursor to
// cursor to count nulls at the end.
* count nulls at the end.
*/
if
(!
hasNulls
&&
isNullsLast
(
index
))
{
if
(!
hasNulls
&&
isNullsLast
(
index
))
{
TableFilter
tableFilter
=
expr
.
getTableFilter
();
TableFilter
tableFilter
=
expr
.
getTableFilter
();
SearchRow
check
=
tableFilter
.
getTable
().
getTemplateSimpleRow
(
true
);
SearchRow
check
=
tableFilter
.
getTable
().
getTemplateSimpleRow
(
true
);
...
@@ -196,7 +206,7 @@ class AggregateDataMedian extends AggregateData {
...
@@ -196,7 +206,7 @@ class AggregateDataMedian extends AggregateData {
return
getMedian
(
a
[
idx
-
1
],
v1
,
dataType
,
mode
);
return
getMedian
(
a
[
idx
-
1
],
v1
,
dataType
,
mode
);
}
}
static
Value
getMedian
(
Value
v0
,
Value
v1
,
int
dataType
,
CompareMode
mode
)
{
private
static
Value
getMedian
(
Value
v0
,
Value
v1
,
int
dataType
,
CompareMode
mode
)
{
if
(
v0
.
compareTo
(
v1
,
mode
)
==
0
)
{
if
(
v0
.
compareTo
(
v1
,
mode
)
==
0
)
{
return
v0
.
convertTo
(
dataType
);
return
v0
.
convertTo
(
dataType
);
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/ConditionInParameter.java
浏览文件 @
23571cda
...
@@ -57,7 +57,7 @@ public class ConditionInParameter extends Condition {
...
@@ -57,7 +57,7 @@ public class ConditionInParameter extends Condition {
private
Expression
left
;
private
Expression
left
;
final
Parameter
parameter
;
private
final
Parameter
parameter
;
/**
/**
* Create a new {@code = ANY(?)} condition.
* Create a new {@code = ANY(?)} condition.
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/TestBase.java
浏览文件 @
23571cda
...
@@ -464,6 +464,17 @@ public abstract class TestBase {
...
@@ -464,6 +464,17 @@ public abstract class TestBase {
throw
new
AssertionError
(
string
);
throw
new
AssertionError
(
string
);
}
}
/**
* Log an error message.
*
* @param s the message
*/
public
static
void
logErrorMessage
(
String
s
)
{
System
.
out
.
flush
();
System
.
err
.
println
(
"ERROR: "
+
s
+
"------------------------------"
);
logThrowable
(
s
,
null
);
}
/**
/**
* Log an error message.
* Log an error message.
*
*
...
@@ -478,6 +489,10 @@ public abstract class TestBase {
...
@@ -478,6 +489,10 @@ public abstract class TestBase {
System
.
err
.
println
(
"ERROR: "
+
s
+
" "
+
e
.
toString
()
System
.
err
.
println
(
"ERROR: "
+
s
+
" "
+
e
.
toString
()
+
" ------------------------------"
);
+
" ------------------------------"
);
e
.
printStackTrace
();
e
.
printStackTrace
();
logThrowable
(
null
,
e
);
}
private
static
void
logThrowable
(
String
s
,
Throwable
e
)
{
// synchronize on this class, because file locks are only visible to
// synchronize on this class, because file locks are only visible to
// other JVMs
// other JVMs
synchronized
(
TestBase
.
class
)
{
synchronized
(
TestBase
.
class
)
{
...
@@ -494,9 +509,14 @@ public abstract class TestBase {
...
@@ -494,9 +509,14 @@ public abstract class TestBase {
}
}
// append
// append
FileWriter
fw
=
new
FileWriter
(
"error.txt"
,
true
);
FileWriter
fw
=
new
FileWriter
(
"error.txt"
,
true
);
if
(
s
!=
null
)
{
fw
.
write
(
s
);
}
if
(
e
!=
null
)
{
PrintWriter
pw
=
new
PrintWriter
(
fw
);
PrintWriter
pw
=
new
PrintWriter
(
fw
);
e
.
printStackTrace
(
pw
);
e
.
printStackTrace
(
pw
);
pw
.
close
();
pw
.
close
();
}
fw
.
close
();
fw
.
close
();
// unlock
// unlock
lock
.
release
();
lock
.
release
();
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/db/AbstractBaseForCommonTableExpressions.java
浏览文件 @
23571cda
...
@@ -17,7 +17,20 @@ import org.h2.test.TestBase;
...
@@ -17,7 +17,20 @@ import org.h2.test.TestBase;
*/
*/
public
abstract
class
AbstractBaseForCommonTableExpressions
extends
TestBase
{
public
abstract
class
AbstractBaseForCommonTableExpressions
extends
TestBase
{
protected
void
testRepeatedQueryWithSetup
(
int
maxRetries
,
String
[]
expectedRowData
,
String
[]
expectedColumnNames
,
/**
* Test a query.
*
* @param maxRetries the number of times the query is run
* @param expectedRowData the expected result data
* @param expectedColumnNames the expected columns of the result
* @param expectedNumberOfRows the expected number of rows
* @param setupSQL the SQL statement used for setup
* @param withQuery the query
* @param closeAndReopenDatabaseConnectionOnIteration whether the connection
* should be re-opened each time
* @param expectedColumnTypes the expected datatypes of the result
*/
void
testRepeatedQueryWithSetup
(
int
maxRetries
,
String
[]
expectedRowData
,
String
[]
expectedColumnNames
,
int
expectedNumberOfRows
,
String
setupSQL
,
String
withQuery
,
int
expectedNumberOfRows
,
String
setupSQL
,
String
withQuery
,
int
closeAndReopenDatabaseConnectionOnIteration
,
String
[]
expectedColumnTypes
)
throws
SQLException
{
int
closeAndReopenDatabaseConnectionOnIteration
,
String
[]
expectedColumnTypes
)
throws
SQLException
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/db/TestOptimizations.java
浏览文件 @
23571cda
...
@@ -68,7 +68,9 @@ public class TestOptimizations extends TestBase {
...
@@ -68,7 +68,9 @@ public class TestOptimizations extends TestBase {
testMultiColumnRangeQuery
();
testMultiColumnRangeQuery
();
testDistinctOptimization
();
testDistinctOptimization
();
testQueryCacheTimestamp
();
testQueryCacheTimestamp
();
if
(!
config
.
lazy
)
{
testQueryCacheSpeed
();
testQueryCacheSpeed
();
}
testQueryCache
(
true
);
testQueryCache
(
true
);
testQueryCache
(
false
);
testQueryCache
(
false
);
testIn
();
testIn
();
...
@@ -800,21 +802,26 @@ public class TestOptimizations extends TestBase {
...
@@ -800,21 +802,26 @@ public class TestOptimizations extends TestBase {
}
}
private
void
testQuerySpeed
(
Statement
stat
,
String
sql
)
throws
SQLException
{
private
void
testQuerySpeed
(
Statement
stat
,
String
sql
)
throws
SQLException
{
stat
.
execute
(
"set OPTIMIZE_REUSE_RESULTS 0"
);
long
totalTime
=
0
;
long
totalTimeOptimized
=
0
;
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
totalTime
+=
measureQuerySpeed
(
stat
,
sql
,
false
);
totalTimeOptimized
+=
measureQuerySpeed
(
stat
,
sql
,
true
);
}
System
.
out
.
println
(
TimeUnit
.
NANOSECONDS
.
toMillis
(
totalTime
)+
" "
+
TimeUnit
.
NANOSECONDS
.
toMillis
(
totalTimeOptimized
));
if
(
totalTimeOptimized
>
totalTime
)
{
fail
(
"not optimized: "
+
TimeUnit
.
NANOSECONDS
.
toMillis
(
totalTime
)
+
" optimized: "
+
TimeUnit
.
NANOSECONDS
.
toMillis
(
totalTimeOptimized
)
+
" sql:"
+
sql
);
}
}
private
long
measureQuerySpeed
(
Statement
stat
,
String
sql
,
boolean
optimized
)
throws
SQLException
{
stat
.
execute
(
"set OPTIMIZE_REUSE_RESULTS "
+
(
optimized
?
"1"
:
"0"
));
stat
.
execute
(
sql
);
stat
.
execute
(
sql
);
long
time
=
System
.
nanoTime
();
long
time
=
System
.
nanoTime
();
stat
.
execute
(
sql
);
stat
.
execute
(
sql
);
time
=
System
.
nanoTime
()
-
time
;
return
System
.
nanoTime
()
-
time
;
stat
.
execute
(
"set OPTIMIZE_REUSE_RESULTS 1"
);
stat
.
execute
(
sql
);
long
time2
=
System
.
nanoTime
();
stat
.
execute
(
sql
);
time2
=
System
.
nanoTime
()
-
time2
;
if
(
time2
>
time
*
2
)
{
fail
(
"not optimized: "
+
TimeUnit
.
NANOSECONDS
.
toMillis
(
time
)
+
" optimized: "
+
TimeUnit
.
NANOSECONDS
.
toMillis
(
time2
)
+
" sql:"
+
sql
);
}
}
}
private
void
testQueryCache
(
boolean
optimize
)
throws
SQLException
{
private
void
testQueryCache
(
boolean
optimize
)
throws
SQLException
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/scripts/TestScript.java
浏览文件 @
23571cda
...
@@ -41,6 +41,7 @@ public class TestScript extends TestBase {
...
@@ -41,6 +41,7 @@ public class TestScript extends TestBase {
private
boolean
reconnectOften
;
private
boolean
reconnectOften
;
private
Connection
conn
;
private
Connection
conn
;
private
Statement
stat
;
private
Statement
stat
;
private
String
fileName
;
private
LineNumberReader
in
;
private
LineNumberReader
in
;
private
int
outputLineNo
;
private
int
outputLineNo
;
private
PrintStream
out
;
private
PrintStream
out
;
...
@@ -155,6 +156,7 @@ public class TestScript extends TestBase {
...
@@ -155,6 +156,7 @@ public class TestScript extends TestBase {
// we processed.
// we processed.
conn
=
null
;
conn
=
null
;
stat
=
null
;
stat
=
null
;
fileName
=
null
;
in
=
null
;
in
=
null
;
outputLineNo
=
0
;
outputLineNo
=
0
;
out
=
null
;
out
=
null
;
...
@@ -172,7 +174,7 @@ public class TestScript extends TestBase {
...
@@ -172,7 +174,7 @@ public class TestScript extends TestBase {
conn
.
close
();
conn
.
close
();
out
.
close
();
out
.
close
();
if
(
errors
.
length
()
>
0
)
{
if
(
errors
.
length
()
>
0
)
{
throw
new
Exception
(
"errors
:\n"
+
errors
.
toString
()
);
throw
new
Exception
(
"errors
in "
+
scriptFileName
+
" found"
);
}
}
// new File(outFile).delete();
// new File(outFile).delete();
}
}
...
@@ -200,6 +202,7 @@ public class TestScript extends TestBase {
...
@@ -200,6 +202,7 @@ public class TestScript extends TestBase {
if
(
is
==
null
)
{
if
(
is
==
null
)
{
throw
new
IOException
(
"could not find "
+
inFile
);
throw
new
IOException
(
"could not find "
+
inFile
);
}
}
fileName
=
inFile
;
in
=
new
LineNumberReader
(
new
InputStreamReader
(
is
,
"Cp1252"
));
in
=
new
LineNumberReader
(
new
InputStreamReader
(
is
,
"Cp1252"
));
StringBuilder
buff
=
new
StringBuilder
();
StringBuilder
buff
=
new
StringBuilder
();
while
(
true
)
{
while
(
true
)
{
...
@@ -435,17 +438,14 @@ public class TestScript extends TestBase {
...
@@ -435,17 +438,14 @@ public class TestScript extends TestBase {
if
(
reconnectOften
&&
sql
.
toUpperCase
().
startsWith
(
"EXPLAIN"
))
{
if
(
reconnectOften
&&
sql
.
toUpperCase
().
startsWith
(
"EXPLAIN"
))
{
return
;
return
;
}
}
errors
.
append
(
"line: "
);
errors
.
append
(
fileName
).
append
(
'\n'
);
errors
.
append
(
outputLineNo
);
errors
.
append
(
"line: "
).
append
(
outputLineNo
).
append
(
'\n'
);
errors
.
append
(
"\n"
+
"exp: "
);
errors
.
append
(
"exp: "
).
append
(
compare
).
append
(
'\n'
);
errors
.
append
(
compare
);
errors
.
append
(
"got: "
).
append
(
s
).
append
(
'\n'
);
errors
.
append
(
"\n"
+
"got: "
);
errors
.
append
(
s
);
errors
.
append
(
"\n"
);
if
(
e
!=
null
)
{
if
(
e
!=
null
)
{
TestBase
.
logError
(
"script"
,
e
);
TestBase
.
logError
(
"script"
,
e
);
}
}
TestBase
.
logError
(
errors
.
toString
(),
null
);
TestBase
.
logError
Message
(
errors
.
toString
()
);
if
(
failFast
)
{
if
(
failFast
)
{
conn
.
close
();
conn
.
close
();
System
.
exit
(
1
);
System
.
exit
(
1
);
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/unit/TestDateTimeUtils.java
浏览文件 @
23571cda
...
@@ -48,7 +48,7 @@ public class TestDateTimeUtils extends TestBase {
...
@@ -48,7 +48,7 @@ public class TestDateTimeUtils extends TestBase {
* {@link DateTimeUtils#getIsoDayOfWeek(long)}.
* {@link DateTimeUtils#getIsoDayOfWeek(long)}.
*/
*/
private
void
testDayOfWeek
()
{
private
void
testDayOfWeek
()
{
GregorianCalendar
gc
=
DateTimeUtils
.
createGregorianCalendar
();
GregorianCalendar
gc
=
DateTimeUtils
.
createGregorianCalendar
(
DateTimeUtils
.
UTC
);
for
(
int
i
=
-
1_000_000
;
i
<=
1_000_000
;
i
++)
{
for
(
int
i
=
-
1_000_000
;
i
<=
1_000_000
;
i
++)
{
gc
.
clear
();
gc
.
clear
();
gc
.
setTimeInMillis
(
i
*
86400000L
);
gc
.
setTimeInMillis
(
i
*
86400000L
);
...
@@ -66,7 +66,8 @@ public class TestDateTimeUtils extends TestBase {
...
@@ -66,7 +66,8 @@ public class TestDateTimeUtils extends TestBase {
int
isoDow
=
(
dow
+
5
)
%
7
+
1
;
int
isoDow
=
(
dow
+
5
)
%
7
+
1
;
assertEquals
(
isoDow
,
DateTimeUtils
.
getIsoDayOfWeek
(
dateValue
));
assertEquals
(
isoDow
,
DateTimeUtils
.
getIsoDayOfWeek
(
dateValue
));
assertEquals
(
gc
.
get
(
Calendar
.
WEEK_OF_YEAR
),
assertEquals
(
gc
.
get
(
Calendar
.
WEEK_OF_YEAR
),
DateTimeUtils
.
getWeekOfYear
(
dateValue
,
gc
.
getFirstDayOfWeek
()
-
1
,
gc
.
getMinimalDaysInFirstWeek
()));
DateTimeUtils
.
getWeekOfYear
(
dateValue
,
gc
.
getFirstDayOfWeek
()
-
1
,
gc
.
getMinimalDaysInFirstWeek
()));
}
}
}
}
...
@@ -86,7 +87,8 @@ public class TestDateTimeUtils extends TestBase {
...
@@ -86,7 +87,8 @@ public class TestDateTimeUtils extends TestBase {
gc
.
clear
();
gc
.
clear
();
gc
.
setTimeInMillis
(
i
*
86400000L
);
gc
.
setTimeInMillis
(
i
*
86400000L
);
assertEquals
(
gc
.
get
(
Calendar
.
DAY_OF_YEAR
),
DateTimeUtils
.
getDayOfYear
(
dateValue
));
assertEquals
(
gc
.
get
(
Calendar
.
DAY_OF_YEAR
),
DateTimeUtils
.
getDayOfYear
(
dateValue
));
assertEquals
(
gc
.
get
(
Calendar
.
WEEK_OF_YEAR
),
DateTimeUtils
.
getWeekOfYear
(
dateValue
,
firstDay
-
1
,
minimalDays
));
assertEquals
(
gc
.
get
(
Calendar
.
WEEK_OF_YEAR
),
DateTimeUtils
.
getWeekOfYear
(
dateValue
,
firstDay
-
1
,
minimalDays
));
assertEquals
(
gc
.
getWeekYear
(),
DateTimeUtils
.
getWeekYear
(
dateValue
,
firstDay
-
1
,
minimalDays
));
assertEquals
(
gc
.
getWeekYear
(),
DateTimeUtils
.
getWeekYear
(
dateValue
,
firstDay
-
1
,
minimalDays
));
}
}
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/tools/org/h2/build/doc/dictionary.txt
浏览文件 @
23571cda
...
@@ -763,3 +763,6 @@ assorted reimplemented hangups confirmation predefined
...
@@ -763,3 +763,6 @@ assorted reimplemented hangups confirmation predefined
mdy destfile hclf forbids spellchecking selfdestruct expects accident jacocoagent cli historic mitigate
mdy destfile hclf forbids spellchecking selfdestruct expects accident jacocoagent cli historic mitigate
jacoco xdata invokes sourcefiles classfiles duplication crypto stacktraces prt directions handled overly asm hardcoded
jacoco xdata invokes sourcefiles classfiles duplication crypto stacktraces prt directions handled overly asm hardcoded
interpolated thead
interpolated thead
die weekdiff osx subprocess dow proleptic
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论