Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
f80b78b6
Unverified
提交
f80b78b6
authored
8月 04, 2018
作者:
Evgenij Ryazanov
提交者:
GitHub
8月 04, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1355 from katzyn/meta
Assorted changes in MetaTable
上级
100dc812
5ae07088
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
202 行增加
和
199 行删除
+202
-199
MetaTable.java
h2/src/main/org/h2/table/MetaTable.java
+183
-188
CurrentTimestamp.java
h2/src/main/org/h2/util/CurrentTimestamp.java
+1
-11
DateTimeUtils.java
h2/src/main/org/h2/util/DateTimeUtils.java
+18
-0
没有找到文件。
h2/src/main/org/h2/table/MetaTable.java
浏览文件 @
f80b78b6
...
...
@@ -11,7 +11,6 @@ import java.io.InputStreamReader;
import
java.io.Reader
;
import
java.sql.DatabaseMetaData
;
import
java.sql.ResultSet
;
import
java.sql.Timestamp
;
import
java.sql.Types
;
import
java.text.Collator
;
import
java.util.ArrayList
;
...
...
@@ -58,6 +57,7 @@ import org.h2.schema.TriggerObject;
import
org.h2.store.InDoubtTransaction
;
import
org.h2.store.PageStore
;
import
org.h2.tools.Csv
;
import
org.h2.util.DateTimeUtils
;
import
org.h2.util.MathUtils
;
import
org.h2.util.StatementBuilder
;
import
org.h2.util.StringUtils
;
...
...
@@ -65,7 +65,12 @@ import org.h2.util.Utils;
import
org.h2.value.CompareMode
;
import
org.h2.value.DataType
;
import
org.h2.value.Value
;
import
org.h2.value.ValueBoolean
;
import
org.h2.value.ValueDouble
;
import
org.h2.value.ValueInt
;
import
org.h2.value.ValueLong
;
import
org.h2.value.ValueNull
;
import
org.h2.value.ValueShort
;
import
org.h2.value.ValueString
;
import
org.h2.value.ValueStringIgnoreCase
;
...
...
@@ -504,10 +509,10 @@ public class MetaTable extends Table {
cols
=
createColumns
(
"ID INT"
,
"USER_NAME"
,
"SESSION_START"
,
"SESSION_START
TIMESTAMP WITH TIME ZONE
"
,
"STATEMENT"
,
"STATEMENT_START"
,
"CONTAINS_UNCOMMITTED"
,
"STATEMENT_START
TIMESTAMP WITH TIME ZONE
"
,
"CONTAINS_UNCOMMITTED
BIT
"
,
"STATE"
,
"BLOCKER_ID INT"
);
...
...
@@ -801,15 +806,15 @@ public class MetaTable extends Table {
// REMARKS
replaceNullWithEmpty
(
table
.
getComment
()),
// LAST_MODIFICATION
Long
.
toString
(
table
.
getMaxDataModificationId
()),
ValueLong
.
get
(
table
.
getMaxDataModificationId
()),
// ID
Integer
.
toString
(
table
.
getId
()),
ValueInt
.
get
(
table
.
getId
()),
// TYPE_NAME
null
,
// TABLE_CLASS
table
.
getClass
().
getName
(),
// ROW_COUNT_ESTIMATE
Long
.
toString
(
table
.
getRowCountApproximation
())
ValueLong
.
get
(
table
.
getRowCountApproximation
())
);
}
break
;
...
...
@@ -837,7 +842,8 @@ public class MetaTable extends Table {
for
(
int
j
=
0
;
j
<
cols
.
length
;
j
++)
{
Column
c
=
cols
[
j
];
DataType
dataType
=
c
.
getDataType
();
String
precision
=
Integer
.
toString
(
c
.
getPrecisionAsInt
());
ValueInt
precision
=
ValueInt
.
get
(
c
.
getPrecisionAsInt
());
ValueInt
scale
=
ValueInt
.
get
(
c
.
getScale
());
Sequence
sequence
=
c
.
getSequence
();
add
(
rows
,
// TABLE_CATALOG
...
...
@@ -849,13 +855,13 @@ public class MetaTable extends Table {
// COLUMN_NAME
identifier
(
c
.
getName
()),
// ORDINAL_POSITION
Integer
.
toString
(
j
+
1
),
ValueInt
.
get
(
j
+
1
),
// COLUMN_DEFAULT
c
.
getDefaultSQL
(),
// IS_NULLABLE
c
.
isNullable
()
?
"YES"
:
"NO"
,
// DATA_TYPE
Integer
.
toString
(
dataType
.
sqlType
),
ValueInt
.
get
(
dataType
.
sqlType
),
// CHARACTER_MAXIMUM_LENGTH
precision
,
// CHARACTER_OCTET_LENGTH
...
...
@@ -863,11 +869,11 @@ public class MetaTable extends Table {
// NUMERIC_PRECISION
precision
,
// NUMERIC_PRECISION_RADIX
"10"
,
ValueInt
.
get
(
10
)
,
// NUMERIC_SCALE
Integer
.
toString
(
c
.
getScale
())
,
scale
,
// DATETIME_PRECISION
DataType
.
isDateTimeType
(
dataType
.
type
)
?
Integer
.
toString
(
c
.
getScale
())
:
null
,
DataType
.
isDateTimeType
(
dataType
.
type
)
?
scale
:
null
,
// CHARACTER_SET_NAME
CHARACTER_SET_NAME
,
// COLLATION_NAME
...
...
@@ -875,13 +881,12 @@ public class MetaTable extends Table {
// TYPE_NAME
identifier
(
dataType
.
name
),
// NULLABLE
c
.
isNullable
()
?
""
+
DatabaseMetaData
.
columnNullable
:
""
+
DatabaseMetaData
.
columnNoNulls
,
ValueInt
.
get
(
c
.
isNullable
()
?
DatabaseMetaData
.
columnNullable
:
DatabaseMetaData
.
columnNoNulls
),
// IS_COMPUTED
c
.
getComputed
()
?
"TRUE"
:
"FALSE"
,
ValueBoolean
.
get
(
c
.
getComputed
())
,
// SELECTIVITY
Integer
.
toString
(
c
.
getSelectivity
()),
ValueInt
.
get
(
c
.
getSelectivity
()),
// CHECK_CONSTRAINT
c
.
getCheckConstraintSQL
(
session
,
c
.
getName
()),
// SEQUENCE_NAME
...
...
@@ -889,6 +894,7 @@ public class MetaTable extends Table {
// REMARKS
replaceNullWithEmpty
(
c
.
getComment
()),
// SOURCE_DATA_TYPE
// SMALLINT
null
,
// COLUMN_TYPE
c
.
getCreateSQLWithoutName
(),
...
...
@@ -950,31 +956,27 @@ public class MetaTable extends Table {
// TABLE_NAME
tableName
,
// NON_UNIQUE
index
.
getIndexType
().
isUnique
()
?
"FALSE"
:
"TRUE"
,
ValueBoolean
.
get
(!
index
.
getIndexType
().
isUnique
()),
// INDEX_NAME
identifier
(
index
.
getName
()),
// ORDINAL_POSITION
Integer
.
toString
(
k
+
1
),
ValueShort
.
get
((
short
)
(
k
+
1
)
),
// COLUMN_NAME
identifier
(
column
.
getName
()),
// CARDINALITY
"0"
,
ValueInt
.
get
(
0
)
,
// PRIMARY_KEY
index
.
getIndexType
().
isPrimaryKey
()
?
"TRUE"
:
"FALSE"
,
ValueBoolean
.
get
(
index
.
getIndexType
().
isPrimaryKey
()),
// INDEX_TYPE_NAME
index
.
getIndexType
().
getSQL
(),
// IS_GENERATED
index
.
getIndexType
().
getBelongsToConstraint
()
?
"TRUE"
:
"FALSE"
,
ValueBoolean
.
get
(
index
.
getIndexType
().
getBelongsToConstraint
()),
// INDEX_TYPE
""
+
DatabaseMetaData
.
tableIndexOther
,
ValueShort
.
get
(
DatabaseMetaData
.
tableIndexOther
)
,
// ASC_OR_DESC
(
idxCol
.
sortType
&
SortOrder
.
DESCENDING
)
!=
0
?
"D"
:
"A"
,
(
idxCol
.
sortType
&
SortOrder
.
DESCENDING
)
!=
0
?
"D"
:
"A"
,
// PAGES
"0"
,
ValueInt
.
get
(
0
)
,
// FILTER_CONDITION
""
,
// REMARKS
...
...
@@ -982,16 +984,15 @@ public class MetaTable extends Table {
// SQL
index
.
getCreateSQL
(),
// ID
Integer
.
toString
(
index
.
getId
()),
ValueInt
.
get
(
index
.
getId
()),
// SORT_TYPE
Integer
.
toString
(
idxCol
.
sortType
),
ValueInt
.
get
(
idxCol
.
sortType
),
// CONSTRAINT_NAME
constraintName
,
// INDEX_CLASS
indexClass
,
// AFFINITY
index
.
getIndexType
().
isAffinity
()
?
"TRUE"
:
"FALSE"
ValueBoolean
.
get
(
index
.
getIndexType
().
isAffinity
())
);
}
}
...
...
@@ -1006,6 +1007,44 @@ public class MetaTable extends Table {
add
(
rows
,
TableType
.
EXTERNAL_TABLE_ENGINE
.
toString
());
break
;
}
case
TYPE_INFO:
{
for
(
DataType
t
:
DataType
.
getTypes
())
{
if
(
t
.
hidden
||
t
.
sqlType
==
Value
.
NULL
)
{
continue
;
}
add
(
rows
,
// TYPE_NAME
t
.
name
,
// DATA_TYPE
ValueInt
.
get
(
t
.
sqlType
),
// PRECISION
ValueInt
.
get
(
MathUtils
.
convertLongToInt
(
t
.
maxPrecision
)),
// PREFIX
t
.
prefix
,
// SUFFIX
t
.
suffix
,
// PARAMS
t
.
params
,
// AUTO_INCREMENT
ValueBoolean
.
get
(
t
.
autoIncrement
),
// MINIMUM_SCALE
ValueShort
.
get
((
short
)
t
.
minScale
),
// MAXIMUM_SCALE
ValueShort
.
get
((
short
)
t
.
maxScale
),
// RADIX
t
.
decimal
?
ValueInt
.
get
(
10
)
:
null
,
// POS
ValueInt
.
get
(
t
.
sqlTypePos
),
// CASE_SENSITIVE
ValueBoolean
.
get
(
t
.
caseSensitive
),
// NULLABLE
ValueShort
.
get
((
short
)
DatabaseMetaData
.
typeNullable
),
// SEARCHABLE
ValueShort
.
get
((
short
)
DatabaseMetaData
.
typeSearchable
)
);
}
break
;
}
case
CATALOGS:
{
add
(
rows
,
catalog
);
break
;
...
...
@@ -1099,44 +1138,6 @@ public class MetaTable extends Table {
}
break
;
}
case
TYPE_INFO:
{
for
(
DataType
t
:
DataType
.
getTypes
())
{
if
(
t
.
hidden
||
t
.
sqlType
==
Value
.
NULL
)
{
continue
;
}
add
(
rows
,
// TYPE_NAME
t
.
name
,
// DATA_TYPE
Integer
.
toString
(
t
.
sqlType
),
// PRECISION
Integer
.
toString
(
MathUtils
.
convertLongToInt
(
t
.
maxPrecision
)),
// PREFIX
t
.
prefix
,
// SUFFIX
t
.
suffix
,
// PARAMS
t
.
params
,
// AUTO_INCREMENT
String
.
valueOf
(
t
.
autoIncrement
),
// MINIMUM_SCALE
Integer
.
toString
(
t
.
minScale
),
// MAXIMUM_SCALE
Integer
.
toString
(
t
.
maxScale
),
// RADIX
t
.
decimal
?
"10"
:
null
,
// POS
Integer
.
toString
(
t
.
sqlTypePos
),
// CASE_SENSITIVE
String
.
valueOf
(
t
.
caseSensitive
),
// NULLABLE
""
+
DatabaseMetaData
.
typeNullable
,
// SEARCHABLE
""
+
DatabaseMetaData
.
typeSearchable
);
}
break
;
}
case
HELP:
{
String
resource
=
"/org/h2/res/help.csv"
;
try
{
...
...
@@ -1149,7 +1150,7 @@ public class MetaTable extends Table {
for
(
int
i
=
0
;
rs
.
next
();
i
++)
{
add
(
rows
,
// ID
Integer
.
toString
(
i
),
ValueInt
.
get
(
i
),
// SECTION
rs
.
getString
(
1
).
trim
(),
// TOPIC
...
...
@@ -1177,23 +1178,23 @@ public class MetaTable extends Table {
// SEQUENCE_NAME
identifier
(
s
.
getName
()),
// CURRENT_VALUE
Long
.
toString
(
s
.
getCurrentValue
()),
ValueLong
.
get
(
s
.
getCurrentValue
()),
// INCREMENT
Long
.
toString
(
s
.
getIncrement
()),
ValueLong
.
get
(
s
.
getIncrement
()),
// IS_GENERATED
s
.
getBelongsToTable
()
?
"TRUE"
:
"FALSE"
,
ValueBoolean
.
get
(
s
.
getBelongsToTable
())
,
// REMARKS
replaceNullWithEmpty
(
s
.
getComment
()),
// CACHE
Long
.
toString
(
s
.
getCacheSize
()),
ValueLong
.
get
(
s
.
getCacheSize
()),
// MIN_VALUE
Long
.
toString
(
s
.
getMinValue
()),
ValueLong
.
get
(
s
.
getMinValue
()),
// MAX_VALUE
Long
.
toString
(
s
.
getMaxValue
()),
ValueLong
.
get
(
s
.
getMaxValue
()),
// IS_CYCLE
s
.
getCycle
()
?
"TRUE"
:
"FALSE"
,
ValueBoolean
.
get
(
s
.
getCycle
())
,
// ID
Integer
.
toString
(
s
.
getId
())
ValueInt
.
get
(
s
.
getId
())
);
}
break
;
...
...
@@ -1209,7 +1210,7 @@ public class MetaTable extends Table {
// REMARKS
replaceNullWithEmpty
(
u
.
getComment
()),
// ID
Integer
.
toString
(
u
.
getId
())
ValueInt
.
get
(
u
.
getId
())
);
}
}
...
...
@@ -1224,7 +1225,7 @@ public class MetaTable extends Table {
// REMARKS
replaceNullWithEmpty
(
r
.
getComment
()),
// ID
Integer
.
toString
(
r
.
getId
())
ValueInt
.
get
(
r
.
getId
())
);
}
}
...
...
@@ -1235,8 +1236,7 @@ public class MetaTable extends Table {
for
(
Right
r
:
database
.
getAllRights
())
{
Role
role
=
r
.
getGrantedRole
();
DbObject
grantee
=
r
.
getGrantee
();
String
rightType
=
grantee
.
getType
()
==
DbObject
.
USER
?
"USER"
:
"ROLE"
;
String
rightType
=
grantee
.
getType
()
==
DbObject
.
USER
?
"USER"
:
"ROLE"
;
if
(
role
==
null
)
{
DbObject
object
=
r
.
getGrantedObject
();
Schema
schema
=
null
;
...
...
@@ -1268,7 +1268,7 @@ public class MetaTable extends Table {
// TABLE_NAME
tableName
,
// ID
Integer
.
toString
(
r
.
getId
())
ValueInt
.
get
(
r
.
getId
())
);
}
else
{
add
(
rows
,
...
...
@@ -1285,7 +1285,7 @@ public class MetaTable extends Table {
// TABLE_NAME
""
,
// ID
Integer
.
toString
(
r
.
getId
())
ValueInt
.
get
(
r
.
getId
())
);
}
}
...
...
@@ -1303,9 +1303,6 @@ public class MetaTable extends Table {
methods
=
new
JavaMethod
[
0
];
}
for
(
FunctionAlias
.
JavaMethod
method
:
methods
)
{
int
returnsResult
=
method
.
getDataType
()
==
Value
.
NULL
?
DatabaseMetaData
.
procedureNoResult
:
DatabaseMetaData
.
procedureReturnsResult
;
add
(
rows
,
// ALIAS_CATALOG
catalog
,
...
...
@@ -1318,17 +1315,19 @@ public class MetaTable extends Table {
// JAVA_METHOD
alias
.
getJavaMethodName
(),
// DATA_TYPE
Integer
.
toString
(
DataType
.
convertTypeToSQLType
(
method
.
getDataType
())),
ValueInt
.
get
(
DataType
.
convertTypeToSQLType
(
method
.
getDataType
())),
// TYPE_NAME
DataType
.
getDataType
(
method
.
getDataType
()).
name
,
// COLUMN_COUNT INT
Integer
.
toString
(
method
.
getParameterCount
()),
// RETURNS_RESULT SMALLINT
Integer
.
toString
(
returnsResult
),
// COLUMN_COUNT
ValueInt
.
get
(
method
.
getParameterCount
()),
// RETURNS_RESULT
ValueShort
.
get
(
method
.
getDataType
()
==
Value
.
NULL
?
(
short
)
DatabaseMetaData
.
procedureNoResult
:
(
short
)
DatabaseMetaData
.
procedureReturnsResult
),
// REMARKS
replaceNullWithEmpty
(
alias
.
getComment
()),
// ID
Integer
.
toString
(
alias
.
getId
()),
ValueInt
.
get
(
alias
.
getId
()),
// SOURCE
alias
.
getSource
()
// when adding more columns, see also below
...
...
@@ -1336,7 +1335,6 @@ public class MetaTable extends Table {
}
}
for
(
UserAggregate
agg
:
database
.
getAllAggregates
())
{
int
returnsResult
=
DatabaseMetaData
.
procedureReturnsResult
;
add
(
rows
,
// ALIAS_CATALOG
catalog
,
...
...
@@ -1349,17 +1347,17 @@ public class MetaTable extends Table {
// JAVA_METHOD
""
,
// DATA_TYPE
""
+
Types
.
NULL
,
ValueInt
.
get
(
Types
.
NULL
)
,
// TYPE_NAME
DataType
.
getDataType
(
Value
.
NULL
).
name
,
// COLUMN_COUNT
INT
"1"
,
// RETURNS_RESULT
SMALLINT
Integer
.
toString
(
r
eturnsResult
),
// COLUMN_COUNT
ValueInt
.
get
(
1
)
,
// RETURNS_RESULT
ValueShort
.
get
((
short
)
DatabaseMetaData
.
procedureR
eturnsResult
),
// REMARKS
replaceNullWithEmpty
(
agg
.
getComment
()),
// ID
Integer
.
toString
(
agg
.
getId
()),
ValueInt
.
get
(
agg
.
getId
()),
// SOURCE
""
// when adding more columns, see also below
...
...
@@ -1393,25 +1391,25 @@ public class MetaTable extends Table {
// JAVA_METHOD
alias
.
getJavaMethodName
(),
// COLUMN_COUNT
Integer
.
toString
(
method
.
getParameterCount
()),
// POS
INT
"0"
,
ValueInt
.
get
(
method
.
getParameterCount
()),
// POS
ValueInt
.
get
(
0
)
,
// COLUMN_NAME
"P0"
,
// DATA_TYPE
Integer
.
toString
(
DataType
.
convertTypeToSQLType
(
method
.
getDataType
())),
ValueInt
.
get
(
DataType
.
convertTypeToSQLType
(
method
.
getDataType
())),
// TYPE_NAME
dt
.
name
,
// PRECISION
INT
Integer
.
toString
(
MathUtils
.
convertLongToInt
(
dt
.
defaultPrecision
)),
// PRECISION
ValueInt
.
get
(
MathUtils
.
convertLongToInt
(
dt
.
defaultPrecision
)),
// SCALE
Integer
.
toString
(
dt
.
defaultScale
),
ValueShort
.
get
((
short
)
dt
.
defaultScale
),
// RADIX
"10"
,
// NULLABLE
SMALLINT
""
+
DatabaseMetaData
.
columnNullableUnknown
,
ValueShort
.
get
((
short
)
10
)
,
// NULLABLE
ValueShort
.
get
((
short
)
DatabaseMetaData
.
columnNullableUnknown
)
,
// COLUMN_TYPE
""
+
DatabaseMetaData
.
procedureColumnReturn
,
ValueShort
.
get
((
short
)
DatabaseMetaData
.
procedureColumnReturn
)
,
// REMARKS
""
,
// COLUMN_DEFAULT
...
...
@@ -1426,8 +1424,6 @@ public class MetaTable extends Table {
Class
<?>
clazz
=
columnList
[
k
];
int
dataType
=
DataType
.
getTypeFromClass
(
clazz
);
DataType
dt
=
DataType
.
getDataType
(
dataType
);
int
nullable
=
clazz
.
isPrimitive
()
?
DatabaseMetaData
.
columnNoNulls
:
DatabaseMetaData
.
columnNullable
;
add
(
rows
,
// ALIAS_CATALOG
catalog
,
...
...
@@ -1440,25 +1436,27 @@ public class MetaTable extends Table {
// JAVA_METHOD
alias
.
getJavaMethodName
(),
// COLUMN_COUNT
Integer
.
toString
(
method
.
getParameterCount
()),
// POS
INT
Integer
.
toString
(
k
+
(
method
.
hasConnectionParam
()
?
0
:
1
)),
ValueInt
.
get
(
method
.
getParameterCount
()),
// POS
ValueInt
.
get
(
k
+
(
method
.
hasConnectionParam
()
?
0
:
1
)),
// COLUMN_NAME
"P"
+
(
k
+
1
),
// DATA_TYPE
Integer
.
toString
(
DataType
.
convertTypeToSQLType
(
dt
.
type
)),
ValueInt
.
get
(
DataType
.
convertTypeToSQLType
(
dt
.
type
)),
// TYPE_NAME
dt
.
name
,
// PRECISION
INT
Integer
.
toString
(
MathUtils
.
convertLongToInt
(
dt
.
defaultPrecision
)),
// PRECISION
ValueInt
.
get
(
MathUtils
.
convertLongToInt
(
dt
.
defaultPrecision
)),
// SCALE
Integer
.
toString
(
dt
.
defaultScale
),
ValueShort
.
get
((
short
)
dt
.
defaultScale
),
// RADIX
"10"
,
// NULLABLE SMALLINT
Integer
.
toString
(
nullable
),
ValueShort
.
get
((
short
)
10
),
// NULLABLE
ValueShort
.
get
(
clazz
.
isPrimitive
()
?
(
short
)
DatabaseMetaData
.
columnNoNulls
:
(
short
)
DatabaseMetaData
.
columnNullable
),
// COLUMN_TYPE
""
+
DatabaseMetaData
.
procedureColumnIn
,
ValueShort
.
get
((
short
)
DatabaseMetaData
.
procedureColumnIn
)
,
// REMARKS
""
,
// COLUMN_DEFAULT
...
...
@@ -1484,12 +1482,11 @@ public class MetaTable extends Table {
// DEFAULT_COLLATION_NAME
collation
,
// IS_DEFAULT
Constants
.
SCHEMA_MAIN
.
equals
(
schema
.
getName
())
?
"TRUE"
:
"FALSE"
,
ValueBoolean
.
get
(
Constants
.
SCHEMA_MAIN
.
equals
(
schema
.
getName
())),
// REMARKS
replaceNullWithEmpty
(
schema
.
getComment
()),
// ID
Integer
.
toString
(
schema
.
getId
())
ValueInt
.
get
(
schema
.
getId
())
);
}
break
;
...
...
@@ -1575,7 +1572,7 @@ public class MetaTable extends Table {
// REMARKS
replaceNullWithEmpty
(
view
.
getComment
()),
// ID
Integer
.
toString
(
view
.
getId
())
ValueInt
.
get
(
view
.
getId
())
);
}
break
;
...
...
@@ -1610,8 +1607,8 @@ public class MetaTable extends Table {
if
(!
checkIndex
(
session
,
tableName
,
indexFrom
,
indexTo
))
{
continue
;
}
int
update
=
getRefAction
(
ref
.
getUpdateAction
(
));
int
delete
=
getRefAction
(
ref
.
getDeleteAction
(
));
ValueShort
update
=
ValueShort
.
get
(
getRefAction
(
ref
.
getUpdateAction
()
));
ValueShort
delete
=
ValueShort
.
get
(
getRefAction
(
ref
.
getDeleteAction
()
));
for
(
int
j
=
0
;
j
<
cols
.
length
;
j
++)
{
add
(
rows
,
// PKTABLE_CATALOG
...
...
@@ -1631,17 +1628,17 @@ public class MetaTable extends Table {
// FKCOLUMN_NAME
identifier
(
cols
[
j
].
column
.
getName
()),
// ORDINAL_POSITION
Integer
.
toString
(
j
+
1
),
// UPDATE_RULE
SMALLINT
Integer
.
toString
(
update
)
,
// DELETE_RULE
SMALLINT
Integer
.
toString
(
delete
)
,
ValueShort
.
get
((
short
)
(
j
+
1
)
),
// UPDATE_RULE
update
,
// DELETE_RULE
delete
,
// FK_NAME
identifier
(
ref
.
getName
()),
// PK_NAME
identifier
(
ref
.
getUniqueIndex
().
getName
()),
// DEFERRABILITY
""
+
DatabaseMetaData
.
importedKeyNotDeferrable
ValueShort
.
get
((
short
)
DatabaseMetaData
.
importedKeyNotDeferrable
)
);
}
}
...
...
@@ -1711,7 +1708,7 @@ public class MetaTable extends Table {
// SQL
constraint
.
getCreateSQL
(),
// ID
Integer
.
toString
(
constraint
.
getId
())
ValueInt
.
get
(
constraint
.
getId
())
);
}
break
;
...
...
@@ -1728,14 +1725,14 @@ public class MetaTable extends Table {
identifier
(
constant
.
getSchema
().
getName
()),
// CONSTANT_NAME
identifier
(
constant
.
getName
()),
//
CONSTANT
_TYPE
Integer
.
toString
(
DataType
.
convertTypeToSQLType
(
expr
.
getType
())),
//
DATA
_TYPE
ValueInt
.
get
(
DataType
.
convertTypeToSQLType
(
expr
.
getType
())),
// REMARKS
replaceNullWithEmpty
(
constant
.
getComment
()),
// SQL
expr
.
getSQL
(),
// ID
Integer
.
toString
(
constant
.
getId
())
ValueInt
.
get
(
constant
.
getId
())
);
}
break
;
...
...
@@ -1755,15 +1752,15 @@ public class MetaTable extends Table {
// IS_NULLABLE
col
.
isNullable
()
?
"YES"
:
"NO"
,
// DATA_TYPE
Integer
.
toString
(
col
.
getDataType
().
sqlType
),
// PRECISION
INT
Integer
.
toString
(
col
.
getPrecisionAsInt
()),
// SCALE
INT
Integer
.
toString
(
col
.
getScale
()),
ValueInt
.
get
(
col
.
getDataType
().
sqlType
),
// PRECISION
ValueInt
.
get
(
col
.
getPrecisionAsInt
()),
// SCALE
ValueInt
.
get
(
col
.
getScale
()),
// TYPE_NAME
col
.
getDataType
().
name
,
// SELECTIVITY INT
Integer
.
toString
(
col
.
getSelectivity
()),
ValueInt
.
get
(
col
.
getSelectivity
()),
// CHECK_CONSTRAINT
col
.
getCheckConstraintSQL
(
session
,
"VALUE"
),
// REMARKS
...
...
@@ -1771,7 +1768,7 @@ public class MetaTable extends Table {
// SQL
dt
.
getCreateSQL
(),
// ID
Integer
.
toString
(
dt
.
getId
())
ValueInt
.
get
(
dt
.
getId
())
);
}
break
;
...
...
@@ -1796,20 +1793,20 @@ public class MetaTable extends Table {
identifier
(
table
.
getSchema
().
getName
()),
// TABLE_NAME
identifier
(
table
.
getName
()),
// BEFORE
BIT
Boolean
.
toString
(
trigger
.
isBefore
()),
// BEFORE
ValueBoolean
.
get
(
trigger
.
isBefore
()),
// JAVA_CLASS
trigger
.
getTriggerClassName
(),
// QUEUE_SIZE
INT
Integer
.
toString
(
trigger
.
getQueueSize
()),
// NO_WAIT
BIT
Boolean
.
toString
(
trigger
.
isNoWait
()),
// QUEUE_SIZE
ValueInt
.
get
(
trigger
.
getQueueSize
()),
// NO_WAIT
ValueBoolean
.
get
(
trigger
.
isNoWait
()),
// REMARKS
replaceNullWithEmpty
(
trigger
.
getComment
()),
// SQL
trigger
.
getCreateSQL
(),
// ID
Integer
.
toString
(
trigger
.
getId
())
ValueInt
.
get
(
trigger
.
getId
())
);
}
break
;
...
...
@@ -1826,21 +1823,21 @@ public class MetaTable extends Table {
int
blockingSessionId
=
s
.
getBlockingSessionId
();
add
(
rows
,
// ID
Integer
.
toString
(
s
.
getId
()),
ValueInt
.
get
(
s
.
getId
()),
// USER_NAME
s
.
getUser
().
getName
(),
// SESSION_START
new
Timestamp
(
s
.
getSessionStart
()).
toString
(
),
DateTimeUtils
.
timestampTimeZoneFromMillis
(
s
.
getSessionStart
()
),
// STATEMENT
command
==
null
?
null
:
command
.
toString
(),
// STATEMENT_START
new
Timestamp
(
start
).
toString
(
),
DateTimeUtils
.
timestampTimeZoneFromMillis
(
start
),
// CONTAINS_UNCOMMITTED
Boolean
.
toString
(
s
.
containsUncommitted
()),
ValueBoolean
.
get
(
s
.
containsUncommitted
()),
// STATE
String
.
valueOf
(
s
.
getState
()),
// BLOCKER_ID
INT
blockingSessionId
==
0
?
null
:
String
.
valueOf
(
blockingSessionId
)
// BLOCKER_ID
blockingSessionId
==
0
?
null
:
ValueInt
.
get
(
blockingSessionId
)
);
}
}
...
...
@@ -1856,7 +1853,7 @@ public class MetaTable extends Table {
// TABLE_NAME
table
.
getName
(),
// SESSION_ID
Integer
.
toString
(
s
.
getId
()),
ValueInt
.
get
(
s
.
getId
()),
// LOCK_TYPE
table
.
isLockedExclusivelyBy
(
s
)
?
"WRITE"
:
"READ"
);
...
...
@@ -1917,27 +1914,27 @@ public class MetaTable extends Table {
// SQL_STATEMENT
entry
.
sqlStatement
,
// EXECUTION_COUNT
Integer
.
toString
(
entry
.
count
),
ValueInt
.
get
(
entry
.
count
),
// MIN_EXECUTION_TIME
Double
.
toString
(
entry
.
executionTimeMinNanos
/
1_000_000
d
),
ValueDouble
.
get
(
entry
.
executionTimeMinNanos
/
1_000_000
d
),
// MAX_EXECUTION_TIME
Double
.
toString
(
entry
.
executionTimeMaxNanos
/
1_000_000
d
),
ValueDouble
.
get
(
entry
.
executionTimeMaxNanos
/
1_000_000
d
),
// CUMULATIVE_EXECUTION_TIME
Double
.
toString
(
entry
.
executionTimeCumulativeNanos
/
1_000_000
d
),
ValueDouble
.
get
(
entry
.
executionTimeCumulativeNanos
/
1_000_000
d
),
// AVERAGE_EXECUTION_TIME
Double
.
toString
(
entry
.
executionTimeMeanNanos
/
1_000_000
d
),
ValueDouble
.
get
(
entry
.
executionTimeMeanNanos
/
1_000_000
d
),
// STD_DEV_EXECUTION_TIME
Double
.
toString
(
entry
.
getExecutionTimeStandardDeviation
()
/
1_000_000
d
),
ValueDouble
.
get
(
entry
.
getExecutionTimeStandardDeviation
()
/
1_000_000
d
),
// MIN_ROW_COUNT
Integer
.
toString
(
entry
.
rowCountMin
),
ValueInt
.
get
(
entry
.
rowCountMin
),
// MAX_ROW_COUNT
Integer
.
toString
(
entry
.
rowCountMax
),
ValueInt
.
get
(
entry
.
rowCountMax
),
// CUMULATIVE_ROW_COUNT
Long
.
toString
(
entry
.
rowCountCumulative
),
ValueLong
.
get
(
entry
.
rowCountCumulative
),
// AVERAGE_ROW_COUNT
Double
.
toString
(
entry
.
rowCountMean
),
ValueDouble
.
get
(
entry
.
rowCountMean
),
// STD_DEV_ROW_COUNT
Double
.
toString
(
entry
.
getRowCountStandardDeviation
())
ValueDouble
.
get
(
entry
.
getRowCountStandardDeviation
())
);
}
}
...
...
@@ -1963,7 +1960,7 @@ public class MetaTable extends Table {
// REMARKS
replaceNullWithEmpty
(
synonym
.
getComment
()),
// ID
Integer
.
toString
(
synonym
.
getId
())
ValueInt
.
get
(
synonym
.
getId
())
);
}
break
;
...
...
@@ -2033,8 +2030,8 @@ public class MetaTable extends Table {
}
for
(
int
i
=
0
;
i
<
indexColumns
.
length
;
i
++)
{
IndexColumn
indexColumn
=
indexColumns
[
i
];
String
ordinalPosition
=
Integer
.
toString
(
i
+
1
);
String
positionInUniqueConstraint
;
ValueInt
ordinalPosition
=
ValueInt
.
get
(
i
+
1
);
ValueInt
positionInUniqueConstraint
;
if
(
constraintType
==
Constraint
.
Type
.
REFERENTIAL
)
{
positionInUniqueConstraint
=
ordinalPosition
;
if
(
referenced
!=
null
)
{
...
...
@@ -2042,7 +2039,7 @@ public class MetaTable extends Table {
IndexColumn
[]
refColumns
=
referenced
.
getColumns
();
for
(
int
j
=
0
;
j
<
refColumns
.
length
;
j
++)
{
if
(
refColumns
[
j
].
column
.
equals
(
c
))
{
positionInUniqueConstraint
=
Integer
.
toString
(
j
+
1
);
positionInUniqueConstraint
=
ValueInt
.
get
(
j
+
1
);
break
;
}
}
...
...
@@ -2120,7 +2117,7 @@ public class MetaTable extends Table {
return
rows
;
}
private
static
in
t
getRefAction
(
ConstraintActionType
action
)
{
private
static
shor
t
getRefAction
(
ConstraintActionType
action
)
{
switch
(
action
)
{
case
CASCADE:
return
DatabaseMetaData
.
importedKeyCascade
;
...
...
@@ -2238,14 +2235,12 @@ public class MetaTable extends Table {
}
}
private
void
add
(
ArrayList
<
Row
>
rows
,
String
...
strings
)
{
Value
[]
values
=
new
Value
[
strings
.
length
];
for
(
int
i
=
0
;
i
<
strings
.
length
;
i
++)
{
String
s
=
strings
[
i
];
Value
v
=
(
s
==
null
)
?
(
Value
)
ValueNull
.
INSTANCE
:
ValueString
.
get
(
s
);
Column
col
=
columns
[
i
];
v
=
col
.
convert
(
v
);
values
[
i
]
=
v
;
private
void
add
(
ArrayList
<
Row
>
rows
,
Object
...
stringsOrValues
)
{
Value
[]
values
=
new
Value
[
stringsOrValues
.
length
];
for
(
int
i
=
0
;
i
<
stringsOrValues
.
length
;
i
++)
{
Object
s
=
stringsOrValues
[
i
];
Value
v
=
s
==
null
?
ValueNull
.
INSTANCE
:
s
instanceof
String
?
ValueString
.
get
((
String
)
s
)
:
(
Value
)
s
;
values
[
i
]
=
columns
[
i
].
convert
(
v
);
}
Row
row
=
database
.
createRow
(
values
,
1
);
row
.
setKey
(
rows
.
size
());
...
...
h2/src/main/org/h2/util/CurrentTimestamp.java
浏览文件 @
f80b78b6
...
...
@@ -21,17 +21,7 @@ public final class CurrentTimestamp {
* @return current timestamp
*/
public
static
ValueTimestampTimeZone
get
()
{
long
ms
=
System
.
currentTimeMillis
();
/*
* This code intentionally does not support properly dates before UNIX
* epoch and time zone offsets with seconds because such support is not
* required for current dates.
*/
int
offset
=
DateTimeUtils
.
getTimeZone
().
getOffset
(
ms
);
ms
+=
offset
;
return
ValueTimestampTimeZone
.
fromDateValueAndNanos
(
DateTimeUtils
.
dateValueFromAbsoluteDay
(
ms
/
DateTimeUtils
.
MILLIS_PER_DAY
),
ms
%
DateTimeUtils
.
MILLIS_PER_DAY
*
1_000_000
,
(
short
)
(
offset
/
60_000
));
return
DateTimeUtils
.
timestampTimeZoneFromMillis
(
System
.
currentTimeMillis
());
}
private
CurrentTimestamp
()
{
...
...
h2/src/main/org/h2/util/DateTimeUtils.java
浏览文件 @
f80b78b6
...
...
@@ -1163,6 +1163,24 @@ public class DateTimeUtils {
return
ValueTimestampTimeZone
.
fromDateValueAndNanos
(
dateValue
,
timeNanos
,
(
short
)
offsetMins
);
}
/**
* @param ms milliseconds since 1970-01-01 (UTC)
* @return timestamp with time zone with specified value and current time zone
*/
public
static
ValueTimestampTimeZone
timestampTimeZoneFromMillis
(
long
ms
)
{
int
offset
=
getTimeZone
().
getOffset
(
ms
);
ms
+=
offset
;
long
absoluteDay
=
ms
/
MILLIS_PER_DAY
;
// Round toward negative infinity
if
(
ms
<
0
&&
(
absoluteDay
*
MILLIS_PER_DAY
!=
ms
))
{
absoluteDay
--;
}
return
ValueTimestampTimeZone
.
fromDateValueAndNanos
(
dateValueFromAbsoluteDay
(
absoluteDay
),
(
ms
-
absoluteDay
*
MILLIS_PER_DAY
)
*
1_000_000
,
(
short
)
(
offset
/
60_000
));
}
/**
* Calculate the absolute day for a January, 1 of the specified year.
*
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论