Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
75da7235
Unverified
提交
75da7235
authored
6 年前
作者:
Evgenij Ryazanov
提交者:
GitHub
6 年前
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1424 from tledkov-gridgain/localresult-interface
Introduce LocalResult factory (Issue #1405)
上级
5f682ece
29744f40
master
version-1.4.198
无相关合并请求
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
16 个修改的文件
包含
807 行增加
和
569 行删除
+807
-569
Call.java
h2/src/main/org/h2/command/dml/Call.java
+5
-4
Explain.java
h2/src/main/org/h2/command/dml/Explain.java
+1
-1
ScriptCommand.java
h2/src/main/org/h2/command/dml/ScriptCommand.java
+1
-1
Select.java
h2/src/main/org/h2/command/dml/Select.java
+4
-3
SelectUnion.java
h2/src/main/org/h2/command/dml/SelectUnion.java
+4
-4
Set.java
h2/src/main/org/h2/command/dml/Set.java
+14
-0
SetTypes.java
h2/src/main/org/h2/command/dml/SetTypes.java
+7
-1
Database.java
h2/src/main/org/h2/engine/Database.java
+10
-0
GeneratedKeys.java
h2/src/main/org/h2/engine/GeneratedKeys.java
+7
-6
TableFunction.java
h2/src/main/org/h2/expression/TableFunction.java
+1
-1
LocalResult.java
h2/src/main/org/h2/result/LocalResult.java
+18
-547
LocalResultFactory.java
h2/src/main/org/h2/result/LocalResultFactory.java
+91
-0
LocalResultImpl.java
h2/src/main/org/h2/result/LocalResultImpl.java
+575
-0
FunctionTable.java
h2/src/main/org/h2/table/FunctionTable.java
+2
-1
TestAll.java
h2/src/test/org/h2/test/TestAll.java
+2
-0
TestLocalResultFactory.java
h2/src/test/org/h2/test/unit/TestLocalResultFactory.java
+65
-0
没有找到文件。
h2/src/main/org/h2/command/dml/Call.java
浏览文件 @
75da7235
...
@@ -12,6 +12,7 @@ import org.h2.engine.Session;
...
@@ -12,6 +12,7 @@ import org.h2.engine.Session;
import
org.h2.expression.Expression
;
import
org.h2.expression.Expression
;
import
org.h2.expression.ExpressionVisitor
;
import
org.h2.expression.ExpressionVisitor
;
import
org.h2.result.LocalResult
;
import
org.h2.result.LocalResult
;
import
org.h2.result.LocalResultFactory
;
import
org.h2.result.ResultInterface
;
import
org.h2.result.ResultInterface
;
import
org.h2.value.Value
;
import
org.h2.value.Value
;
...
@@ -34,9 +35,9 @@ public class Call extends Prepared {
...
@@ -34,9 +35,9 @@ public class Call extends Prepared {
LocalResult
result
;
LocalResult
result
;
if
(
isResultSet
)
{
if
(
isResultSet
)
{
Expression
[]
expr
=
expression
.
getExpressionColumns
(
session
);
Expression
[]
expr
=
expression
.
getExpressionColumns
(
session
);
result
=
new
LocalResult
(
session
,
expr
,
expr
.
length
);
result
=
session
.
getDatabase
().
getResultFactory
().
create
(
session
,
expr
,
expr
.
length
);
}
else
{
}
else
{
result
=
new
LocalResult
(
session
,
expressions
,
1
);
result
=
session
.
getDatabase
().
getResultFactory
().
create
(
session
,
expressions
,
1
);
}
}
result
.
done
();
result
.
done
();
return
result
;
return
result
;
...
@@ -66,9 +67,9 @@ public class Call extends Prepared {
...
@@ -66,9 +67,9 @@ public class Call extends Prepared {
if
(
isResultSet
)
{
if
(
isResultSet
)
{
v
=
v
.
convertTo
(
Value
.
RESULT_SET
);
v
=
v
.
convertTo
(
Value
.
RESULT_SET
);
ResultSet
rs
=
v
.
getResultSet
();
ResultSet
rs
=
v
.
getResultSet
();
return
LocalResult
.
read
(
session
,
rs
,
maxrows
);
return
LocalResult
Factory
.
read
(
session
,
rs
,
maxrows
);
}
}
LocalResult
result
=
new
LocalResult
(
session
,
expressions
,
1
);
LocalResult
result
=
session
.
getDatabase
().
getResultFactory
().
create
(
session
,
expressions
,
1
);
Value
[]
row
=
{
v
};
Value
[]
row
=
{
v
};
result
.
addRow
(
row
);
result
.
addRow
(
row
);
result
.
done
();
result
.
done
();
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/command/dml/Explain.java
浏览文件 @
75da7235
...
@@ -72,7 +72,7 @@ public class Explain extends Prepared {
...
@@ -72,7 +72,7 @@ public class Explain extends Prepared {
Database
db
=
session
.
getDatabase
();
Database
db
=
session
.
getDatabase
();
ExpressionColumn
expr
=
new
ExpressionColumn
(
db
,
column
);
ExpressionColumn
expr
=
new
ExpressionColumn
(
db
,
column
);
Expression
[]
expressions
=
{
expr
};
Expression
[]
expressions
=
{
expr
};
result
=
new
LocalResult
(
session
,
expressions
,
1
);
result
=
db
.
getResultFactory
().
create
(
session
,
expressions
,
1
);
if
(
maxrows
>=
0
)
{
if
(
maxrows
>=
0
)
{
String
plan
;
String
plan
;
if
(
executeCommand
)
{
if
(
executeCommand
)
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/command/dml/ScriptCommand.java
浏览文件 @
75da7235
...
@@ -137,7 +137,7 @@ public class ScriptCommand extends ScriptBase {
...
@@ -137,7 +137,7 @@ public class ScriptCommand extends ScriptBase {
private
LocalResult
createResult
()
{
private
LocalResult
createResult
()
{
Expression
[]
expressions
=
{
new
ExpressionColumn
(
Expression
[]
expressions
=
{
new
ExpressionColumn
(
session
.
getDatabase
(),
new
Column
(
"SCRIPT"
,
Value
.
STRING
))
};
session
.
getDatabase
(),
new
Column
(
"SCRIPT"
,
Value
.
STRING
))
};
return
new
LocalResult
(
session
,
expressions
,
1
);
return
session
.
getDatabase
().
getResultFactory
().
create
(
session
,
expressions
,
1
);
}
}
@Override
@Override
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/command/dml/Select.java
浏览文件 @
75da7235
...
@@ -687,7 +687,7 @@ public class Select extends Query {
...
@@ -687,7 +687,7 @@ public class Select extends Query {
@Override
@Override
public
ResultInterface
queryMeta
()
{
public
ResultInterface
queryMeta
()
{
LocalResult
result
=
new
LocalResult
(
session
,
expressionArray
,
LocalResult
result
=
session
.
getDatabase
().
getResultFactory
().
create
(
session
,
expressionArray
,
visibleColumnCount
);
visibleColumnCount
);
result
.
done
();
result
.
done
();
return
result
;
return
result
;
...
@@ -858,12 +858,13 @@ public class Select extends Query {
...
@@ -858,12 +858,13 @@ public class Select extends Query {
}
}
private
LocalResult
createLocalResult
(
LocalResult
old
)
{
private
LocalResult
createLocalResult
(
LocalResult
old
)
{
return
old
!=
null
?
old
:
new
LocalResult
(
session
,
expressionArray
,
return
old
!=
null
?
old
:
session
.
getDatabase
().
getResultFactory
().
create
(
session
,
expressionArray
,
visibleColumnCount
);
visibleColumnCount
);
}
}
private
LocalResult
convertToDistinct
(
ResultInterface
result
)
{
private
LocalResult
convertToDistinct
(
ResultInterface
result
)
{
LocalResult
distinctResult
=
new
LocalResult
(
session
,
expressionArray
,
visibleColumnCount
);
LocalResult
distinctResult
=
session
.
getDatabase
().
getResultFactory
().
create
(
session
,
expressionArray
,
visibleColumnCount
);
distinctResult
.
setDistinct
();
distinctResult
.
setDistinct
();
result
.
reset
();
result
.
reset
();
while
(
result
.
next
())
{
while
(
result
.
next
())
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/command/dml/SelectUnion.java
浏览文件 @
75da7235
...
@@ -130,14 +130,14 @@ public class SelectUnion extends Query {
...
@@ -130,14 +130,14 @@ public class SelectUnion extends Query {
@Override
@Override
public
ResultInterface
queryMeta
()
{
public
ResultInterface
queryMeta
()
{
int
columnCount
=
left
.
getColumnCount
();
int
columnCount
=
left
.
getColumnCount
();
LocalResult
result
=
new
LocalResult
(
session
,
expressionArray
,
columnCount
);
LocalResult
result
=
session
.
getDatabase
().
getResultFactory
().
create
(
session
,
expressionArray
,
columnCount
);
result
.
done
();
result
.
done
();
return
result
;
return
result
;
}
}
public
LocalResult
getEmptyResult
()
{
public
LocalResult
getEmptyResult
()
{
int
columnCount
=
left
.
getColumnCount
();
int
columnCount
=
left
.
getColumnCount
();
return
new
LocalResult
(
session
,
expressionArray
,
columnCount
);
return
session
.
getDatabase
().
getResultFactory
().
create
(
session
,
expressionArray
,
columnCount
);
}
}
@Override
@Override
...
@@ -189,7 +189,7 @@ public class SelectUnion extends Query {
...
@@ -189,7 +189,7 @@ public class SelectUnion extends Query {
return
lazyResult
;
return
lazyResult
;
}
}
}
}
LocalResult
result
=
new
LocalResult
(
session
,
expressionArray
,
columnCount
);
LocalResult
result
=
session
.
getDatabase
().
getResultFactory
().
create
(
session
,
expressionArray
,
columnCount
);
if
(
sort
!=
null
)
{
if
(
sort
!=
null
)
{
result
.
setSortOrder
(
sort
);
result
.
setSortOrder
(
sort
);
}
}
...
@@ -239,7 +239,7 @@ public class SelectUnion extends Query {
...
@@ -239,7 +239,7 @@ public class SelectUnion extends Query {
break
;
break
;
}
}
case
INTERSECT:
{
case
INTERSECT:
{
LocalResult
temp
=
new
LocalResult
(
session
,
expressionArray
,
columnCount
);
LocalResult
temp
=
session
.
getDatabase
().
getResultFactory
().
create
(
session
,
expressionArray
,
columnCount
);
temp
.
setDistinct
();
temp
.
setDistinct
();
while
(
l
.
next
())
{
while
(
l
.
next
())
{
temp
.
addRow
(
convert
(
l
.
currentRow
(),
columnCount
));
temp
.
addRow
(
convert
(
l
.
currentRow
(),
columnCount
));
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/command/dml/Set.java
浏览文件 @
75da7235
...
@@ -19,6 +19,7 @@ import org.h2.expression.Expression;
...
@@ -19,6 +19,7 @@ import org.h2.expression.Expression;
import
org.h2.expression.ValueExpression
;
import
org.h2.expression.ValueExpression
;
import
org.h2.message.DbException
;
import
org.h2.message.DbException
;
import
org.h2.message.Trace
;
import
org.h2.message.Trace
;
import
org.h2.result.LocalResultFactory
;
import
org.h2.result.ResultInterface
;
import
org.h2.result.ResultInterface
;
import
org.h2.result.RowFactory
;
import
org.h2.result.RowFactory
;
import
org.h2.schema.Schema
;
import
org.h2.schema.Schema
;
...
@@ -558,6 +559,19 @@ public class Set extends Prepared {
...
@@ -558,6 +559,19 @@ public class Set extends Prepared {
}
}
break
;
break
;
}
}
case
SetTypes
.
LOCAL_RESULT_FACTORY
:
{
session
.
getUser
().
checkAdmin
();
String
localResultFactoryName
=
expression
.
getColumnName
();
Class
<
LocalResultFactory
>
localResultFactoryClass
=
JdbcUtils
.
loadUserClass
(
localResultFactoryName
);
LocalResultFactory
localResultFactory
;
try
{
localResultFactory
=
localResultFactoryClass
.
getDeclaredConstructor
().
newInstance
();
database
.
setResultFactory
(
localResultFactory
);
}
catch
(
Exception
e
)
{
throw
DbException
.
convert
(
e
);
}
break
;
}
default
:
default
:
DbException
.
throwInternalError
(
"type="
+
type
);
DbException
.
throwInternalError
(
"type="
+
type
);
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/command/dml/SetTypes.java
浏览文件 @
75da7235
...
@@ -252,7 +252,12 @@ public class SetTypes {
...
@@ -252,7 +252,12 @@ public class SetTypes {
*/
*/
public
static
final
int
AUTHENTICATOR
=
48
;
public
static
final
int
AUTHENTICATOR
=
48
;
private
static
final
int
COUNT
=
AUTHENTICATOR
+
1
;
/**
* The type of a SET LOCAL_RESULT_FACTORY statement.
*/
public
static
final
int
LOCAL_RESULT_FACTORY
=
49
;
private
static
final
int
COUNT
=
LOCAL_RESULT_FACTORY
+
1
;
private
static
final
ArrayList
<
String
>
TYPES
;
private
static
final
ArrayList
<
String
>
TYPES
;
...
@@ -311,6 +316,7 @@ public class SetTypes {
...
@@ -311,6 +316,7 @@ public class SetTypes {
list
.
add
(
BUILTIN_ALIAS_OVERRIDE
,
"BUILTIN_ALIAS_OVERRIDE"
);
list
.
add
(
BUILTIN_ALIAS_OVERRIDE
,
"BUILTIN_ALIAS_OVERRIDE"
);
list
.
add
(
COLUMN_NAME_RULES
,
"COLUMN_NAME_RULES"
);
list
.
add
(
COLUMN_NAME_RULES
,
"COLUMN_NAME_RULES"
);
list
.
add
(
AUTHENTICATOR
,
"AUTHENTICATOR"
);
list
.
add
(
AUTHENTICATOR
,
"AUTHENTICATOR"
);
list
.
add
(
LOCAL_RESULT_FACTORY
,
"LOCAL_RESULT_FACTORY"
);
TYPES
=
list
;
TYPES
=
list
;
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/engine/Database.java
浏览文件 @
75da7235
...
@@ -41,6 +41,7 @@ import org.h2.message.Trace;
...
@@ -41,6 +41,7 @@ import org.h2.message.Trace;
import
org.h2.message.TraceSystem
;
import
org.h2.message.TraceSystem
;
import
org.h2.mvstore.MVStore
;
import
org.h2.mvstore.MVStore
;
import
org.h2.mvstore.db.MVTableEngine
;
import
org.h2.mvstore.db.MVTableEngine
;
import
org.h2.result.LocalResultFactory
;
import
org.h2.result.Row
;
import
org.h2.result.Row
;
import
org.h2.result.RowFactory
;
import
org.h2.result.RowFactory
;
import
org.h2.result.SearchRow
;
import
org.h2.result.SearchRow
;
...
@@ -230,6 +231,7 @@ public class Database implements DataHandler {
...
@@ -230,6 +231,7 @@ public class Database implements DataHandler {
private
int
queryStatisticsMaxEntries
=
Constants
.
QUERY_STATISTICS_MAX_ENTRIES
;
private
int
queryStatisticsMaxEntries
=
Constants
.
QUERY_STATISTICS_MAX_ENTRIES
;
private
QueryStatisticsData
queryStatisticsData
;
private
QueryStatisticsData
queryStatisticsData
;
private
RowFactory
rowFactory
=
RowFactory
.
DEFAULT
;
private
RowFactory
rowFactory
=
RowFactory
.
DEFAULT
;
private
LocalResultFactory
resultFactory
=
LocalResultFactory
.
DEFAULT
;
private
Authenticator
authenticator
;
private
Authenticator
authenticator
;
...
@@ -369,6 +371,14 @@ public class Database implements DataHandler {
...
@@ -369,6 +371,14 @@ public class Database implements DataHandler {
this
.
rowFactory
=
rowFactory
;
this
.
rowFactory
=
rowFactory
;
}
}
public
LocalResultFactory
getResultFactory
()
{
return
resultFactory
;
}
public
void
setResultFactory
(
LocalResultFactory
resultFactory
)
{
this
.
resultFactory
=
resultFactory
;
}
public
static
void
setInitialPowerOffCount
(
int
count
)
{
public
static
void
setInitialPowerOffCount
(
int
count
)
{
initialPowerOffCount
=
count
;
initialPowerOffCount
=
count
;
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/engine/GeneratedKeys.java
浏览文件 @
75da7235
...
@@ -128,7 +128,7 @@ public final class GeneratedKeys {
...
@@ -128,7 +128,7 @@ public final class GeneratedKeys {
Database
db
=
session
.
getDatabase
();
Database
db
=
session
.
getDatabase
();
if
(
Boolean
.
FALSE
.
equals
(
generatedKeysRequest
))
{
if
(
Boolean
.
FALSE
.
equals
(
generatedKeysRequest
))
{
clear
(
null
);
clear
(
null
);
return
new
LocalResult
();
return
db
.
getResultFactory
().
create
();
}
}
ArrayList
<
ExpressionColumn
>
expressionColumns
;
ArrayList
<
ExpressionColumn
>
expressionColumns
;
if
(
Boolean
.
TRUE
.
equals
(
generatedKeysRequest
))
{
if
(
Boolean
.
TRUE
.
equals
(
generatedKeysRequest
))
{
...
@@ -152,7 +152,7 @@ public final class GeneratedKeys {
...
@@ -152,7 +152,7 @@ public final class GeneratedKeys {
}
}
}
else
{
}
else
{
clear
(
null
);
clear
(
null
);
return
new
LocalResult
();
return
db
.
getResultFactory
().
create
();
}
}
}
else
if
(
generatedKeysRequest
instanceof
String
[])
{
}
else
if
(
generatedKeysRequest
instanceof
String
[])
{
if
(
table
!=
null
)
{
if
(
table
!=
null
)
{
...
@@ -182,18 +182,19 @@ public final class GeneratedKeys {
...
@@ -182,18 +182,19 @@ public final class GeneratedKeys {
}
}
}
else
{
}
else
{
clear
(
null
);
clear
(
null
);
return
new
LocalResult
();
return
db
.
getResultFactory
().
create
();
}
}
}
else
{
}
else
{
clear
(
null
);
clear
(
null
);
return
new
LocalResult
();
return
db
.
getResultFactory
().
create
();
}
}
int
columnCount
=
expressionColumns
.
size
();
int
columnCount
=
expressionColumns
.
size
();
if
(
columnCount
==
0
)
{
if
(
columnCount
==
0
)
{
clear
(
null
);
clear
(
null
);
return
new
LocalResult
();
return
db
.
getResultFactory
().
create
();
}
}
LocalResult
result
=
new
LocalResult
(
session
,
expressionColumns
.
toArray
(
new
Expression
[
0
]),
columnCount
);
LocalResult
result
=
db
.
getResultFactory
().
create
(
session
,
expressionColumns
.
toArray
(
new
Expression
[
0
]),
columnCount
);
for
(
Map
<
Column
,
Value
>
map
:
data
)
{
for
(
Map
<
Column
,
Value
>
map
:
data
)
{
Value
[]
row
=
new
Value
[
columnCount
];
Value
[]
row
=
new
Value
[
columnCount
];
for
(
Map
.
Entry
<
Column
,
Value
>
entry
:
map
.
entrySet
())
{
for
(
Map
.
Entry
<
Column
,
Value
>
entry
:
map
.
entrySet
())
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/TableFunction.java
浏览文件 @
75da7235
...
@@ -86,7 +86,7 @@ public class TableFunction extends Function {
...
@@ -86,7 +86,7 @@ public class TableFunction extends Function {
ExpressionColumn
col
=
new
ExpressionColumn
(
db
,
c
);
ExpressionColumn
col
=
new
ExpressionColumn
(
db
,
c
);
header
[
i
]
=
col
;
header
[
i
]
=
col
;
}
}
LocalResult
result
=
new
LocalResult
(
session
,
header
,
len
);
LocalResult
result
=
db
.
getResultFactory
().
create
(
session
,
header
,
len
);
if
(
distinctRows
)
{
if
(
distinctRows
)
{
result
.
setDistinct
();
result
.
setDistinct
();
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/result/LocalResult.java
浏览文件 @
75da7235
差异被折叠。
点击展开。
h2/src/main/org/h2/result/LocalResultFactory.java
0 → 100644
浏览文件 @
75da7235
/*
* Copyright 2004-2018 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
.
result
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
org.h2.engine.Session
;
import
org.h2.expression.Expression
;
import
org.h2.message.DbException
;
import
org.h2.value.DataType
;
import
org.h2.value.Value
;
/**
* Creates local result.
*/
public
abstract
class
LocalResultFactory
{
/**
* Default implementation of local result factory.
*/
public
static
final
LocalResultFactory
DEFAULT
=
new
DefaultLocalResultFactory
();
/**
* Create a local result object.
*
* @param session the session
* @param expressions the expression array
* @param visibleColumnCount the number of visible columns
* @return object to collect local result.
*/
public
abstract
LocalResult
create
(
Session
session
,
Expression
[]
expressions
,
int
visibleColumnCount
);
/**
* Create a local result object.
* @return object to collect local result.
*/
public
abstract
LocalResult
create
();
/**
* Construct a local result set by reading all data from a regular result
* set.
*
* @param session the session
* @param rs the result set
* @param maxrows the maximum number of rows to read (0 for no limit)
* @return the local result set
*/
public
static
LocalResult
read
(
Session
session
,
ResultSet
rs
,
int
maxrows
)
{
Expression
[]
cols
=
Expression
.
getExpressionColumns
(
session
,
rs
);
int
columnCount
=
cols
.
length
;
LocalResult
result
=
session
.
getDatabase
().
getResultFactory
().
create
(
session
,
cols
,
columnCount
);
try
{
for
(
int
i
=
0
;
(
maxrows
==
0
||
i
<
maxrows
)
&&
rs
.
next
();
i
++)
{
Value
[]
list
=
new
Value
[
columnCount
];
for
(
int
j
=
0
;
j
<
columnCount
;
j
++)
{
int
type
=
result
.
getColumnType
(
j
);
list
[
j
]
=
DataType
.
readValue
(
session
,
rs
,
j
+
1
,
type
);
}
result
.
addRow
(
list
);
}
}
catch
(
SQLException
e
)
{
throw
DbException
.
convert
(
e
);
}
result
.
done
();
return
result
;
}
/**
* Default implementation of local result factory.
*/
private
static
final
class
DefaultLocalResultFactory
extends
LocalResultFactory
{
/**
*
*/
DefaultLocalResultFactory
()
{
//No-op.
}
@Override
public
LocalResult
create
(
Session
session
,
Expression
[]
expressions
,
int
visibleColumnCount
)
{
return
new
LocalResultImpl
(
session
,
expressions
,
visibleColumnCount
);
}
@Override
public
LocalResult
create
()
{
return
new
LocalResultImpl
();
}
}
}
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/result/LocalResultImpl.java
0 → 100644
浏览文件 @
75da7235
差异被折叠。
点击展开。
h2/src/main/org/h2/table/FunctionTable.java
浏览文件 @
75da7235
...
@@ -19,6 +19,7 @@ import org.h2.index.Index;
...
@@ -19,6 +19,7 @@ import org.h2.index.Index;
import
org.h2.index.IndexType
;
import
org.h2.index.IndexType
;
import
org.h2.message.DbException
;
import
org.h2.message.DbException
;
import
org.h2.result.LocalResult
;
import
org.h2.result.LocalResult
;
import
org.h2.result.LocalResultFactory
;
import
org.h2.result.ResultInterface
;
import
org.h2.result.ResultInterface
;
import
org.h2.result.Row
;
import
org.h2.result.Row
;
import
org.h2.schema.Schema
;
import
org.h2.schema.Schema
;
...
@@ -194,7 +195,7 @@ public class FunctionTable extends Table {
...
@@ -194,7 +195,7 @@ public class FunctionTable extends Table {
cachedResult
.
reset
();
cachedResult
.
reset
();
return
cachedResult
;
return
cachedResult
;
}
}
LocalResult
result
=
LocalResult
.
read
(
session
,
v
.
getResultSet
(),
0
);
LocalResult
result
=
LocalResult
Factory
.
read
(
session
,
v
.
getResultSet
(),
0
);
if
(
function
.
isDeterministic
())
{
if
(
function
.
isDeterministic
())
{
cachedResult
=
result
;
cachedResult
=
result
;
cachedValue
=
v
;
cachedValue
=
v
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/TestAll.java
浏览文件 @
75da7235
...
@@ -193,6 +193,7 @@ import org.h2.test.unit.TestIntIntHashMap;
...
@@ -193,6 +193,7 @@ import org.h2.test.unit.TestIntIntHashMap;
import
org.h2.test.unit.TestIntPerfectHash
;
import
org.h2.test.unit.TestIntPerfectHash
;
import
org.h2.test.unit.TestInterval
;
import
org.h2.test.unit.TestInterval
;
import
org.h2.test.unit.TestJmx
;
import
org.h2.test.unit.TestJmx
;
import
org.h2.test.unit.TestLocalResultFactory
;
import
org.h2.test.unit.TestLocale
;
import
org.h2.test.unit.TestLocale
;
import
org.h2.test.unit.TestMathUtils
;
import
org.h2.test.unit.TestMathUtils
;
import
org.h2.test.unit.TestMemoryUnmapper
;
import
org.h2.test.unit.TestMemoryUnmapper
;
...
@@ -980,6 +981,7 @@ kill -9 `jps -l | grep "org.h2.test." | cut -d " " -f 1`
...
@@ -980,6 +981,7 @@ kill -9 `jps -l | grep "org.h2.test." | cut -d " " -f 1`
addTest
(
new
TestTraceSystem
());
addTest
(
new
TestTraceSystem
());
addTest
(
new
TestUtils
());
addTest
(
new
TestUtils
());
addTest
(
new
TestValueHashMap
());
addTest
(
new
TestValueHashMap
());
addTest
(
new
TestLocalResultFactory
());
runAddedTests
();
runAddedTests
();
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/unit/TestLocalResultFactory.java
0 → 100644
浏览文件 @
75da7235
/*
* Copyright 2004-2018 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.DriverManager
;
import
java.sql.Statement
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
org.h2.engine.Session
;
import
org.h2.expression.Expression
;
import
org.h2.result.LocalResult
;
import
org.h2.result.LocalResultFactory
;
import
org.h2.test.TestBase
;
/**
* Test {@link LocalResultFactory} setting.
*/
public
class
TestLocalResultFactory
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
Exception
{
try
(
Connection
conn
=
DriverManager
.
getConnection
(
"jdbc:h2:mem:localResultFactory;LOCAL_RESULT_FACTORY=\""
+
MyTestLocalResultFactory
.
class
.
getName
()
+
'"'
))
{
Statement
stat
=
conn
.
createStatement
();
stat
.
execute
(
"create table t1(id int, name varchar)"
);
for
(
int
i
=
0
;
i
<
1000
;
i
++)
{
stat
.
execute
(
"insert into t1 values("
+
i
+
", 'name')"
);
}
assertEquals
(
MyTestLocalResultFactory
.
COUNTER
.
get
(),
0
);
stat
.
execute
(
"select * from t1"
);
assertEquals
(
MyTestLocalResultFactory
.
COUNTER
.
get
(),
1
);
}
}
/**
* Test local result factory.
*/
public
static
class
MyTestLocalResultFactory
extends
LocalResultFactory
{
static
final
AtomicInteger
COUNTER
=
new
AtomicInteger
();
@Override
public
LocalResult
create
(
Session
session
,
Expression
[]
expressions
,
int
visibleColumnCount
)
{
COUNTER
.
incrementAndGet
();
return
LocalResultFactory
.
DEFAULT
.
create
(
session
,
expressions
,
visibleColumnCount
);
}
@Override
public
LocalResult
create
()
{
COUNTER
.
incrementAndGet
();
return
LocalResultFactory
.
DEFAULT
.
create
();
}
}
}
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论