Skip to content

Commit fab6e28

Browse files
authored
Output DataType capitalized (#202)
This makes it consistent with other output which also prints keywords capitalized.
1 parent b24dbe5 commit fab6e28

File tree

3 files changed

+67
-67
lines changed

3 files changed

+67
-67
lines changed

src/ast/data_type.rs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -72,36 +72,36 @@ pub enum DataType {
7272
impl fmt::Display for DataType {
7373
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
7474
match self {
75-
DataType::Char(size) => format_type_with_optional_length(f, "char", size),
75+
DataType::Char(size) => format_type_with_optional_length(f, "CHAR", size),
7676
DataType::Varchar(size) => {
77-
format_type_with_optional_length(f, "character varying", size)
77+
format_type_with_optional_length(f, "CHARACTER VARYING", size)
7878
}
79-
DataType::Uuid => write!(f, "uuid"),
80-
DataType::Clob(size) => write!(f, "clob({})", size),
81-
DataType::Binary(size) => write!(f, "binary({})", size),
82-
DataType::Varbinary(size) => write!(f, "varbinary({})", size),
83-
DataType::Blob(size) => write!(f, "blob({})", size),
79+
DataType::Uuid => write!(f, "UUID"),
80+
DataType::Clob(size) => write!(f, "CLOB({})", size),
81+
DataType::Binary(size) => write!(f, "BINARY({})", size),
82+
DataType::Varbinary(size) => write!(f, "VARBINARY({})", size),
83+
DataType::Blob(size) => write!(f, "BLOB({})", size),
8484
DataType::Decimal(precision, scale) => {
8585
if let Some(scale) = scale {
86-
write!(f, "numeric({},{})", precision.unwrap(), scale)
86+
write!(f, "NUMERIC({},{})", precision.unwrap(), scale)
8787
} else {
88-
format_type_with_optional_length(f, "numeric", precision)
88+
format_type_with_optional_length(f, "NUMERIC", precision)
8989
}
9090
}
91-
DataType::Float(size) => format_type_with_optional_length(f, "float", size),
92-
DataType::SmallInt => write!(f, "smallint"),
93-
DataType::Int => write!(f, "int"),
94-
DataType::BigInt => write!(f, "bigint"),
95-
DataType::Real => write!(f, "real"),
96-
DataType::Double => write!(f, "double"),
97-
DataType::Boolean => write!(f, "boolean"),
98-
DataType::Date => write!(f, "date"),
99-
DataType::Time => write!(f, "time"),
100-
DataType::Timestamp => write!(f, "timestamp"),
101-
DataType::Interval => write!(f, "interval"),
102-
DataType::Regclass => write!(f, "regclass"),
103-
DataType::Text => write!(f, "text"),
104-
DataType::Bytea => write!(f, "bytea"),
91+
DataType::Float(size) => format_type_with_optional_length(f, "FLOAT", size),
92+
DataType::SmallInt => write!(f, "SMALLINT"),
93+
DataType::Int => write!(f, "INT"),
94+
DataType::BigInt => write!(f, "BIGINT"),
95+
DataType::Real => write!(f, "REAL"),
96+
DataType::Double => write!(f, "DOUBLE"),
97+
DataType::Boolean => write!(f, "BOOLEAN"),
98+
DataType::Date => write!(f, "DATE"),
99+
DataType::Time => write!(f, "TIME"),
100+
DataType::Timestamp => write!(f, "TIMESTAMP"),
101+
DataType::Interval => write!(f, "INTERVAL"),
102+
DataType::Regclass => write!(f, "REGCLASS"),
103+
DataType::Text => write!(f, "TEXT"),
104+
DataType::Bytea => write!(f, "BYTEA"),
105105
DataType::Array(ty) => write!(f, "{}[]", ty),
106106
DataType::Custom(ty) => write!(f, "{}", ty),
107107
}

tests/sqlparser_common.rs

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -908,7 +908,7 @@ fn parse_limit_accepts_all() {
908908

909909
#[test]
910910
fn parse_cast() {
911-
let sql = "SELECT CAST(id AS bigint) FROM customer";
911+
let sql = "SELECT CAST(id AS BIGINT) FROM customer";
912912
let select = verified_only_select(sql);
913913
assert_eq!(
914914
&Expr::Cast {
@@ -919,19 +919,19 @@ fn parse_cast() {
919919
);
920920
one_statement_parses_to(
921921
"SELECT CAST(id AS BIGINT) FROM customer",
922-
"SELECT CAST(id AS bigint) FROM customer",
922+
"SELECT CAST(id AS BIGINT) FROM customer",
923923
);
924924

925-
verified_stmt("SELECT CAST(id AS numeric) FROM customer");
925+
verified_stmt("SELECT CAST(id AS NUMERIC) FROM customer");
926926

927927
one_statement_parses_to(
928-
"SELECT CAST(id AS dec) FROM customer",
929-
"SELECT CAST(id AS numeric) FROM customer",
928+
"SELECT CAST(id AS DEC) FROM customer",
929+
"SELECT CAST(id AS NUMERIC) FROM customer",
930930
);
931931

932932
one_statement_parses_to(
933-
"SELECT CAST(id AS decimal) FROM customer",
934-
"SELECT CAST(id AS numeric) FROM customer",
933+
"SELECT CAST(id AS DECIMAL) FROM customer",
934+
"SELECT CAST(id AS NUMERIC) FROM customer",
935935
);
936936
}
937937

@@ -1027,12 +1027,12 @@ fn parse_create_table() {
10271027
let ast = one_statement_parses_to(
10281028
sql,
10291029
"CREATE TABLE uk_cities (\
1030-
name character varying(100) NOT NULL, \
1031-
lat double NULL, \
1032-
lng double, \
1033-
constrained int NULL CONSTRAINT pkey PRIMARY KEY NOT NULL UNIQUE CHECK (constrained > 0), \
1034-
ref int REFERENCES othertable (a, b), \
1035-
ref2 int REFERENCES othertable2 ON DELETE CASCADE ON UPDATE NO ACTION)",
1030+
name CHARACTER VARYING(100) NOT NULL, \
1031+
lat DOUBLE NULL, \
1032+
lng DOUBLE, \
1033+
constrained INT NULL CONSTRAINT pkey PRIMARY KEY NOT NULL UNIQUE CHECK (constrained > 0), \
1034+
ref INT REFERENCES othertable (a, b), \
1035+
ref2 INT REFERENCES othertable2 ON DELETE CASCADE ON UPDATE NO ACTION)",
10361036
);
10371037
match ast {
10381038
Statement::CreateTable {
@@ -1193,7 +1193,7 @@ fn parse_create_table_with_on_delete_on_update_2in_any_order() -> Result<(), Par
11931193

11941194
#[test]
11951195
fn parse_create_table_with_options() {
1196-
let sql = "CREATE TABLE t (c int) WITH (foo = 'bar', a = 123)";
1196+
let sql = "CREATE TABLE t (c INT) WITH (foo = 'bar', a = 123)";
11971197
match verified_stmt(sql) {
11981198
Statement::CreateTable { with_options, .. } => {
11991199
assert_eq!(
@@ -1217,7 +1217,7 @@ fn parse_create_table_with_options() {
12171217
#[test]
12181218
fn parse_create_table_trailing_comma() {
12191219
let sql = "CREATE TABLE foo (bar int,)";
1220-
all_dialects().one_statement_parses_to(sql, "CREATE TABLE foo (bar int)");
1220+
all_dialects().one_statement_parses_to(sql, "CREATE TABLE foo (bar INT)");
12211221
}
12221222

12231223
#[test]
@@ -1230,9 +1230,9 @@ fn parse_create_external_table() {
12301230
let ast = one_statement_parses_to(
12311231
sql,
12321232
"CREATE EXTERNAL TABLE uk_cities (\
1233-
name character varying(100) NOT NULL, \
1234-
lat double NULL, \
1235-
lng double) \
1233+
name CHARACTER VARYING(100) NOT NULL, \
1234+
lat DOUBLE NULL, \
1235+
lng DOUBLE) \
12361236
STORED AS TEXTFILE LOCATION '/tmp/example.csv'",
12371237
);
12381238
match ast {
@@ -1299,9 +1299,9 @@ fn parse_create_external_table_lowercase() {
12991299
let ast = one_statement_parses_to(
13001300
sql,
13011301
"CREATE EXTERNAL TABLE uk_cities (\
1302-
name character varying(100) NOT NULL, \
1303-
lat double NULL, \
1304-
lng double) \
1302+
name CHARACTER VARYING(100) NOT NULL, \
1303+
lat DOUBLE NULL, \
1304+
lng DOUBLE) \
13051305
STORED AS PARQUET LOCATION '/tmp/example.csv'",
13061306
);
13071307
assert_matches!(ast, Statement::CreateTable{..});
@@ -1339,7 +1339,7 @@ fn parse_alter_table_constraints() {
13391339
}
13401340
_ => unreachable!(),
13411341
}
1342-
verified_stmt(&format!("CREATE TABLE foo (id int, {})", constraint_text));
1342+
verified_stmt(&format!("CREATE TABLE foo (id INT, {})", constraint_text));
13431343
}
13441344
}
13451345

@@ -1457,7 +1457,7 @@ fn parse_literal_string() {
14571457

14581458
#[test]
14591459
fn parse_literal_date() {
1460-
let sql = "SELECT date '1999-01-01'";
1460+
let sql = "SELECT DATE '1999-01-01'";
14611461
let select = verified_only_select(sql);
14621462
assert_eq!(
14631463
&Expr::TypedString {
@@ -1470,7 +1470,7 @@ fn parse_literal_date() {
14701470

14711471
#[test]
14721472
fn parse_literal_time() {
1473-
let sql = "SELECT time '01:23:34'";
1473+
let sql = "SELECT TIME '01:23:34'";
14741474
let select = verified_only_select(sql);
14751475
assert_eq!(
14761476
&Expr::TypedString {
@@ -1483,7 +1483,7 @@ fn parse_literal_time() {
14831483

14841484
#[test]
14851485
fn parse_literal_timestamp() {
1486-
let sql = "SELECT timestamp '1999-01-01 01:23:34'";
1486+
let sql = "SELECT TIMESTAMP '1999-01-01 01:23:34'";
14871487
let select = verified_only_select(sql);
14881488
assert_eq!(
14891489
&Expr::TypedString {
@@ -2289,7 +2289,7 @@ fn parse_multiple_statements() {
22892289
);
22902290
test_with("DELETE FROM foo", "SELECT", " bar");
22912291
test_with("INSERT INTO foo VALUES (1)", "SELECT", " bar");
2292-
test_with("CREATE TABLE foo (baz int)", "SELECT", " bar");
2292+
test_with("CREATE TABLE foo (baz INT)", "SELECT", " bar");
22932293
// Make sure that empty statements do not cause an error:
22942294
let res = parse_sql_statements(";;");
22952295
assert_eq!(0, res.unwrap().len());

tests/sqlparser_postgres.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ fn parse_create_table_with_defaults() {
124124
ColumnOptionDef {
125125
name: None,
126126
option: ColumnOption::Default(
127-
pg().verified_expr("CAST(now() AS text)")
127+
pg().verified_expr("CAST(now() AS TEXT)")
128128
)
129129
},
130130
ColumnOptionDef {
@@ -192,36 +192,36 @@ fn parse_create_table_from_pg_dump() {
192192
info text[],
193193
address_id smallint NOT NULL,
194194
activebool boolean DEFAULT true NOT NULL,
195-
create_date date DEFAULT now()::date NOT NULL,
196-
create_date1 date DEFAULT 'now'::text::date NOT NULL,
195+
create_date date DEFAULT now()::DATE NOT NULL,
196+
create_date1 date DEFAULT 'now'::TEXT::date NOT NULL,
197197
last_update timestamp without time zone DEFAULT now(),
198198
release_year public.year,
199199
active integer
200200
)";
201201
pg().one_statement_parses_to(sql, "CREATE TABLE public.customer (\
202-
customer_id int DEFAULT nextval(CAST('public.customer_customer_id_seq' AS regclass)) NOT NULL, \
203-
store_id smallint NOT NULL, \
204-
first_name character varying(45) NOT NULL, \
205-
last_name character varying(45) NOT NULL, \
206-
info text[], \
207-
address_id smallint NOT NULL, \
208-
activebool boolean DEFAULT true NOT NULL, \
209-
create_date date DEFAULT CAST(now() AS date) NOT NULL, \
210-
create_date1 date DEFAULT CAST(CAST('now' AS text) AS date) NOT NULL, \
211-
last_update timestamp DEFAULT now(), \
202+
customer_id INT DEFAULT nextval(CAST('public.customer_customer_id_seq' AS REGCLASS)) NOT NULL, \
203+
store_id SMALLINT NOT NULL, \
204+
first_name CHARACTER VARYING(45) NOT NULL, \
205+
last_name CHARACTER VARYING(45) NOT NULL, \
206+
info TEXT[], \
207+
address_id SMALLINT NOT NULL, \
208+
activebool BOOLEAN DEFAULT true NOT NULL, \
209+
create_date DATE DEFAULT CAST(now() AS DATE) NOT NULL, \
210+
create_date1 DATE DEFAULT CAST(CAST('now' AS TEXT) AS DATE) NOT NULL, \
211+
last_update TIMESTAMP DEFAULT now(), \
212212
release_year public.year, \
213-
active int\
213+
active INT\
214214
)");
215215
}
216216

217217
#[test]
218218
fn parse_create_table_with_inherit() {
219219
let sql = "\
220220
CREATE TABLE bazaar.settings (\
221-
settings_id uuid PRIMARY KEY DEFAULT uuid_generate_v4() NOT NULL, \
222-
user_id uuid UNIQUE, \
223-
value text[], \
224-
use_metric boolean DEFAULT true\
221+
settings_id UUID PRIMARY KEY DEFAULT uuid_generate_v4() NOT NULL, \
222+
user_id UUID UNIQUE, \
223+
value TEXT[], \
224+
use_metric BOOLEAN DEFAULT true\
225225
)";
226226
pg().verified_stmt(sql);
227227
}

0 commit comments

Comments
 (0)