mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bug fixed for parameterized output SQLHexExpr.
This commit is contained in:
@@ -20,13 +20,7 @@ import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLObject;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBetweenExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBinaryOpExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLBooleanExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLNumericLiteralExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.*;
|
||||
import com.alibaba.druid.sql.dialect.db2.visitor.DB2ExportParameterVisitor;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlExportParameterVisitor;
|
||||
import com.alibaba.druid.sql.dialect.oracle.visitor.OracleExportParameterVisitor;
|
||||
@@ -106,6 +100,11 @@ public final class ExportParameterVisitorUtils {
|
||||
replace = true;
|
||||
}
|
||||
|
||||
if (param instanceof SQLHexExpr) {
|
||||
value = ((SQLHexExpr) param).toBytes();
|
||||
replace = true;
|
||||
}
|
||||
|
||||
if (replace) {
|
||||
SQLObject parent = param.getParent();
|
||||
if (parent != null) {
|
||||
|
||||
@@ -1457,6 +1457,25 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Paramet
|
||||
return;
|
||||
}
|
||||
|
||||
if (param instanceof byte[]) {
|
||||
byte[] bytes = (byte[]) param;
|
||||
int bytesLen = bytes.length;
|
||||
char[] chars = new char[bytesLen * 2 + 3];
|
||||
chars[0] = 'x';
|
||||
chars[1] = '\'';
|
||||
for (int i = 0; i < bytes.length; i++) {
|
||||
int a = bytes[i] & 0xFF;
|
||||
int b0 = a >> 4;
|
||||
int b1 = a & 0xf;
|
||||
|
||||
chars[i * 2 + 2] = (char) (b0 + (b0 < 10 ? 48 : 55)); //hexChars[b0];
|
||||
chars[i * 2 + 3] = (char) (b1 + (b1 < 10 ? 48 : 55));
|
||||
}
|
||||
chars[chars.length - 1] = '\'';
|
||||
print0(new String(chars));
|
||||
return;
|
||||
}
|
||||
|
||||
print0("'" + param.getClass().getName() + "'");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user