提交 12c060fc authored 作者: Thomas Mueller's avatar Thomas Mueller

Formatting

上级 6f5fa525
...@@ -46,9 +46,11 @@ public class CreateFunctionAlias extends SchemaCommand { ...@@ -46,9 +46,11 @@ public class CreateFunctionAlias extends SchemaCommand {
int id = getObjectId(); int id = getObjectId();
FunctionAlias functionAlias; FunctionAlias functionAlias;
if (javaClassMethod != null) { if (javaClassMethod != null) {
functionAlias = FunctionAlias.newInstance(getSchema(), id, aliasName, javaClassMethod, force, bufferResultSetToLocalTemp); functionAlias = FunctionAlias.newInstance(
getSchema(), id, aliasName, javaClassMethod, force, bufferResultSetToLocalTemp);
} else { } else {
functionAlias = FunctionAlias.newInstanceFromSource(getSchema(), id, aliasName, source, force, bufferResultSetToLocalTemp); functionAlias = FunctionAlias.newInstanceFromSource(
getSchema(), id, aliasName, source, force, bufferResultSetToLocalTemp);
} }
functionAlias.setDeterministic(deterministic); functionAlias.setDeterministic(deterministic);
db.addSchemaObject(session, functionAlias); db.addSchemaObject(session, functionAlias);
...@@ -83,6 +85,8 @@ public class CreateFunctionAlias extends SchemaCommand { ...@@ -83,6 +85,8 @@ public class CreateFunctionAlias extends SchemaCommand {
/** /**
* Should the return value ResultSet be buffered in a local temporary file? * Should the return value ResultSet be buffered in a local temporary file?
*
* @param b the new value
*/ */
public void setBufferResultSetToLocalTemp(boolean b) { public void setBufferResultSetToLocalTemp(boolean b) {
this.bufferResultSetToLocalTemp = b; this.bufferResultSetToLocalTemp = b;
......
...@@ -110,9 +110,6 @@ public class Set extends Prepared { ...@@ -110,9 +110,6 @@ public class Set extends Prepared {
} }
case SetTypes.COLLATION: { case SetTypes.COLLATION: {
session.getUser().checkAdmin(); session.getUser().checkAdmin();
final boolean binaryUnsigned = database.getCompareMode().isBinaryUnsigned(); final boolean binaryUnsigned = database.getCompareMode().isBinaryUnsigned();
CompareMode compareMode; CompareMode compareMode;
StringBuilder buff = new StringBuilder(stringValue); StringBuilder buff = new StringBuilder(stringValue);
......
...@@ -60,9 +60,12 @@ public class FunctionAlias extends SchemaObjectBase { ...@@ -60,9 +60,12 @@ public class FunctionAlias extends SchemaObjectBase {
* @param name the name * @param name the name
* @param javaClassMethod the class and method name * @param javaClassMethod the class and method name
* @param force create the object even if the class or method does not exist * @param force create the object even if the class or method does not exist
* @param bufferResultSetToLocalTemp whether the result should be buffered
* @return the database object * @return the database object
*/ */
public static FunctionAlias newInstance(Schema schema, int id, String name, String javaClassMethod, boolean force, boolean bufferResultSetToLocalTemp) { public static FunctionAlias newInstance(
Schema schema, int id, String name, String javaClassMethod,
boolean force, boolean bufferResultSetToLocalTemp) {
FunctionAlias alias = new FunctionAlias(schema, id, name); FunctionAlias alias = new FunctionAlias(schema, id, name);
int paren = javaClassMethod.indexOf('('); int paren = javaClassMethod.indexOf('(');
int lastDot = javaClassMethod.lastIndexOf('.', paren < 0 ? javaClassMethod.length() : paren); int lastDot = javaClassMethod.lastIndexOf('.', paren < 0 ? javaClassMethod.length() : paren);
...@@ -84,9 +87,12 @@ public class FunctionAlias extends SchemaObjectBase { ...@@ -84,9 +87,12 @@ public class FunctionAlias extends SchemaObjectBase {
* @param name the name * @param name the name
* @param source the source code * @param source the source code
* @param force create the object even if the class or method does not exist * @param force create the object even if the class or method does not exist
* @param bufferResultSetToLocalTemp whether the result should be buffered
* @return the database object * @return the database object
*/ */
public static FunctionAlias newInstanceFromSource(Schema schema, int id, String name, String source, boolean force, boolean bufferResultSetToLocalTemp) { public static FunctionAlias newInstanceFromSource(
Schema schema, int id, String name, String source, boolean force,
boolean bufferResultSetToLocalTemp) {
FunctionAlias alias = new FunctionAlias(schema, id, name); FunctionAlias alias = new FunctionAlias(schema, id, name);
alias.source = source; alias.source = source;
alias.bufferResultSetToLocalTemp = bufferResultSetToLocalTemp; alias.bufferResultSetToLocalTemp = bufferResultSetToLocalTemp;
...@@ -513,6 +519,8 @@ public class FunctionAlias extends SchemaObjectBase { ...@@ -513,6 +519,8 @@ public class FunctionAlias extends SchemaObjectBase {
/** /**
* Should the return value ResultSet be buffered in a local temporary file? * Should the return value ResultSet be buffered in a local temporary file?
*
* @return true if yes
*/ */
public boolean isBufferResultSetToLocalTemp() { public boolean isBufferResultSetToLocalTemp() {
return bufferResultSetToLocalTemp; return bufferResultSetToLocalTemp;
......
...@@ -590,7 +590,8 @@ public class Function extends Expression implements FunctionCall { ...@@ -590,7 +590,8 @@ public class Function extends Expression implements FunctionCall {
result = ValueLong.get(16 * length(v0)); result = ValueLong.get(16 * length(v0));
break; break;
case CHAR: case CHAR:
result = ValueString.get(String.valueOf((char) v0.getInt()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(String.valueOf((char) v0.getInt()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case CHAR_LENGTH: case CHAR_LENGTH:
case LENGTH: case LENGTH:
...@@ -621,7 +622,8 @@ public class Function extends Expression implements FunctionCall { ...@@ -621,7 +622,8 @@ public class Function extends Expression implements FunctionCall {
&& !StringUtils.isNullOrEmpty(tmp)) { && !StringUtils.isNullOrEmpty(tmp)) {
tmp = separator.concat(tmp); tmp = separator.concat(tmp);
} }
result = ValueString.get(result.getString().concat(tmp), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(result.getString().concat(tmp),
database.getMode().treatEmptyStringsAsNull);
} }
} }
if (info.type == CONCAT_WS) { if (info.type == CONCAT_WS) {
...@@ -632,19 +634,23 @@ public class Function extends Expression implements FunctionCall { ...@@ -632,19 +634,23 @@ public class Function extends Expression implements FunctionCall {
break; break;
} }
case HEXTORAW: case HEXTORAW:
result = ValueString.get(hexToRaw(v0.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(hexToRaw(v0.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case LOWER: case LOWER:
case LCASE: case LCASE:
// TODO this is locale specific, need to document or provide a way // TODO this is locale specific, need to document or provide a way
// to set the locale // to set the locale
result = ValueString.get(v0.getString().toLowerCase(), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(v0.getString().toLowerCase(),
database.getMode().treatEmptyStringsAsNull);
break; break;
case RAWTOHEX: case RAWTOHEX:
result = ValueString.get(rawToHex(v0.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(rawToHex(v0.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case SOUNDEX: case SOUNDEX:
result = ValueString.get(getSoundex(v0.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(getSoundex(v0.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case SPACE: { case SPACE: {
int len = Math.max(0, v0.getInt()); int len = Math.max(0, v0.getInt());
...@@ -652,39 +658,48 @@ public class Function extends Expression implements FunctionCall { ...@@ -652,39 +658,48 @@ public class Function extends Expression implements FunctionCall {
for (int i = len - 1; i >= 0; i--) { for (int i = len - 1; i >= 0; i--) {
chars[i] = ' '; chars[i] = ' ';
} }
result = ValueString.get(new String(chars), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(new String(chars),
database.getMode().treatEmptyStringsAsNull);
break; break;
} }
case UPPER: case UPPER:
case UCASE: case UCASE:
// TODO this is locale specific, need to document or provide a way // TODO this is locale specific, need to document or provide a way
// to set the locale // to set the locale
result = ValueString.get(v0.getString().toUpperCase(), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(v0.getString().toUpperCase(),
database.getMode().treatEmptyStringsAsNull);
break; break;
case STRINGENCODE: case STRINGENCODE:
result = ValueString.get(StringUtils.javaEncode(v0.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.javaEncode(v0.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case STRINGDECODE: case STRINGDECODE:
result = ValueString.get(StringUtils.javaDecode(v0.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.javaDecode(v0.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case STRINGTOUTF8: case STRINGTOUTF8:
result = ValueBytes.getNoCopy(v0.getString().getBytes(Constants.UTF8)); result = ValueBytes.getNoCopy(v0.getString().getBytes(Constants.UTF8));
break; break;
case UTF8TOSTRING: case UTF8TOSTRING:
result = ValueString.get(new String(v0.getBytesNoCopy(), Constants.UTF8), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(new String(v0.getBytesNoCopy(), Constants.UTF8),
database.getMode().treatEmptyStringsAsNull);
break; break;
case XMLCOMMENT: case XMLCOMMENT:
result = ValueString.get(StringUtils.xmlComment(v0.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.xmlComment(v0.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case XMLCDATA: case XMLCDATA:
result = ValueString.get(StringUtils.xmlCData(v0.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.xmlCData(v0.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case XMLSTARTDOC: case XMLSTARTDOC:
result = ValueString.get(StringUtils.xmlStartDoc(), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.xmlStartDoc(),
database.getMode().treatEmptyStringsAsNull);
break; break;
case DAY_NAME: { case DAY_NAME: {
SimpleDateFormat dayName = new SimpleDateFormat("EEEE", Locale.ENGLISH); SimpleDateFormat dayName = new SimpleDateFormat("EEEE", Locale.ENGLISH);
result = ValueString.get(dayName.format(v0.getDate()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(dayName.format(v0.getDate()),
database.getMode().treatEmptyStringsAsNull);
break; break;
} }
case DAY_OF_MONTH: case DAY_OF_MONTH:
...@@ -707,7 +722,8 @@ public class Function extends Expression implements FunctionCall { ...@@ -707,7 +722,8 @@ public class Function extends Expression implements FunctionCall {
break; break;
case MONTH_NAME: { case MONTH_NAME: {
SimpleDateFormat monthName = new SimpleDateFormat("MMMM", Locale.ENGLISH); SimpleDateFormat monthName = new SimpleDateFormat("MMMM", Locale.ENGLISH);
result = ValueString.get(monthName.format(v0.getDate()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(monthName.format(v0.getDate()),
database.getMode().treatEmptyStringsAsNull);
break; break;
} }
case QUARTER: case QUARTER:
...@@ -757,11 +773,13 @@ public class Function extends Expression implements FunctionCall { ...@@ -757,11 +773,13 @@ public class Function extends Expression implements FunctionCall {
break; break;
} }
case DATABASE: case DATABASE:
result = ValueString.get(database.getShortName(), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(database.getShortName(),
database.getMode().treatEmptyStringsAsNull);
break; break;
case USER: case USER:
case CURRENT_USER: case CURRENT_USER:
result = ValueString.get(session.getUser().getName(), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(session.getUser().getName(),
database.getMode().treatEmptyStringsAsNull);
break; break;
case IDENTITY: case IDENTITY:
result = session.getLastIdentity(); result = session.getLastIdentity();
...@@ -777,7 +795,8 @@ public class Function extends Expression implements FunctionCall { ...@@ -777,7 +795,8 @@ public class Function extends Expression implements FunctionCall {
break; break;
case DATABASE_PATH: { case DATABASE_PATH: {
String path = database.getDatabasePath(); String path = database.getDatabasePath();
result = path == null ? (Value) ValueNull.INSTANCE : ValueString.get(path, database.getMode().treatEmptyStringsAsNull); result = path == null ? (Value) ValueNull.INSTANCE : ValueString.get(path,
database.getMode().treatEmptyStringsAsNull);
break; break;
} }
case LOCK_TIMEOUT: case LOCK_TIMEOUT:
...@@ -807,7 +826,8 @@ public class Function extends Expression implements FunctionCall { ...@@ -807,7 +826,8 @@ public class Function extends Expression implements FunctionCall {
result = ValueInt.get(database.getLockMode()); result = ValueInt.get(database.getLockMode());
break; break;
case SCHEMA: case SCHEMA:
result = ValueString.get(session.getCurrentSchemaName(), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(session.getCurrentSchemaName(),
database.getMode().treatEmptyStringsAsNull);
break; break;
case SESSION_ID: case SESSION_ID:
result = ValueInt.get(session.getId()); result = ValueInt.get(session.getId());
...@@ -1110,12 +1130,14 @@ public class Function extends Expression implements FunctionCall { ...@@ -1110,12 +1130,14 @@ public class Function extends Expression implements FunctionCall {
if (v1 == ValueNull.INSTANCE || v2 == ValueNull.INSTANCE) { if (v1 == ValueNull.INSTANCE || v2 == ValueNull.INSTANCE) {
result = v1; result = v1;
} else { } else {
result = ValueString.get(insert(v0.getString(), v1.getInt(), v2.getInt(), v3.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(insert(v0.getString(), v1.getInt(), v2.getInt(), v3.getString()),
database.getMode().treatEmptyStringsAsNull);
} }
break; break;
} }
case LEFT: case LEFT:
result = ValueString.get(left(v0.getString(), v1.getInt()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(left(v0.getString(), v1.getInt()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case LOCATE: { case LOCATE: {
int start = v2 == null ? 0 : v2.getInt(); int start = v2 == null ? 0 : v2.getInt();
...@@ -1129,27 +1151,33 @@ public class Function extends Expression implements FunctionCall { ...@@ -1129,27 +1151,33 @@ public class Function extends Expression implements FunctionCall {
} }
case REPEAT: { case REPEAT: {
int count = Math.max(0, v1.getInt()); int count = Math.max(0, v1.getInt());
result = ValueString.get(repeat(v0.getString(), count), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(repeat(v0.getString(), count),
database.getMode().treatEmptyStringsAsNull);
break; break;
} }
case REPLACE: { case REPLACE: {
String s0 = v0.getString(); String s0 = v0.getString();
String s1 = v1.getString(); String s1 = v1.getString();
String s2 = (v2 == null) ? "" : v2.getString(); String s2 = (v2 == null) ? "" : v2.getString();
result = ValueString.get(replace(s0, s1, s2), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(replace(s0, s1, s2),
database.getMode().treatEmptyStringsAsNull);
break; break;
} }
case RIGHT: case RIGHT:
result = ValueString.get(right(v0.getString(), v1.getInt()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(right(v0.getString(), v1.getInt()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case LTRIM: case LTRIM:
result = ValueString.get(StringUtils.trim(v0.getString(), true, false, v1 == null ? " " : v1.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.trim(v0.getString(), true, false, v1 == null ? " " : v1.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case TRIM: case TRIM:
result = ValueString.get(StringUtils.trim(v0.getString(), true, true, v1 == null ? " " : v1.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.trim(v0.getString(), true, true, v1 == null ? " " : v1.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case RTRIM: case RTRIM:
result = ValueString.get(StringUtils.trim(v0.getString(), false, true, v1 == null ? " " : v1.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.trim(v0.getString(), false, true, v1 == null ? " " : v1.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case SUBSTR: case SUBSTR:
case SUBSTRING: { case SUBSTRING: {
...@@ -1159,27 +1187,31 @@ public class Function extends Expression implements FunctionCall { ...@@ -1159,27 +1187,31 @@ public class Function extends Expression implements FunctionCall {
offset = s.length() + offset + 1; offset = s.length() + offset + 1;
} }
int length = v2 == null ? s.length() : v2.getInt(); int length = v2 == null ? s.length() : v2.getInt();
result = ValueString.get(substring(s, offset, length), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(substring(s, offset, length),
database.getMode().treatEmptyStringsAsNull);
break; break;
} }
case POSITION: case POSITION:
result = ValueInt.get(locate(v0.getString(), v1.getString(), 0)); result = ValueInt.get(locate(v0.getString(), v1.getString(), 0));
break; break;
case XMLATTR: case XMLATTR:
result = ValueString.get(StringUtils.xmlAttr(v0.getString(), v1.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.xmlAttr(v0.getString(), v1.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case XMLNODE: { case XMLNODE: {
String attr = v1 == null ? null : v1 == ValueNull.INSTANCE ? null : v1.getString(); String attr = v1 == null ? null : v1 == ValueNull.INSTANCE ? null : v1.getString();
String content = v2 == null ? null : v2 == ValueNull.INSTANCE ? null : v2.getString(); String content = v2 == null ? null : v2 == ValueNull.INSTANCE ? null : v2.getString();
boolean indent = v3 == null ? true : v3.getBoolean(); boolean indent = v3 == null ? true : v3.getBoolean();
result = ValueString.get(StringUtils.xmlNode(v0.getString(), attr, content, indent), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.xmlNode(v0.getString(), attr, content, indent),
database.getMode().treatEmptyStringsAsNull);
break; break;
} }
case REGEXP_REPLACE: { case REGEXP_REPLACE: {
String regexp = v1.getString(); String regexp = v1.getString();
String replacement = v2.getString(); String replacement = v2.getString();
try { try {
result = ValueString.get(v0.getString().replaceAll(regexp, replacement), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(v0.getString().replaceAll(regexp, replacement),
database.getMode().treatEmptyStringsAsNull);
} catch (StringIndexOutOfBoundsException e) { } catch (StringIndexOutOfBoundsException e) {
throw DbException.get(ErrorCode.LIKE_ESCAPE_ERROR_1, e, replacement); throw DbException.get(ErrorCode.LIKE_ESCAPE_ERROR_1, e, replacement);
} catch (PatternSyntaxException e) { } catch (PatternSyntaxException e) {
...@@ -1188,17 +1220,21 @@ public class Function extends Expression implements FunctionCall { ...@@ -1188,17 +1220,21 @@ public class Function extends Expression implements FunctionCall {
break; break;
} }
case RPAD: case RPAD:
result = ValueString.get(StringUtils.pad(v0.getString(), v1.getInt(), v2 == null ? null : v2.getString(), true), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.pad(v0.getString(), v1.getInt(), v2 == null ? null : v2.getString(), true),
database.getMode().treatEmptyStringsAsNull);
break; break;
case LPAD: case LPAD:
result = ValueString.get(StringUtils.pad(v0.getString(), v1.getInt(), v2 == null ? null : v2.getString(), false), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.pad(v0.getString(), v1.getInt(), v2 == null ? null : v2.getString(), false),
database.getMode().treatEmptyStringsAsNull);
break; break;
case TO_CHAR: case TO_CHAR:
switch(v0.getType()){ switch(v0.getType()){
case Value.TIME: case Value.TIME:
case Value.DATE: case Value.DATE:
case Value.TIMESTAMP: case Value.TIMESTAMP:
result = ValueString.get(toChar(v0.getTimestamp(), v1 == null ? null : v1.getString(), v2 == null ? null : v2.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(toChar(v0.getTimestamp(),
v1 == null ? null : v1.getString(), v2 == null ? null : v2.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
case Value.SHORT: case Value.SHORT:
case Value.INT: case Value.INT:
...@@ -1206,14 +1242,18 @@ public class Function extends Expression implements FunctionCall { ...@@ -1206,14 +1242,18 @@ public class Function extends Expression implements FunctionCall {
case Value.DECIMAL: case Value.DECIMAL:
case Value.DOUBLE: case Value.DOUBLE:
case Value.FLOAT: case Value.FLOAT:
result = ValueString.get(toChar(v0.getBigDecimal(), v1 == null ? null : v1.getString(), v2 == null ? null : v2.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(toChar(v0.getBigDecimal(),
v1 == null ? null : v1.getString(), v2 == null ? null : v2.getString()),
database.getMode().treatEmptyStringsAsNull);
break; break;
default: default:
result = ValueString.get(v0.getString(), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(v0.getString(),
database.getMode().treatEmptyStringsAsNull);
} }
break; break;
case H2VERSION: case H2VERSION:
result = ValueString.get(Constants.getVersion(), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(Constants.getVersion(),
database.getMode().treatEmptyStringsAsNull);
break; break;
case DATE_ADD: case DATE_ADD:
result = ValueTimestamp.get(dateadd(v0.getString(), v1.getInt(), v2.getTimestamp())); result = ValueTimestamp.get(dateadd(v0.getString(), v1.getInt(), v2.getTimestamp()));
...@@ -1232,7 +1272,9 @@ public class Function extends Expression implements FunctionCall { ...@@ -1232,7 +1272,9 @@ public class Function extends Expression implements FunctionCall {
} else { } else {
String locale = v2 == null ? null : v2 == ValueNull.INSTANCE ? null : v2.getString(); String locale = v2 == null ? null : v2 == ValueNull.INSTANCE ? null : v2.getString();
String tz = v3 == null ? null : v3 == ValueNull.INSTANCE ? null : v3.getString(); String tz = v3 == null ? null : v3 == ValueNull.INSTANCE ? null : v3.getString();
result = ValueString.get(DateTimeUtils.formatDateTime(v0.getTimestamp(), v1.getString(), locale, tz), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(DateTimeUtils.formatDateTime(
v0.getTimestamp(), v1.getString(), locale, tz),
database.getMode().treatEmptyStringsAsNull);
} }
break; break;
} }
...@@ -1363,13 +1405,16 @@ public class Function extends Expression implements FunctionCall { ...@@ -1363,13 +1405,16 @@ public class Function extends Expression implements FunctionCall {
} }
case XMLTEXT: case XMLTEXT:
if (v1 == null) { if (v1 == null) {
result = ValueString.get(StringUtils.xmlText(v0.getString()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.xmlText(v0.getString()),
database.getMode().treatEmptyStringsAsNull);
} else { } else {
result = ValueString.get(StringUtils.xmlText(v0.getString(), v1.getBoolean()), database.getMode().treatEmptyStringsAsNull); result = ValueString.get(StringUtils.xmlText(v0.getString(), v1.getBoolean()),
database.getMode().treatEmptyStringsAsNull);
} }
break; break;
case VALUES: case VALUES:
result = session.getVariable(args[0].getSchemaName() + "." + args[0].getTableName() + "." + args[0].getColumnName()); result = session.getVariable(args[0].getSchemaName() + "." +
args[0].getTableName() + "." + args[0].getColumnName());
break; break;
default: default:
throw DbException.throwInternalError("type=" + info.type); throw DbException.throwInternalError("type=" + info.type);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论