提交 6b3c41c1 authored 作者: Evgenij Ryazanov's avatar Evgenij Ryazanov

Add ENUM support to CAST function

上级 1b04a821
...@@ -162,6 +162,8 @@ public class Function extends Expression implements FunctionCall { ...@@ -162,6 +162,8 @@ public class Function extends Expression implements FunctionCall {
protected int scale; protected int scale;
protected long precision = PRECISION_UNKNOWN; protected long precision = PRECISION_UNKNOWN;
protected int displaySize; protected int displaySize;
protected String[] enumerators;
private final Database database; private final Database database;
static { static {
...@@ -892,7 +894,7 @@ public class Function extends Expression implements FunctionCall { ...@@ -892,7 +894,7 @@ public class Function extends Expression implements FunctionCall {
case CAST: case CAST:
case CONVERT: { case CONVERT: {
Mode mode = database.getMode(); Mode mode = database.getMode();
v0 = v0.convertTo(dataType, mode); v0 = v0.convertTo(dataType, MathUtils.convertLongToInt(precision), mode, null, enumerators);
v0 = v0.convertScale(mode.convertOnlyToSmallerScale, scale); v0 = v0.convertScale(mode.convertOnlyToSmallerScale, scale);
v0 = v0.convertPrecision(getPrecision(), false); v0 = v0.convertPrecision(getPrecision(), false);
result = v0; result = v0;
...@@ -2198,6 +2200,7 @@ public class Function extends Expression implements FunctionCall { ...@@ -2198,6 +2200,7 @@ public class Function extends Expression implements FunctionCall {
precision = col.getPrecision(); precision = col.getPrecision();
displaySize = col.getDisplaySize(); displaySize = col.getDisplaySize();
scale = col.getScale(); scale = col.getScale();
enumerators = col.getEnumerators();
} }
@Override @Override
...@@ -2598,7 +2601,7 @@ public class Function extends Expression implements FunctionCall { ...@@ -2598,7 +2601,7 @@ public class Function extends Expression implements FunctionCall {
case CAST: { case CAST: {
buff.append(args[0].getSQL()).append(" AS "). buff.append(args[0].getSQL()).append(" AS ").
append(new Column(null, dataType, precision, append(new Column(null, dataType, precision,
scale, displaySize).getCreateSQL()); scale, displaySize, enumerators).getCreateSQL());
break; break;
} }
case CONVERT: { case CONVERT: {
......
...@@ -265,3 +265,6 @@ DROP VIEW V3; ...@@ -265,3 +265,6 @@ DROP VIEW V3;
DROP TABLE TEST; DROP TABLE TEST;
> ok > ok
SELECT CAST (2 AS ENUM('a', 'b', 'c', 'd'));
>> c
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论