}
return;
}
case FUNC_TIMESTAMP : {
Type argType = nodes[0].dataType;
if (nodes[1] == null) {
if (argType == null) {
argType = nodes[0].dataType = Type.SQL_VARCHAR_DEFAULT;
}
if (argType.isCharacterType()
|| argType.typeCode == Types.SQL_TIMESTAMP
|| argType.typeCode
== Types.SQL_TIMESTAMP_WITH_TIME_ZONE) {}
else {
throw Error.error(ErrorCode.X_42561);
}
} else {
if (argType == null) {
if (nodes[1].dataType == null) {
argType = nodes[0].dataType = nodes[1].dataType =
Type.SQL_VARCHAR_DEFAULT;
} else {
if (nodes[1].dataType.isCharacterType()) {
argType = nodes[0].dataType =
Type.SQL_VARCHAR_DEFAULT;
} else {
argType = nodes[0].dataType = Type.SQL_DATE;
}
}
}
if (nodes[1].dataType == null) {
if (argType.isCharacterType()) {
nodes[1].dataType = Type.SQL_VARCHAR_DEFAULT;
} else if (argType.typeCode == Types.SQL_DATE) {
nodes[1].dataType = Type.SQL_TIME;
}
}
if ((argType.typeCode == Types.SQL_DATE && nodes[1]
.dataType.typeCode == Types.SQL_TIME) || argType
.isCharacterType() && nodes[1].dataType
.isCharacterType()) {}
else {
throw Error.error(ErrorCode.X_42561);
}