本文整理汇总了Java中org.hsqldb.types.Type.getAggregateType方法的典型用法代码示例。如果您正苦于以下问题:Java Type.getAggregateType方法的具体用法?Java Type.getAggregateType怎么用?Java Type.getAggregateType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.hsqldb.types.Type
的用法示例。
在下文中一共展示了Type.getAggregateType方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: resolveTypes
import org.hsqldb.types.Type; //导入方法依赖的package包/类
public void resolveTypes(Session session, Expression parent) {
switch (opType) {
case OpTypes.DEFAULT :
if (parent != null && parent.opType != OpTypes.ROW) {
throw Error.error(ErrorCode.X_42544);
}
break;
case OpTypes.COALESCE : {
Type type = null;
nullability = SchemaObject.Nullability.NO_NULLS;
for (int i = 0; i < nodes.length; i++) {
type = Type.getAggregateType(nodes[i].dataType, type);
}
dataType = type;
break;
}
}
}
示例2: resolveTypesPartOne
import org.hsqldb.types.Type; //导入方法依赖的package包/类
void resolveTypesPartOne(Session session) {
if (isPartOneResolved) {
return;
}
resolveExpressionTypes(session);
resolveAggregates();
for (int i = 0; i < unionColumnTypes.length; i++) {
unionColumnTypes[i] = Type.getAggregateType(unionColumnTypes[i],
exprColumns[i].getDataType());
}
isPartOneResolved = true;
}
示例3: resolveTypes
import org.hsqldb.types.Type; //导入方法依赖的package包/类
public void resolveTypes(Session session, Expression parent) {
switch (opType) {
case OpTypes.DEFAULT :
if (parent != null && parent.opType != OpTypes.ROW) {
throw Error.error(ErrorCode.X_42544);
}
break;
case OpTypes.COALESCE : {
Type type = null;
for (int i = 0; i < nodes.length; i++) {
type = Type.getAggregateType(nodes[i].dataType, type);
}
dataType = type;
break;
}
}
}
示例4: resolveTypesForAlternative
import org.hsqldb.types.Type; //导入方法依赖的package包/类
void resolveTypesForAlternative(Session session) {
if (nodes[LEFT].dataType == null) {
nodes[LEFT].dataType = nodes[RIGHT].dataType;
}
if (nodes[RIGHT].dataType == null) {
nodes[RIGHT].dataType = nodes[LEFT].dataType;
}
if (exprSubType == OpTypes.CAST) {
if (nodes[RIGHT].dataType == null) {
nodes[RIGHT].dataType = nodes[LEFT].dataType =
Type.SQL_VARCHAR_DEFAULT;;
}
dataType = nodes[RIGHT].dataType;
if (!nodes[RIGHT].dataType.equals(nodes[LEFT].dataType)) {
if (dataType.isCharacterType()) {
dataType = Type.SQL_VARCHAR_DEFAULT;
}
nodes[LEFT] = new ExpressionOp(nodes[LEFT], dataType);
}
} else {
dataType = Type.getAggregateType(nodes[LEFT].dataType, dataType);
dataType = Type.getAggregateType(nodes[RIGHT].dataType, dataType);
}
}
示例5: resolveTypesPartOne
import org.hsqldb.types.Type; //导入方法依赖的package包/类
void resolveTypesPartOne(Session session) {
resolveExpressionTypes(session);
setRangeVariableConditions();
resolveAggregates();
for (int i = 0; i < unionColumnMap.length; i++) {
unionColumnTypes[i] = Type.getAggregateType(unionColumnTypes[i],
exprColumns[i].getDataType());
}
}
示例6: resolveTypesForCaseWhen
import org.hsqldb.types.Type; //导入方法依赖的package包/类
/**
* For CASE WHEN and its special cases section 9.3 of the SQL standard
* on type aggregation is implemented.
*/
void resolveTypesForCaseWhen(Session session, Expression parent) {
nodes[RIGHT].resolveTypes(session, this);
Expression expr = this;
while (expr.opType == OpTypes.CASEWHEN) {
if (expr.exprSubType == OpTypes.CAST) {
dataType = expr.nodes[RIGHT].dataType;
} else {
dataType = Type.getAggregateType(expr.nodes[RIGHT].dataType,
dataType);
}
if (expr.nodes[RIGHT].nodes[RIGHT].opType == OpTypes.CASEWHEN) {
expr = expr.nodes[RIGHT].nodes[RIGHT];
} else {
expr = expr.nodes[RIGHT].nodes[LEFT];
}
}
expr = this;
while (expr.opType == OpTypes.CASEWHEN) {
if (expr.nodes[RIGHT].dataType == null) {
expr.nodes[RIGHT].dataType = dataType;
}
if (expr.nodes[RIGHT].nodes[RIGHT].dataType == null) {
expr.nodes[RIGHT].nodes[RIGHT].dataType = dataType;
}
if (expr.nodes[RIGHT].nodes[LEFT].dataType == null) {
expr.nodes[RIGHT].nodes[LEFT].dataType = dataType;
}
if (expr.nodes[RIGHT].nodes[RIGHT].opType == OpTypes.CASEWHEN) {
expr = expr.nodes[RIGHT].nodes[RIGHT];
} else {
expr = expr.nodes[RIGHT].nodes[LEFT];
}
}
expr = this;
while (expr.opType == OpTypes.CASEWHEN) {
expr.nodes[LEFT].resolveTypes(session, expr);
if (expr.nodes[LEFT].isUnresolvedParam()) {
expr.nodes[LEFT].dataType = Type.SQL_BOOLEAN;
}
expr.nodes[RIGHT].nodes[LEFT].resolveTypes(session,
expr.nodes[RIGHT]);
if (expr.nodes[RIGHT].nodes[RIGHT].opType != OpTypes.CASEWHEN) {
expr.nodes[RIGHT].nodes[RIGHT].resolveTypes(session,
expr.nodes[RIGHT]);
}
expr = expr.nodes[RIGHT].nodes[RIGHT];
}
if (parent == null || parent.opType != OpTypes.ALTERNATIVE) {
if (dataType == null || dataType.typeCode == Types.SQL_ALL_TYPES) {
throw Error.error(ErrorCode.X_42567);
}
}
}
示例7: resolveTypesForCaseWhen
import org.hsqldb.types.Type; //导入方法依赖的package包/类
/**
* For CASE WHEN and its special cases section 9.3 of the SQL standard
* on type aggregation is implemented.
*/
void resolveTypesForCaseWhen(Session session) {
if (dataType != null) {
return;
}
Expression expr = this;
while (expr.opType == OpTypes.CASEWHEN) {
expr.nodes[LEFT].resolveTypes(session, expr);
if (expr.nodes[LEFT].isParam) {
expr.nodes[LEFT].dataType = Type.SQL_BOOLEAN;
}
expr.nodes[RIGHT].nodes[LEFT].resolveTypes(session, nodes[RIGHT]);
expr.nodes[RIGHT].nodes[RIGHT].resolveTypes(session, nodes[RIGHT]);
expr = expr.nodes[RIGHT].nodes[RIGHT];
}
expr = this;
while (expr.opType == OpTypes.CASEWHEN) {
dataType =
Type.getAggregateType(expr.nodes[RIGHT].nodes[LEFT].dataType,
dataType);
dataType =
Type.getAggregateType(expr.nodes[RIGHT].nodes[RIGHT].dataType,
dataType);
expr = expr.nodes[RIGHT].nodes[RIGHT];
}
expr = this;
while (expr.opType == OpTypes.CASEWHEN) {
if (expr.nodes[RIGHT].nodes[LEFT].dataType == null) {
expr.nodes[RIGHT].nodes[LEFT].dataType = dataType;
}
if (expr.nodes[RIGHT].nodes[RIGHT].dataType == null) {
expr.nodes[RIGHT].nodes[RIGHT].dataType = dataType;
}
if (expr.nodes[RIGHT].dataType == null) {
expr.nodes[RIGHT].dataType = dataType;
}
expr = expr.nodes[RIGHT].nodes[RIGHT];
}
if (dataType == null) {
throw Error.error(ErrorCode.X_42567);
}
}
示例8: prepareTable
import org.hsqldb.types.Type; //导入方法依赖的package包/类
void prepareTable(Session session, Expression row, int degree) {
if (nodeDataTypes != null) {
return;
}
for (int i = 0; i < nodes.length; i++) {
Expression e = nodes[i];
if (e.opType == OpTypes.ROW) {
if (degree != e.nodes.length) {
throw Error.error(ErrorCode.X_42564);
}
} else if (degree == 1) {
nodes[i] = new Expression(OpTypes.ROW);
nodes[i].nodes = new Expression[]{ e };
} else {
throw Error.error(ErrorCode.X_42564);
}
}
nodeDataTypes = new Type[degree];
for (int j = 0; j < degree; j++) {
Type type = row == null ? null
: row.nodes[j].dataType;
for (int i = 0; i < nodes.length; i++) {
type = Type.getAggregateType(nodes[i].nodes[j].dataType, type);
}
if (type == null) {
throw Error.error(ErrorCode.X_42567);
}
nodeDataTypes[j] = type;
if (row != null && row.nodes[j].isParam) {
row.nodes[j].dataType = type;
}
for (int i = 0; i < nodes.length; i++) {
if (nodes[i].nodes[j].isParam) {
nodes[i].nodes[j].dataType = nodeDataTypes[j];
continue;
}
if (nodes[i].nodes[j].opType == OpTypes.VALUE) {
if (nodes[i].nodes[j].valueData == null) {
nodes[i].nodes[j].dataType = nodeDataTypes[j];
}
}
}
if (nodeDataTypes[j].isCharacterType()
&& !((CharacterType) nodeDataTypes[j])
.isEqualIdentical()) {
// collation issues
}
}
}
示例9: resolveTypesForCaseWhen
import org.hsqldb.types.Type; //导入方法依赖的package包/类
/**
* For CASE WHEN and its special cases section 9.3 of the SQL standard
* on type aggregation is implemented.
*/
void resolveTypesForCaseWhen(Session session) {
if (dataType != null) {
return;
}
Expression expr = this;
while (expr.opType == OpTypes.CASEWHEN) {
expr.nodes[LEFT].resolveTypes(session, expr);
if (expr.nodes[LEFT].isUnresolvedParam()) {
expr.nodes[LEFT].dataType = Type.SQL_BOOLEAN;
}
expr.nodes[RIGHT].nodes[LEFT].resolveTypes(session,
expr.nodes[RIGHT]);
if (expr.nodes[RIGHT].nodes[RIGHT].opType != OpTypes.CASEWHEN) {
expr.nodes[RIGHT].nodes[RIGHT].resolveTypes(session,
expr.nodes[RIGHT]);
}
expr = expr.nodes[RIGHT].nodes[RIGHT];
}
if (exprSubType == OpTypes.CAST) {
if (nodes[RIGHT].nodes[RIGHT].dataType != null
&& nodes[RIGHT].nodes[RIGHT].dataType
!= nodes[RIGHT].nodes[LEFT].dataType) {
Type castType = nodes[RIGHT].nodes[RIGHT].dataType;
if (castType.isCharacterType()) {
castType = Type.SQL_VARCHAR_DEFAULT;
}
nodes[RIGHT].nodes[LEFT] =
new ExpressionOp(nodes[RIGHT].nodes[LEFT], castType);
}
}
expr = this;
while (expr.opType == OpTypes.CASEWHEN) {
dataType =
Type.getAggregateType(expr.nodes[RIGHT].nodes[LEFT].dataType,
dataType);
dataType =
Type.getAggregateType(expr.nodes[RIGHT].nodes[RIGHT].dataType,
dataType);
expr = expr.nodes[RIGHT].nodes[RIGHT];
}
expr = this;
while (expr.opType == OpTypes.CASEWHEN) {
if (expr.nodes[RIGHT].nodes[LEFT].dataType == null) {
expr.nodes[RIGHT].nodes[LEFT].dataType = dataType;
}
if (expr.nodes[RIGHT].nodes[RIGHT].dataType == null) {
expr.nodes[RIGHT].nodes[RIGHT].dataType = dataType;
}
if (expr.nodes[RIGHT].dataType == null) {
expr.nodes[RIGHT].dataType = dataType;
}
expr = expr.nodes[RIGHT].nodes[RIGHT];
}
if (dataType == null || dataType.typeCode == Types.SQL_ALL_TYPES) {
throw Error.error(ErrorCode.X_42567);
}
}