@@ -181,7 +181,7 @@ pub(crate) type LexOrdering = Vec<OrderByExpr>;
181
181
#[ derive( Debug , Clone , PartialEq , Eq ) ]
182
182
pub struct CreateExternalTable {
183
183
/// Table name
184
- pub name : String ,
184
+ pub name : ObjectName ,
185
185
/// Optional schema
186
186
pub columns : Vec < ColumnDef > ,
187
187
/// File type (Parquet, NDJSON, CSV, etc)
@@ -813,7 +813,7 @@ impl<'a> DFParser<'a> {
813
813
}
814
814
815
815
let create = CreateExternalTable {
816
- name : table_name. to_string ( ) ,
816
+ name : table_name,
817
817
columns,
818
818
file_type : builder. file_type . unwrap ( ) ,
819
819
location : builder. location . unwrap ( ) ,
@@ -915,8 +915,9 @@ mod tests {
915
915
// positive case
916
916
let sql = "CREATE EXTERNAL TABLE t(c1 int) STORED AS CSV LOCATION 'foo.csv'" ;
917
917
let display = None ;
918
+ let name = ObjectName ( vec ! [ Ident :: from( "t" ) ] ) ;
918
919
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
919
- name : "t" . into ( ) ,
920
+ name : name . clone ( ) ,
920
921
columns : vec ! [ make_column_def( "c1" , DataType :: Int ( display) ) ] ,
921
922
file_type : "CSV" . to_string ( ) ,
922
923
location : "foo.csv" . into ( ) ,
@@ -932,7 +933,7 @@ mod tests {
932
933
// positive case: leading space
933
934
let sql = "CREATE EXTERNAL TABLE t(c1 int) STORED AS CSV LOCATION 'foo.csv' " ;
934
935
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
935
- name : "t" . into ( ) ,
936
+ name : name . clone ( ) ,
936
937
columns : vec ! [ make_column_def( "c1" , DataType :: Int ( None ) ) ] ,
937
938
file_type : "CSV" . to_string ( ) ,
938
939
location : "foo.csv" . into ( ) ,
@@ -949,7 +950,7 @@ mod tests {
949
950
let sql =
950
951
"CREATE EXTERNAL TABLE t(c1 int) STORED AS CSV LOCATION 'foo.csv' ;" ;
951
952
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
952
- name : "t" . into ( ) ,
953
+ name : name . clone ( ) ,
953
954
columns : vec ! [ make_column_def( "c1" , DataType :: Int ( None ) ) ] ,
954
955
file_type : "CSV" . to_string ( ) ,
955
956
location : "foo.csv" . into ( ) ,
@@ -966,7 +967,7 @@ mod tests {
966
967
let sql = "CREATE EXTERNAL TABLE t(c1 int) STORED AS CSV LOCATION 'foo.csv' OPTIONS (format.delimiter '|')" ;
967
968
let display = None ;
968
969
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
969
- name : "t" . into ( ) ,
970
+ name : name . clone ( ) ,
970
971
columns : vec ! [ make_column_def( "c1" , DataType :: Int ( display) ) ] ,
971
972
file_type : "CSV" . to_string ( ) ,
972
973
location : "foo.csv" . into ( ) ,
@@ -986,7 +987,7 @@ mod tests {
986
987
let sql = "CREATE EXTERNAL TABLE t(c1 int) STORED AS CSV PARTITIONED BY (p1, p2) LOCATION 'foo.csv'" ;
987
988
let display = None ;
988
989
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
989
- name : "t" . into ( ) ,
990
+ name : name . clone ( ) ,
990
991
columns : vec ! [ make_column_def( "c1" , DataType :: Int ( display) ) ] ,
991
992
file_type : "CSV" . to_string ( ) ,
992
993
location : "foo.csv" . into ( ) ,
@@ -1013,7 +1014,7 @@ mod tests {
1013
1014
] ;
1014
1015
for ( sql, compression) in sqls {
1015
1016
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
1016
- name : "t" . into ( ) ,
1017
+ name : name . clone ( ) ,
1017
1018
columns : vec ! [ make_column_def( "c1" , DataType :: Int ( display) ) ] ,
1018
1019
file_type : "CSV" . to_string ( ) ,
1019
1020
location : "foo.csv" . into ( ) ,
@@ -1033,7 +1034,7 @@ mod tests {
1033
1034
// positive case: it is ok for parquet files not to have columns specified
1034
1035
let sql = "CREATE EXTERNAL TABLE t STORED AS PARQUET LOCATION 'foo.parquet'" ;
1035
1036
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
1036
- name : "t" . into ( ) ,
1037
+ name : name . clone ( ) ,
1037
1038
columns : vec ! [ ] ,
1038
1039
file_type : "PARQUET" . to_string ( ) ,
1039
1040
location : "foo.parquet" . into ( ) ,
@@ -1049,7 +1050,7 @@ mod tests {
1049
1050
// positive case: it is ok for parquet files to be other than upper case
1050
1051
let sql = "CREATE EXTERNAL TABLE t STORED AS parqueT LOCATION 'foo.parquet'" ;
1051
1052
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
1052
- name : "t" . into ( ) ,
1053
+ name : name . clone ( ) ,
1053
1054
columns : vec ! [ ] ,
1054
1055
file_type : "PARQUET" . to_string ( ) ,
1055
1056
location : "foo.parquet" . into ( ) ,
@@ -1065,7 +1066,7 @@ mod tests {
1065
1066
// positive case: it is ok for avro files not to have columns specified
1066
1067
let sql = "CREATE EXTERNAL TABLE t STORED AS AVRO LOCATION 'foo.avro'" ;
1067
1068
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
1068
- name : "t" . into ( ) ,
1069
+ name : name . clone ( ) ,
1069
1070
columns : vec ! [ ] ,
1070
1071
file_type : "AVRO" . to_string ( ) ,
1071
1072
location : "foo.avro" . into ( ) ,
@@ -1082,7 +1083,7 @@ mod tests {
1082
1083
let sql =
1083
1084
"CREATE EXTERNAL TABLE IF NOT EXISTS t STORED AS PARQUET LOCATION 'foo.parquet'" ;
1084
1085
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
1085
- name : "t" . into ( ) ,
1086
+ name : name . clone ( ) ,
1086
1087
columns : vec ! [ ] ,
1087
1088
file_type : "PARQUET" . to_string ( ) ,
1088
1089
location : "foo.parquet" . into ( ) ,
@@ -1099,7 +1100,7 @@ mod tests {
1099
1100
let sql =
1100
1101
"CREATE EXTERNAL TABLE t(c1 int) STORED AS CSV PARTITIONED BY (p1 int) LOCATION 'foo.csv'" ;
1101
1102
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
1102
- name : "t" . into ( ) ,
1103
+ name : name . clone ( ) ,
1103
1104
columns : vec ! [
1104
1105
make_column_def( "c1" , DataType :: Int ( None ) ) ,
1105
1106
make_column_def( "p1" , DataType :: Int ( None ) ) ,
@@ -1132,7 +1133,7 @@ mod tests {
1132
1133
let sql =
1133
1134
"CREATE EXTERNAL TABLE t STORED AS x OPTIONS ('k1' 'v1') LOCATION 'blahblah'" ;
1134
1135
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
1135
- name : "t" . into ( ) ,
1136
+ name : name . clone ( ) ,
1136
1137
columns : vec ! [ ] ,
1137
1138
file_type : "X" . to_string ( ) ,
1138
1139
location : "blahblah" . into ( ) ,
@@ -1149,7 +1150,7 @@ mod tests {
1149
1150
let sql =
1150
1151
"CREATE EXTERNAL TABLE t STORED AS x OPTIONS ('k1' 'v1', k2 v2) LOCATION 'blahblah'" ;
1151
1152
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
1152
- name : "t" . into ( ) ,
1153
+ name : name . clone ( ) ,
1153
1154
columns : vec ! [ ] ,
1154
1155
file_type : "X" . to_string ( ) ,
1155
1156
location : "blahblah" . into ( ) ,
@@ -1188,7 +1189,7 @@ mod tests {
1188
1189
] ;
1189
1190
for ( sql, ( asc, nulls_first) ) in sqls. iter ( ) . zip ( expected. into_iter ( ) ) {
1190
1191
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
1191
- name : "t" . into ( ) ,
1192
+ name : name . clone ( ) ,
1192
1193
columns : vec ! [ make_column_def( "c1" , DataType :: Int ( None ) ) ] ,
1193
1194
file_type : "CSV" . to_string ( ) ,
1194
1195
location : "foo.csv" . into ( ) ,
@@ -1214,7 +1215,7 @@ mod tests {
1214
1215
let sql = "CREATE EXTERNAL TABLE t(c1 int, c2 int) STORED AS CSV WITH ORDER (c1 ASC, c2 DESC NULLS FIRST) LOCATION 'foo.csv'" ;
1215
1216
let display = None ;
1216
1217
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
1217
- name : "t" . into ( ) ,
1218
+ name : name . clone ( ) ,
1218
1219
columns : vec ! [
1219
1220
make_column_def( "c1" , DataType :: Int ( display) ) ,
1220
1221
make_column_def( "c2" , DataType :: Int ( display) ) ,
@@ -1253,7 +1254,7 @@ mod tests {
1253
1254
let sql = "CREATE EXTERNAL TABLE t(c1 int, c2 int) STORED AS CSV WITH ORDER (c1 - c2 ASC) LOCATION 'foo.csv'" ;
1254
1255
let display = None ;
1255
1256
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
1256
- name : "t" . into ( ) ,
1257
+ name : name . clone ( ) ,
1257
1258
columns : vec ! [
1258
1259
make_column_def( "c1" , DataType :: Int ( display) ) ,
1259
1260
make_column_def( "c2" , DataType :: Int ( display) ) ,
@@ -1297,7 +1298,7 @@ mod tests {
1297
1298
'TRUNCATE' 'NO',
1298
1299
'format.has_header' 'true')" ;
1299
1300
let expected = Statement :: CreateExternalTable ( CreateExternalTable {
1300
- name : "t" . into ( ) ,
1301
+ name : name . clone ( ) ,
1301
1302
columns : vec ! [
1302
1303
make_column_def( "c1" , DataType :: Int ( None ) ) ,
1303
1304
make_column_def( "c2" , DataType :: Float ( None ) ) ,
0 commit comments