Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
73f1e9b4
提交
73f1e9b4
authored
7 年前
作者:
Niklas Mehner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Implement MetaData.getColumns() for columns.
上级
1972c244
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
86 行增加
和
2 行删除
+86
-2
JdbcDatabaseMetaData.java
h2/src/main/org/h2/jdbc/JdbcDatabaseMetaData.java
+72
-2
MetaTable.java
h2/src/main/org/h2/table/MetaTable.java
+3
-0
TableSynonym.java
h2/src/main/org/h2/table/TableSynonym.java
+5
-0
TestSynonymForTable.java
h2/src/test/org/h2/test/db/TestSynonymForTable.java
+6
-0
没有找到文件。
h2/src/main/org/h2/jdbc/JdbcDatabaseMetaData.java
浏览文件 @
73f1e9b4
...
...
@@ -282,7 +282,7 @@ public class JdbcDatabaseMetaData extends TraceObject implements
+
quote
(
columnNamePattern
)+
");"
);
}
checkClosed
();
PreparedStatement
prep
=
conn
.
prepareAutoCloseStatement
(
"SELECT "
String
tableSql
=
"SELECT "
+
"TABLE_CATALOG TABLE_CAT, "
+
"TABLE_SCHEMA TABLE_SCHEM, "
+
"TABLE_NAME, "
...
...
@@ -313,7 +313,67 @@ public class JdbcDatabaseMetaData extends TraceObject implements
+
"AND TABLE_SCHEMA LIKE ? ESCAPE ? "
+
"AND TABLE_NAME LIKE ? ESCAPE ? "
+
"AND COLUMN_NAME LIKE ? ESCAPE ? "
+
"ORDER BY TABLE_SCHEM, TABLE_NAME, ORDINAL_POSITION"
);
+
"ORDER BY TABLE_SCHEM, TABLE_NAME, ORDINAL_POSITION"
;
String
synonymSql
=
"SELECT "
+
"s.SYNONYM_CATALOG TABLE_CAT, "
+
"s.SYNONYM_SCHEMA TABLE_SCHEM, "
+
"s.SYNONYM_NAME TABLE_NAME, "
+
"c.COLUMN_NAME, "
+
"c.DATA_TYPE, "
+
"c.TYPE_NAME, "
+
"c.CHARACTER_MAXIMUM_LENGTH COLUMN_SIZE, "
+
"c.CHARACTER_MAXIMUM_LENGTH BUFFER_LENGTH, "
+
"c.NUMERIC_SCALE DECIMAL_DIGITS, "
+
"c.NUMERIC_PRECISION_RADIX NUM_PREC_RADIX, "
+
"c.NULLABLE, "
+
"c.REMARKS, "
+
"c.COLUMN_DEFAULT COLUMN_DEF, "
+
"c.DATA_TYPE SQL_DATA_TYPE, "
+
"ZERO() SQL_DATETIME_SUB, "
+
"c.CHARACTER_OCTET_LENGTH CHAR_OCTET_LENGTH, "
+
"c.ORDINAL_POSITION, "
+
"c.IS_NULLABLE IS_NULLABLE, "
+
"CAST(c.SOURCE_DATA_TYPE AS VARCHAR) SCOPE_CATALOG, "
+
"CAST(c.SOURCE_DATA_TYPE AS VARCHAR) SCOPE_SCHEMA, "
+
"CAST(c.SOURCE_DATA_TYPE AS VARCHAR) SCOPE_TABLE, "
+
"c.SOURCE_DATA_TYPE, "
+
"CASE WHEN c.SEQUENCE_NAME IS NULL THEN "
+
"CAST(? AS VARCHAR) ELSE CAST(? AS VARCHAR) END IS_AUTOINCREMENT, "
+
"CAST(c.SOURCE_DATA_TYPE AS VARCHAR) SCOPE_CATLOG "
+
"FROM INFORMATION_SCHEMA.COLUMNS c JOIN INFORMATION_SCHEMA.SYNONYMS s ON "
+
"s.SYNONYM_FOR = c.TABLE_NAME "
+
"AND s.SYNONYM_FOR_SCHEMA = c.TABLE_SCHEMA "
+
"WHERE s.SYNONYM_CATALOG LIKE ? ESCAPE ? "
+
"AND s.SYNONYM_SCHEMA LIKE ? ESCAPE ? "
+
"AND s.SYNONYM_NAME LIKE ? ESCAPE ? "
+
"AND c.COLUMN_NAME LIKE ? ESCAPE ? "
;
PreparedStatement
prep
=
conn
.
prepareAutoCloseStatement
(
"SELECT "
+
"TABLE_CAT, "
+
"TABLE_SCHEM, "
+
"TABLE_NAME, "
+
"COLUMN_NAME, "
+
"DATA_TYPE, "
+
"TYPE_NAME, "
+
"COLUMN_SIZE, "
+
"BUFFER_LENGTH, "
+
"DECIMAL_DIGITS, "
+
"NUM_PREC_RADIX, "
+
"NULLABLE, "
+
"REMARKS, "
+
"COLUMN_DEF, "
+
"SQL_DATA_TYPE, "
+
"SQL_DATETIME_SUB, "
+
"CHAR_OCTET_LENGTH, "
+
"ORDINAL_POSITION, "
+
"IS_NULLABLE, "
+
"SCOPE_CATALOG, "
+
"SCOPE_SCHEMA, "
+
"SCOPE_TABLE, "
+
"SOURCE_DATA_TYPE, "
+
"IS_AUTOINCREMENT, "
+
"SCOPE_CATLOG "
+
"FROM (("
+
tableSql
+
") UNION ("
+
synonymSql
+
")) ORDER BY TABLE_SCHEM, TABLE_NAME, ORDINAL_POSITION"
);
prep
.
setString
(
1
,
"NO"
);
prep
.
setString
(
2
,
"YES"
);
prep
.
setString
(
3
,
getCatalogPattern
(
catalogPattern
));
...
...
@@ -324,6 +384,16 @@ public class JdbcDatabaseMetaData extends TraceObject implements
prep
.
setString
(
8
,
"\\"
);
prep
.
setString
(
9
,
getPattern
(
columnNamePattern
));
prep
.
setString
(
10
,
"\\"
);
prep
.
setString
(
11
,
"NO"
);
prep
.
setString
(
12
,
"YES"
);
prep
.
setString
(
13
,
getCatalogPattern
(
catalogPattern
));
prep
.
setString
(
14
,
"\\"
);
prep
.
setString
(
15
,
getSchemaPattern
(
schemaPattern
));
prep
.
setString
(
16
,
"\\"
);
prep
.
setString
(
17
,
getPattern
(
tableNamePattern
));
prep
.
setString
(
18
,
"\\"
);
prep
.
setString
(
19
,
getPattern
(
columnNamePattern
));
prep
.
setString
(
20
,
"\\"
);
return
prep
.
executeQuery
();
}
catch
(
Exception
e
)
{
throw
logAndConvert
(
e
);
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/table/MetaTable.java
浏览文件 @
73f1e9b4
...
...
@@ -546,6 +546,7 @@ public class MetaTable extends Table {
"SYNONYM_SCHEMA"
,
"SYNONYM_NAME"
,
"SYNONYM_FOR"
,
"SYNONYM_FOR_SCHEMA"
,
"TYPE_NAME"
,
"STATUS"
,
"REMARKS"
,
...
...
@@ -1889,6 +1890,8 @@ public class MetaTable extends Table {
identifier
(
synonym
.
getName
()),
// SYNONYM_FOR
synonym
.
getSynonymForName
(),
// SYNONYM_FOR_SCHEMA
synonym
.
getSynonymForSchema
().
getName
(),
// TYPE NAME
"SYNONYM"
,
// STATUS
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/table/TableSynonym.java
浏览文件 @
73f1e9b4
...
...
@@ -9,6 +9,7 @@ import org.h2.command.ddl.CreateSynonymData;
import
org.h2.engine.Session
;
import
org.h2.message.DbException
;
import
org.h2.message.Trace
;
import
org.h2.schema.Schema
;
import
org.h2.schema.SchemaObjectBase
;
/**
...
...
@@ -73,6 +74,10 @@ public class TableSynonym extends SchemaObjectBase {
return
data
.
synonymFor
;
}
public
Schema
getSynonymForSchema
()
{
return
data
.
synonymForSchema
;
}
public
boolean
isInvalid
()
{
return
synonymFor
.
isValid
();
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/db/TestSynonymForTable.java
浏览文件 @
73f1e9b4
...
...
@@ -171,6 +171,12 @@ public class TestSynonymForTable extends TestBase {
assertEquals
(
tables
.
getString
(
"TABLE_TYPE"
),
"SYNONYM"
);
assertFalse
(
tables
.
next
());
ResultSet
columns
=
conn
.
getMetaData
().
getColumns
(
null
,
Constants
.
SCHEMA_MAIN
,
"TESTSYNONYM"
,
null
);
assertTrue
(
columns
.
next
());
assertEquals
(
columns
.
getString
(
"TABLE_NAME"
),
"TESTSYNONYM"
);
assertEquals
(
columns
.
getString
(
"COLUMN_NAME"
),
"ID"
);
assertFalse
(
columns
.
next
());
ResultSet
synonyms
=
conn
.
createStatement
().
executeQuery
(
"SELECT * FROM INFORMATION_SCHEMA.SYNONYMS"
);
assertTrue
(
synonyms
.
next
());
assertEquals
(
"SYNONYM"
,
synonyms
.
getString
(
"SYNONYM_CATALOG"
));
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论