Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
7224c100
提交
7224c100
authored
9 年前
作者:
Noel Grandin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Experimental support for datatype TIMESTAMP WITH TIMEZONE
上级
86792ec9
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
606 行增加
和
5 行删除
+606
-5
changelog.html
h2/src/docsrc/html/changelog.html
+2
-0
TimestampWithTimeZone.java
h2/src/main/org/h2/api/TimestampWithTimeZone.java
+57
-0
Parser.java
h2/src/main/org/h2/command/Parser.java
+5
-0
JdbcConnection.java
h2/src/main/org/h2/jdbc/JdbcConnection.java
+0
-1
ValueDataType.java
h2/src/main/org/h2/mvstore/db/ValueDataType.java
+20
-0
Data.java
h2/src/main/org/h2/store/Data.java
+22
-0
Column.java
h2/src/main/org/h2/table/Column.java
+3
-0
DataType.java
h2/src/main/org/h2/value/DataType.java
+17
-0
Transfer.java
h2/src/main/org/h2/value/Transfer.java
+10
-0
Value.java
h2/src/main/org/h2/value/Value.java
+59
-1
ValueTimestampTimeZone.java
h2/src/main/org/h2/value/ValueTimestampTimeZone.java
+356
-0
TestAll.java
h2/src/test/org/h2/test/TestAll.java
+6
-2
TestTimeStampWithTimeZone.java
h2/src/test/org/h2/test/unit/TestTimeStampWithTimeZone.java
+46
-0
TestValueMemory.java
h2/src/test/org/h2/test/unit/TestValueMemory.java
+3
-1
没有找到文件。
h2/src/docsrc/html/changelog.html
浏览文件 @
7224c100
...
...
@@ -21,6 +21,8 @@ Change Log
<h2>
Next Version (unreleased)
</h2>
<ul>
<li>
Experimental support for datatype TIMESTAMP WITH TIMEZONE
</li>
<li>
Add support for ALTER TABLE ... RENAME CONSTRAINT .. TO ...
</li>
<li>
Add support for PostgreSQL ALTER TABLE ... RENAME COLUMN .. TO ...
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/api/TimestampWithTimeZone.java
0 → 100644
浏览文件 @
7224c100
/*
* Copyright 2004-2014 H2 Group. Multiple-Licensed under the MPL 2.0,
* and the EPL 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
api
;
import
java.sql.Timestamp
;
/**
* Extends java.sql.Timestamp to add our time zone information.
*
*/
public
class
TimestampWithTimeZone
extends
Timestamp
{
/**
* Time zone offset from UTC in minutes, range of -12hours to +12hours
*/
private
final
short
timeZoneOffsetMins
;
public
TimestampWithTimeZone
(
long
time_ms
,
int
nanos
,
short
timeZoneOffsetMins
)
{
super
(
time_ms
);
setNanos
(
nanos
);
this
.
timeZoneOffsetMins
=
timeZoneOffsetMins
;
}
/**
* The timezone offset in minutes.
*
* @return the offset
*/
public
short
getTimeZoneOffsetMins
()
{
return
timeZoneOffsetMins
;
}
@Override
public
int
hashCode
()
{
final
int
prime
=
31
;
int
result
=
super
.
hashCode
();
result
=
prime
*
result
+
timeZoneOffsetMins
;
return
result
;
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
this
==
obj
)
return
true
;
if
(!
super
.
equals
(
obj
))
return
false
;
if
(
getClass
()
!=
obj
.
getClass
())
return
false
;
TimestampWithTimeZone
other
=
(
TimestampWithTimeZone
)
obj
;
if
(
timeZoneOffsetMins
!=
other
.
timeZoneOffsetMins
)
return
false
;
return
true
;
}
}
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/command/Parser.java
浏览文件 @
7224c100
...
...
@@ -4033,6 +4033,11 @@ public class Parser {
if
(
readIf
(
"VARYING"
))
{
original
+=
" VARYING"
;
}
}
else
if
(
readIf
(
"TIMESTAMP"
))
{
if
(
readIf
(
"WITH"
))
{
read
(
"TIMEZONE"
);
original
+=
" WITH TIMEZONE"
;
}
}
else
{
regular
=
true
;
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/jdbc/JdbcConnection.java
浏览文件 @
7224c100
...
...
@@ -28,7 +28,6 @@ import java.sql.Struct;
import
java.util.ArrayList
;
import
java.util.Map
;
import
java.util.Properties
;
import
org.h2.api.ErrorCode
;
import
org.h2.command.CommandInterface
;
import
org.h2.engine.ConnectionInfo
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/mvstore/db/ValueDataType.java
浏览文件 @
7224c100
...
...
@@ -45,6 +45,7 @@ import org.h2.value.ValueStringFixed;
import
org.h2.value.ValueStringIgnoreCase
;
import
org.h2.value.ValueTime
;
import
org.h2.value.ValueTimestamp
;
import
org.h2.value.ValueTimestampTimeZone
;
import
org.h2.value.ValueTimestampUtc
;
import
org.h2.value.ValueUuid
;
...
...
@@ -283,6 +284,19 @@ public class ValueDataType implements DataType {
buff
.
put
((
byte
)
type
).
putVarLong
(
dateTimeValue
);
break
;
}
case
Value
.
TIMESTAMP_TZ
:
{
ValueTimestampTimeZone
ts
=
(
ValueTimestampTimeZone
)
v
;
long
dateValue
=
ts
.
getDateValue
();
long
nanos
=
ts
.
getTimeNanos
();
long
millis
=
nanos
/
1000000
;
nanos
-=
millis
*
1000000
;
buff
.
put
((
byte
)
type
).
putVarLong
(
dateValue
).
putVarLong
(
millis
).
putVarLong
(
nanos
).
putVarInt
(
ts
.
getTimeZoneOffsetMins
());
break
;
}
case
Value
.
JAVA_OBJECT
:
{
byte
[]
b
=
v
.
getBytesNoCopy
();
buff
.
put
((
byte
)
type
).
...
...
@@ -492,6 +506,12 @@ public class ValueDataType implements DataType {
long
dateTimeValue
=
readVarLong
(
buff
);
return
ValueTimestampUtc
.
fromNanos
(
dateTimeValue
);
}
case
Value
.
TIMESTAMP_TZ
:
{
long
dateValue
=
readVarLong
(
buff
);
long
nanos
=
readVarLong
(
buff
)
*
1000000
+
readVarLong
(
buff
);
short
tz
=
(
short
)
readVarInt
(
buff
);
return
ValueTimestampTimeZone
.
fromDateValueAndNanos
(
dateValue
,
nanos
,
tz
);
}
case
Value
.
BYTES
:
{
int
len
=
readVarInt
(
buff
);
byte
[]
b
=
DataUtils
.
newBytes
(
len
);
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/store/Data.java
浏览文件 @
7224c100
...
...
@@ -49,6 +49,7 @@ import org.h2.value.ValueStringFixed;
import
org.h2.value.ValueStringIgnoreCase
;
import
org.h2.value.ValueTime
;
import
org.h2.value.ValueTimestamp
;
import
org.h2.value.ValueTimestampTimeZone
;
import
org.h2.value.ValueTimestampUtc
;
import
org.h2.value.ValueUuid
;
...
...
@@ -544,6 +545,13 @@ public class Data {
writeVarLong
(
ts
.
getUtcDateTimeNanos
());
break
;
}
case
Value
.
TIMESTAMP_TZ
:
{
ValueTimestampTimeZone
ts
=
(
ValueTimestampTimeZone
)
v
;
writeByte
((
byte
)
type
);
writeVarLong
(
ts
.
getDateValue
());
writeVarLong
(
ts
.
getTimeNanos
());
writeVarInt
(
ts
.
getTimeZoneOffsetMins
());
}
case
Value
.
GEOMETRY
:
case
Value
.
JAVA_OBJECT
:
{
writeByte
((
byte
)
type
);
...
...
@@ -781,6 +789,12 @@ public class Data {
case
Value
.
TIMESTAMP_UTC
:
{
return
ValueTimestampUtc
.
fromNanos
(
readVarLong
());
}
case
Value
.
TIMESTAMP_TZ
:
{
long
dateValue
=
readVarLong
();
long
nanos
=
readVarLong
();
short
tz
=
(
short
)
readVarInt
();
return
ValueTimestampTimeZone
.
fromDateValueAndNanos
(
dateValue
,
nanos
,
tz
);
}
case
Value
.
BYTES
:
{
int
len
=
readVarInt
();
byte
[]
b
=
DataUtils
.
newBytes
(
len
);
...
...
@@ -1033,6 +1047,14 @@ public class Data {
ValueTimestampUtc
ts
=
(
ValueTimestampUtc
)
v
;
return
1
+
getVarLongLen
(
ts
.
getUtcDateTimeNanos
());
}
case
Value
.
TIMESTAMP_TZ
:
{
ValueTimestampTimeZone
ts
=
(
ValueTimestampTimeZone
)
v
;
long
dateValue
=
ts
.
getDateValue
();
long
nanos
=
ts
.
getTimeNanos
();
short
tz
=
ts
.
getTimeZoneOffsetMins
();
return
1
+
getVarLongLen
(
dateValue
)
+
getVarLongLen
(
nanos
)
+
getVarIntLen
(
tz
);
}
case
Value
.
GEOMETRY
:
case
Value
.
JAVA_OBJECT
:
{
byte
[]
b
=
v
.
getBytesNoCopy
();
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/table/Column.java
浏览文件 @
7224c100
...
...
@@ -31,6 +31,7 @@ import org.h2.value.ValueNull;
import
org.h2.value.ValueString
;
import
org.h2.value.ValueTime
;
import
org.h2.value.ValueTimestamp
;
import
org.h2.value.ValueTimestampTimeZone
;
import
org.h2.value.ValueTimestampUtc
;
import
org.h2.value.ValueUuid
;
...
...
@@ -296,6 +297,8 @@ public class Column {
value
=
ValueTimestamp
.
fromMillis
(
session
.
getTransactionStart
());
}
else
if
(
dt
.
type
==
Value
.
TIMESTAMP_UTC
)
{
value
=
ValueTimestampUtc
.
fromMillis
(
session
.
getTransactionStart
());
}
else
if
(
dt
.
type
==
Value
.
TIMESTAMP_TZ
)
{
value
=
ValueTimestampTimeZone
.
fromMillis
(
session
.
getTransactionStart
(),
(
short
)
0
);
}
else
if
(
dt
.
type
==
Value
.
TIME
)
{
value
=
ValueTime
.
fromNanos
(
0
);
}
else
if
(
dt
.
type
==
Value
.
DATE
)
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/value/DataType.java
浏览文件 @
7224c100
...
...
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import
java.util.HashMap
;
import
java.util.UUID
;
import
org.h2.api.ErrorCode
;
import
org.h2.api.TimestampWithTimeZone
;
import
org.h2.engine.Constants
;
import
org.h2.engine.SessionInterface
;
import
org.h2.engine.SysProperties
;
...
...
@@ -321,6 +322,13 @@ public class DataType {
// 24 for ValueTimestampUtc, 32 for java.sql.Timestamp
56
);
add
(
Value
.
TIMESTAMP_TZ
,
Types
.
OTHER
,
"TimestampTimeZone"
,
createDate
(
ValueTimestampTimeZone
.
PRECISION
,
"TIMESTAMP_TZ"
,
ValueTimestampTimeZone
.
DEFAULT_SCALE
,
ValueTimestampTimeZone
.
DISPLAY_SIZE
),
new
String
[]{
"TIMESTAMP WITH TIMEZONE"
},
// 26 for ValueTimestampUtc, 32 for java.sql.Timestamp
58
);
add
(
Value
.
BYTES
,
Types
.
VARBINARY
,
"Bytes"
,
createString
(
false
),
new
String
[]{
"VARBINARY"
},
...
...
@@ -551,6 +559,12 @@ public class DataType {
ValueTimestampUtc
.
fromMillisNanos
(
value
.
getTime
(),
value
.
getNanos
());
break
;
}
case
Value
.
TIMESTAMP_TZ
:
{
TimestampWithTimeZone
value
=
(
TimestampWithTimeZone
)
rs
.
getTimestamp
(
columnIndex
);
v
=
value
==
null
?
(
Value
)
ValueNull
.
INSTANCE
:
ValueTimestampTimeZone
.
get
(
value
);
break
;
}
case
Value
.
DECIMAL
:
{
BigDecimal
value
=
rs
.
getBigDecimal
(
columnIndex
);
v
=
value
==
null
?
(
Value
)
ValueNull
.
INSTANCE
:
...
...
@@ -726,6 +740,9 @@ public class DataType {
case
Value
.
TIMESTAMP_UTC
:
// "java.sql.Timestamp";
return
Timestamp
.
class
.
getName
();
case
Value
.
TIMESTAMP_TZ
:
// "org.h2.api.TimestampWithTimeZone";
return
TimestampWithTimeZone
.
class
.
getName
();
case
Value
.
BYTES
:
case
Value
.
UUID
:
// "[B", not "byte[]";
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/value/Transfer.java
浏览文件 @
7224c100
...
...
@@ -392,6 +392,13 @@ public class Transfer {
writeLong
(
ts
.
getUtcDateTimeNanos
());
break
;
}
case
Value
.
TIMESTAMP_TZ
:
{
ValueTimestampTimeZone
ts
=
(
ValueTimestampTimeZone
)
v
;
writeLong
(
ts
.
getDateValue
());
writeLong
(
ts
.
getTimeNanos
());
writeInt
(
ts
.
getTimeZoneOffsetMins
());
break
;
}
case
Value
.
DECIMAL
:
writeString
(
v
.
getString
());
break
;
...
...
@@ -581,6 +588,9 @@ public class Transfer {
case
Value
.
TIMESTAMP_UTC
:
{
return
ValueTimestampUtc
.
fromNanos
(
readLong
());
}
case
Value
.
TIMESTAMP_TZ
:
{
return
ValueTimestampTimeZone
.
fromDateValueAndNanos
(
readLong
(),
readLong
(),
(
short
)
readInt
());
}
case
Value
.
DECIMAL
:
return
ValueDecimal
.
get
(
new
BigDecimal
(
readString
()));
case
Value
.
DOUBLE
:
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/value/Value.java
浏览文件 @
7224c100
...
...
@@ -162,11 +162,15 @@ public abstract class Value {
* The value type for TIMESTAMP UTC values.
*/
public
static
final
int
TIMESTAMP_UTC
=
23
;
/**
* The value type for TIMESTAMP WITH TIMEZONE values.
*/
public
static
final
int
TIMESTAMP_TZ
=
24
;
/**
* The number of value types.
*/
public
static
final
int
TYPE_COUNT
=
TIMESTAMP_
UTC
+
1
;
public
static
final
int
TYPE_COUNT
=
TIMESTAMP_
TZ
+
1
;
private
static
SoftReference
<
Value
[]>
softCache
=
new
SoftReference
<
Value
[]>(
null
);
...
...
@@ -304,6 +308,8 @@ public abstract class Value {
return
32
;
case
TIMESTAMP_UTC:
return
33
;
case
TIMESTAMP_TZ:
return
34
;
case
BYTES:
return
40
;
case
BLOB:
...
...
@@ -548,6 +554,7 @@ public abstract class Value {
case
DATE:
case
TIMESTAMP:
case
TIMESTAMP_UTC:
case
TIMESTAMP_TZ:
case
BYTES:
case
JAVA_OBJECT:
case
UUID:
...
...
@@ -575,6 +582,9 @@ public abstract class Value {
return
ValueByte
.
get
(
convertToByte
(
convertToLong
(
getFloat
())));
case
BYTES:
return
ValueByte
.
get
((
byte
)
Integer
.
parseInt
(
getString
(),
16
));
case
TIMESTAMP_TZ:
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
getString
());
}
break
;
}
...
...
@@ -597,6 +607,9 @@ public abstract class Value {
return
ValueShort
.
get
(
convertToShort
(
convertToLong
(
getFloat
())));
case
BYTES:
return
ValueShort
.
get
((
short
)
Integer
.
parseInt
(
getString
(),
16
));
case
TIMESTAMP_TZ:
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
getString
());
}
break
;
}
...
...
@@ -619,6 +632,9 @@ public abstract class Value {
return
ValueInt
.
get
(
convertToInt
(
convertToLong
(
getFloat
())));
case
BYTES:
return
ValueInt
.
get
((
int
)
Long
.
parseLong
(
getString
(),
16
));
case
TIMESTAMP_TZ:
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
getString
());
}
break
;
}
...
...
@@ -648,6 +664,9 @@ public abstract class Value {
}
case
TIMESTAMP_UTC:
return
ValueLong
.
get
(
getLong
());
case
TIMESTAMP_TZ:
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
getString
());
}
break
;
}
...
...
@@ -682,6 +701,9 @@ public abstract class Value {
// better rounding behavior than BigDecimal.valueOf(f)
return
ValueDecimal
.
get
(
new
BigDecimal
(
Float
.
toString
(
f
)));
}
case
TIMESTAMP_TZ:
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
getString
());
}
break
;
}
...
...
@@ -702,6 +724,9 @@ public abstract class Value {
return
ValueDouble
.
get
(
getBigDecimal
().
doubleValue
());
case
FLOAT:
return
ValueDouble
.
get
(
getFloat
());
case
TIMESTAMP_TZ:
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
getString
());
}
break
;
}
...
...
@@ -722,6 +747,9 @@ public abstract class Value {
return
ValueFloat
.
get
(
getBigDecimal
().
floatValue
());
case
DOUBLE:
return
ValueFloat
.
get
((
float
)
getDouble
());
case
TIMESTAMP_TZ:
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
getString
());
}
break
;
}
...
...
@@ -738,6 +766,9 @@ public abstract class Value {
case
TIMESTAMP_UTC:
return
ValueDate
.
fromMillis
(
((
ValueTimestampUtc
)
this
).
getUtcDateTimeMillis
());
case
TIMESTAMP_TZ:
return
ValueDate
.
fromDateValue
(
((
ValueTimestampTimeZone
)
this
).
getDateValue
());
}
break
;
}
...
...
@@ -753,6 +784,9 @@ public abstract class Value {
case
TIMESTAMP_UTC:
return
ValueTime
.
fromMillis
(
((
ValueTimestampUtc
)
this
).
getUtcDateTimeMillis
());
case
TIMESTAMP_TZ:
return
ValueTime
.
fromNanos
(
((
ValueTimestampTimeZone
)
this
).
getTimeNanos
());
}
break
;
}
...
...
@@ -768,6 +802,10 @@ public abstract class Value {
return
ValueTimestamp
.
fromMillisNanos
(
((
ValueTimestampUtc
)
this
).
getUtcDateTimeMillis
(),
((
ValueTimestampUtc
)
this
).
getNanosSinceLastMillis
());
case
TIMESTAMP_TZ:
return
ValueTimestamp
.
fromDateValueAndNanos
(
((
ValueTimestampTimeZone
)
this
).
getDateValue
(),
((
ValueTimestampTimeZone
)
this
).
getTimeNanos
());
}
break
;
}
...
...
@@ -793,6 +831,9 @@ public abstract class Value {
return
ValueTimestampUtc
.
fromMillisNanos
(
((
ValueTimestamp
)
this
).
getTimestamp
().
getTime
(),
((
ValueTimestamp
)
this
).
getTimestamp
().
getNanos
());
case
TIMESTAMP_TZ:
// TODO
throw
DbException
.
getUnsupportedException
(
"unimplemented"
);
}
break
;
}
...
...
@@ -835,6 +876,9 @@ public abstract class Value {
(
byte
)
x
});
}
case
TIMESTAMP_TZ:
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
getString
());
}
break
;
}
...
...
@@ -844,6 +888,9 @@ public abstract class Value {
case
BLOB:
return
ValueJavaObject
.
getNoCopy
(
null
,
getBytesNoCopy
(),
getDataHandler
());
case
TIMESTAMP_TZ:
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
getString
());
}
break
;
}
...
...
@@ -852,6 +899,9 @@ public abstract class Value {
case
BYTES:
return
ValueLobDb
.
createSmallLob
(
Value
.
BLOB
,
getBytesNoCopy
());
case
TIMESTAMP_TZ:
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
getString
());
}
break
;
}
...
...
@@ -859,6 +909,9 @@ public abstract class Value {
switch
(
getType
())
{
case
BYTES:
return
ValueUuid
.
get
(
getBytesNoCopy
());
case
TIMESTAMP_TZ:
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
getString
());
}
}
case
GEOMETRY:
...
...
@@ -870,6 +923,9 @@ public abstract class Value {
if
(
DataType
.
isGeometry
(
object
))
{
return
ValueGeometry
.
getFromGeometry
(
object
);
}
case
TIMESTAMP_TZ:
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
getString
());
}
}
// conversion by parsing the string value
...
...
@@ -911,6 +967,8 @@ public abstract class Value {
return
ValueTimestamp
.
parse
(
s
.
trim
());
case
TIMESTAMP_UTC:
return
ValueTimestampUtc
.
parse
(
s
.
trim
());
case
TIMESTAMP_TZ:
return
ValueTimestampTimeZone
.
parse
(
s
.
trim
());
case
BYTES:
return
ValueBytes
.
getNoCopy
(
StringUtils
.
convertHexToBytes
(
s
.
trim
()));
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/value/ValueTimestampTimeZone.java
0 → 100644
浏览文件 @
7224c100
差异被折叠。
点击展开。
h2/src/test/org/h2/test/TestAll.java
浏览文件 @
7224c100
...
...
@@ -24,6 +24,7 @@ import org.h2.test.db.TestCases;
import
org.h2.test.db.TestCheckpoint
;
import
org.h2.test.db.TestCluster
;
import
org.h2.test.db.TestCompatibility
;
import
org.h2.test.db.TestCompatibilityOracle
;
import
org.h2.test.db.TestCsv
;
import
org.h2.test.db.TestDateStorage
;
import
org.h2.test.db.TestDeadlock
;
...
...
@@ -46,7 +47,6 @@ import org.h2.test.db.TestMultiThread;
import
org.h2.test.db.TestMultiThreadedKernel
;
import
org.h2.test.db.TestOpenClose
;
import
org.h2.test.db.TestOptimizations
;
import
org.h2.test.db.TestCompatibilityOracle
;
import
org.h2.test.db.TestOptimizerHints
;
import
org.h2.test.db.TestOutOfMemory
;
import
org.h2.test.db.TestPowerOff
;
...
...
@@ -178,8 +178,8 @@ import org.h2.test.unit.TestFileSystem;
import
org.h2.test.unit.TestFtp
;
import
org.h2.test.unit.TestIntArray
;
import
org.h2.test.unit.TestIntIntHashMap
;
import
org.h2.test.unit.TestJmx
;
import
org.h2.test.unit.TestIntPerfectHash
;
import
org.h2.test.unit.TestJmx
;
import
org.h2.test.unit.TestLocale
;
import
org.h2.test.unit.TestMathUtils
;
import
org.h2.test.unit.TestModifyOnWrite
;
...
...
@@ -203,6 +203,8 @@ import org.h2.test.unit.TestSort;
import
org.h2.test.unit.TestStreams
;
import
org.h2.test.unit.TestStringCache
;
import
org.h2.test.unit.TestStringUtils
;
import
org.h2.test.unit.TestTimeStampUtc
;
import
org.h2.test.unit.TestTimeStampWithTimeZone
;
import
org.h2.test.unit.TestTools
;
import
org.h2.test.unit.TestTraceSystem
;
import
org.h2.test.unit.TestUtils
;
...
...
@@ -851,6 +853,8 @@ kill -9 `jps -l | grep "org.h2.test." | cut -d " " -f 1`
addTest
(
new
TestSort
());
addTest
(
new
TestStreams
());
addTest
(
new
TestStringUtils
());
addTest
(
new
TestTimeStampUtc
());
addTest
(
new
TestTimeStampWithTimeZone
());
addTest
(
new
TestTraceSystem
());
addTest
(
new
TestUpgrade
());
addTest
(
new
TestUsingIndex
());
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/unit/TestTimeStampWithTimeZone.java
0 → 100644
浏览文件 @
7224c100
/*
* Copyright 2004-2014 H2 Group. Multiple-Licensed under the MPL 2.0, and the
* EPL 1.0 (http://h2database.com/html/license.html). Initial Developer: H2
* Group
*/
package
org
.
h2
.
test
.
unit
;
import
java.sql.Connection
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.sql.Statement
;
import
org.h2.api.TimestampWithTimeZone
;
import
org.h2.test.TestBase
;
/**
*/
public
class
TestTimeStampWithTimeZone
extends
TestBase
{
/**
* Run just this test.
*
* @param a ignored
*/
public
static
void
main
(
String
...
a
)
throws
Exception
{
TestBase
.
createCaller
().
init
().
test
();
}
@Override
public
void
test
()
throws
SQLException
{
deleteDb
(
"timestamp_tz"
);
test1
();
deleteDb
(
"timestamp_tz"
);
}
private
void
test1
()
throws
SQLException
{
Connection
conn
=
getConnection
(
"timestamp_tz"
);
Statement
stat
=
conn
.
createStatement
();
stat
.
execute
(
"create table test(id identity, t1 timestamp with timezone)"
);
stat
.
execute
(
"insert into test(t1) values('1970-01-01 12:00:00.00+00:15')"
);
ResultSet
rs
=
stat
.
executeQuery
(
"select t1 from test"
);
rs
.
next
();
assertTrue
(
new
TimestampWithTimeZone
(
36000000
,
00
,
(
short
)
15
).
equals
(
rs
.
getTimestamp
(
1
)));
conn
.
close
();
}
}
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/unit/TestValueMemory.java
浏览文件 @
7224c100
...
...
@@ -12,7 +12,6 @@ import java.sql.SQLException;
import
java.util.ArrayList
;
import
java.util.IdentityHashMap
;
import
java.util.Random
;
import
org.h2.api.JavaObjectSerializer
;
import
org.h2.engine.Constants
;
import
org.h2.store.DataHandler
;
...
...
@@ -47,6 +46,7 @@ import org.h2.value.ValueStringFixed;
import
org.h2.value.ValueStringIgnoreCase
;
import
org.h2.value.ValueTime
;
import
org.h2.value.ValueTimestamp
;
import
org.h2.value.ValueTimestampTimeZone
;
import
org.h2.value.ValueTimestampUtc
;
import
org.h2.value.ValueUuid
;
...
...
@@ -166,6 +166,8 @@ public class TestValueMemory extends TestBase implements DataHandler {
return
ValueTimestamp
.
fromMillis
(
random
.
nextLong
());
case
Value
.
TIMESTAMP_UTC
:
return
ValueTimestampUtc
.
fromMillis
(
random
.
nextLong
());
case
Value
.
TIMESTAMP_TZ
:
return
ValueTimestampTimeZone
.
fromMillis
(
random
.
nextLong
(),
(
short
)
0
);
case
Value
.
BYTES
:
return
ValueBytes
.
get
(
randomBytes
(
random
.
nextInt
(
1000
)));
case
Value
.
STRING
:
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论