fix: Normalize default constrain fn name (#2737)

* fix: normalize current_timestamp to current_timestamp()

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* add sqlness case

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* fix clippy lints

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

---------

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>
This commit is contained in:
Ruihang Xia
2023-11-14 11:22:23 +08:00
committed by GitHub
parent 506e6887f3
commit 8f3b299a45
6 changed files with 66 additions and 5 deletions

View File

@@ -63,6 +63,7 @@ pub enum Error {
Syntax {
#[snafu(source)]
error: ParserError,
location: Location,
},
#[snafu(display("Missing time index constraint"))]

View File

@@ -37,6 +37,7 @@ use common_base::bytes::Bytes;
use common_query::AddColumnLocation;
use common_time::Timestamp;
use datatypes::prelude::ConcreteDataType;
use datatypes::schema::constraint::{CURRENT_TIMESTAMP, CURRENT_TIMESTAMP_FN};
use datatypes::schema::{ColumnDefaultConstraint, ColumnSchema, COMMENT_KEY};
use datatypes::types::cast::CastOption;
use datatypes::types::{cast, TimestampType};
@@ -270,8 +271,13 @@ fn parse_column_default_constraint(
ColumnDefaultConstraint::Value(sql_value_to_value(column_name, data_type, v)?)
}
ColumnOption::Default(Expr::Function(func)) => {
let mut func = format!("{func}").to_lowercase();
// normalize CURRENT_TIMESTAMP to CURRENT_TIMESTAMP()
if func == CURRENT_TIMESTAMP {
func = CURRENT_TIMESTAMP_FN.to_string();
}
// Always use lowercase for function expression
ColumnDefaultConstraint::Function(format!("{func}").to_lowercase())
ColumnDefaultConstraint::Function(func.to_lowercase())
}
ColumnOption::Default(expr) => {
return UnsupportedDefaultValueSnafu {