Fix dblink bug
This commit is contained in:
@ -220,9 +220,8 @@ int ObRawExprPrinter::print(ObConstRawExpr *expr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** To preserve the type information of questionmark when it is NULL, print a cast*/
|
|
||||||
if (OB_FAIL(ret)) {
|
if (OB_FAIL(ret)) {
|
||||||
} else if (is_bool_expr && OB_FAIL(databuff_printf(buf_, buf_len_, *pos_, "1 = "))) {
|
} else if (is_bool_expr && OB_FAIL(databuff_printf(buf_, buf_len_, *pos_, "(1 = "))) {
|
||||||
/**
|
/**
|
||||||
* For SQL like "select * from T1 where C1 = 1 and C1 = 2",
|
* For SQL like "select * from T1 where C1 = 1 and C1 = 2",
|
||||||
* because the where clause is always false,
|
* because the where clause is always false,
|
||||||
@ -239,6 +238,9 @@ int ObRawExprPrinter::print(ObConstRawExpr *expr)
|
|||||||
expr->get_data_type()))) {
|
expr->get_data_type()))) {
|
||||||
LOG_WARN("fail to write param to buf", K(expr->get_value().get_unknown()), K(expr->get_expr_obj_meta()), K(ret));
|
LOG_WARN("fail to write param to buf", K(expr->get_value().get_unknown()), K(expr->get_expr_obj_meta()), K(ret));
|
||||||
}
|
}
|
||||||
|
if (is_bool_expr){
|
||||||
|
DATA_PRINTF(")");
|
||||||
|
}
|
||||||
} else if (OB_NOT_NULL(param_store_) && T_QUESTIONMARK == expr->get_expr_type()) {
|
} else if (OB_NOT_NULL(param_store_) && T_QUESTIONMARK == expr->get_expr_type()) {
|
||||||
int64_t idx = expr->get_value().get_unknown();
|
int64_t idx = expr->get_value().get_unknown();
|
||||||
CK (0 <= idx && idx < param_store_->count());
|
CK (0 <= idx && idx < param_store_->count());
|
||||||
@ -286,7 +288,7 @@ int ObRawExprPrinter::print(ObConstRawExpr *expr)
|
|||||||
* by rewriting startup_filter as "0 = 1" or "1 = 1".
|
* by rewriting startup_filter as "0 = 1" or "1 = 1".
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
if (OB_FAIL(databuff_printf(buf_, buf_len_, *pos_, expr->get_value().get_bool() ? "1 = 1" : "0 = 1"))) {
|
if (OB_FAIL(databuff_printf(buf_, buf_len_, *pos_, expr->get_value().get_bool() ? "(1 = 1)" : "(0 = 1)"))) {
|
||||||
LOG_WARN("fail to print startup filter", K(ret));
|
LOG_WARN("fail to print startup filter", K(ret));
|
||||||
}
|
}
|
||||||
} else if (OB_FAIL(expr->get_value().print_sql_literal(buf_, buf_len_, *pos_, print_params_))) {
|
} else if (OB_FAIL(expr->get_value().print_sql_literal(buf_, buf_len_, *pos_, print_params_))) {
|
||||||
|
|||||||
Reference in New Issue
Block a user