Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
00603e4b
提交
00603e4b
authored
6 年前
作者:
Evgenij Ryazanov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Move getMainIndexColumn() to TableBase for reuse
上级
12d530ed
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
35 行增加
和
51 行删除
+35
-51
MVTable.java
h2/src/main/org/h2/mvstore/db/MVTable.java
+2
-26
RegularTable.java
h2/src/main/org/h2/table/RegularTable.java
+2
-25
TableBase.java
h2/src/main/org/h2/table/TableBase.java
+31
-0
没有找到文件。
h2/src/main/org/h2/mvstore/db/MVTable.java
浏览文件 @
00603e4b
...
...
@@ -35,7 +35,6 @@ import org.h2.mvstore.tx.Transaction;
import
org.h2.mvstore.tx.TransactionStore
;
import
org.h2.result.Row
;
import
org.h2.result.SearchRow
;
import
org.h2.result.SortOrder
;
import
org.h2.schema.SchemaObject
;
import
org.h2.table.Column
;
import
org.h2.table.IndexColumn
;
...
...
@@ -504,8 +503,8 @@ public class MVTable extends TableBase {
database
.
lockMeta
(
session
);
}
MVIndex
index
;
int
mainIndexColumn
;
mainIndexColumn
=
getMainIndexColumn
(
indexType
,
cols
);
int
mainIndexColumn
=
primaryIndex
.
getMainIndexColumn
()
!=
SearchRow
.
ROWID_INDEX
?
SearchRow
.
ROWID_INDEX
:
getMainIndexColumn
(
indexType
,
cols
);
if
(
database
.
isStarting
())
{
if
(
transactionStore
.
hasMap
(
"index."
+
indexId
))
{
mainIndexColumn
=
SearchRow
.
ROWID_INDEX
;
...
...
@@ -646,29 +645,6 @@ public class MVTable extends TableBase {
}
}
private
int
getMainIndexColumn
(
IndexType
indexType
,
IndexColumn
[]
cols
)
{
if
(
primaryIndex
.
getMainIndexColumn
()
!=
SearchRow
.
ROWID_INDEX
)
{
return
SearchRow
.
ROWID_INDEX
;
}
if
(!
indexType
.
isPrimaryKey
()
||
cols
.
length
!=
1
)
{
return
SearchRow
.
ROWID_INDEX
;
}
IndexColumn
first
=
cols
[
0
];
if
(
first
.
sortType
!=
SortOrder
.
ASCENDING
)
{
return
SearchRow
.
ROWID_INDEX
;
}
switch
(
first
.
column
.
getType
())
{
case
Value
.
BYTE
:
case
Value
.
SHORT
:
case
Value
.
INT
:
case
Value
.
LONG
:
break
;
default
:
return
SearchRow
.
ROWID_INDEX
;
}
return
first
.
column
.
getColumnId
();
}
private
static
void
addRowsToIndex
(
Session
session
,
ArrayList
<
Row
>
list
,
Index
index
)
{
sortRows
(
list
,
index
);
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/table/RegularTable.java
浏览文件 @
00603e4b
...
...
@@ -36,7 +36,6 @@ import org.h2.index.TreeIndex;
import
org.h2.message.DbException
;
import
org.h2.message.Trace
;
import
org.h2.result.Row
;
import
org.h2.result.SortOrder
;
import
org.h2.schema.SchemaObject
;
import
org.h2.util.MathUtils
;
import
org.h2.util.Utils
;
...
...
@@ -199,7 +198,8 @@ public class RegularTable extends TableBase {
if
(
database
.
isStarting
()
&&
database
.
getPageStore
().
getRootPageId
(
indexId
)
!=
0
)
{
mainIndexColumn
=
-
1
;
}
else
if
(!
database
.
isStarting
()
&&
mainIndex
.
getRowCount
(
session
)
!=
0
)
{
}
else
if
(!
database
.
isStarting
()
&&
mainIndex
.
getRowCount
(
session
)
!=
0
||
mainIndex
.
getMainIndexColumn
()
!=
-
1
)
{
mainIndexColumn
=
-
1
;
}
else
{
mainIndexColumn
=
getMainIndexColumn
(
indexType
,
cols
);
...
...
@@ -289,29 +289,6 @@ public class RegularTable extends TableBase {
return
index
;
}
private
int
getMainIndexColumn
(
IndexType
indexType
,
IndexColumn
[]
cols
)
{
if
(
mainIndex
.
getMainIndexColumn
()
!=
-
1
)
{
return
-
1
;
}
if
(!
indexType
.
isPrimaryKey
()
||
cols
.
length
!=
1
)
{
return
-
1
;
}
IndexColumn
first
=
cols
[
0
];
if
(
first
.
sortType
!=
SortOrder
.
ASCENDING
)
{
return
-
1
;
}
switch
(
first
.
column
.
getType
())
{
case
Value
.
BYTE
:
case
Value
.
SHORT
:
case
Value
.
INT
:
case
Value
.
LONG
:
break
;
default
:
return
-
1
;
}
return
first
.
column
.
getColumnId
();
}
@Override
public
boolean
canGetRowCount
()
{
return
true
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/table/TableBase.java
浏览文件 @
00603e4b
...
...
@@ -10,9 +10,13 @@ import java.util.List;
import
org.h2.command.ddl.CreateTableData
;
import
org.h2.engine.Database
;
import
org.h2.engine.DbSettings
;
import
org.h2.index.IndexType
;
import
org.h2.mvstore.db.MVTableEngine
;
import
org.h2.result.SearchRow
;
import
org.h2.result.SortOrder
;
import
org.h2.util.StatementBuilder
;
import
org.h2.util.StringUtils
;
import
org.h2.value.Value
;
/**
* The base class of a regular table, or a user defined table.
...
...
@@ -31,6 +35,33 @@ public abstract class TableBase extends Table {
private
final
boolean
globalTemporary
;
/**
* Returns main index column if index is an primary key index and has only
* one column with _ROWID_ compatible data type.
*
* @param indexType type of an index
* @param cols columns of the index
* @return main index column or {@link SearchRow#ROWID_INDEX}
*/
public
static
int
getMainIndexColumn
(
IndexType
indexType
,
IndexColumn
[]
cols
)
{
if
(!
indexType
.
isPrimaryKey
()
||
cols
.
length
!=
1
)
{
return
SearchRow
.
ROWID_INDEX
;
}
IndexColumn
first
=
cols
[
0
];
if
(
first
.
sortType
!=
SortOrder
.
ASCENDING
)
{
return
SearchRow
.
ROWID_INDEX
;
}
switch
(
first
.
column
.
getType
())
{
case
Value
.
BYTE
:
case
Value
.
SHORT
:
case
Value
.
INT
:
case
Value
.
LONG
:
return
first
.
column
.
getColumnId
();
default
:
return
SearchRow
.
ROWID_INDEX
;
}
}
public
TableBase
(
CreateTableData
data
)
{
super
(
data
.
schema
,
data
.
id
,
data
.
tableName
,
data
.
persistIndexes
,
data
.
persistData
);
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论