Skip to content

Commit b9326fe

Browse files
Refactored to not have column ident duplication
1 parent 84ce852 commit b9326fe

File tree

4 files changed

+20
-29
lines changed

4 files changed

+20
-29
lines changed

src/parser/mod.rs

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7950,15 +7950,15 @@ impl<'a> Parser<'a> {
79507950
loop {
79517951
if self.parse_keyword(Keyword::CONSTRAINT) {
79527952
let name = Some(self.parse_identifier()?);
7953-
if let Some(option) = self.parse_optional_column_option(&col_name)? {
7953+
if let Some(option) = self.parse_optional_column_option()? {
79547954
options.push(ColumnOptionDef { name, option });
79557955
} else {
79567956
return self.expected(
79577957
"constraint details after CONSTRAINT <name>",
79587958
self.peek_token(),
79597959
);
79607960
}
7961-
} else if let Some(option) = self.parse_optional_column_option(&col_name)? {
7961+
} else if let Some(option) = self.parse_optional_column_option()? {
79627962
options.push(ColumnOptionDef { name: None, option });
79637963
} else {
79647964
break;
@@ -7994,26 +7994,20 @@ impl<'a> Parser<'a> {
79947994
}
79957995
}
79967996

7997-
pub fn parse_optional_column_option(
7998-
&mut self,
7999-
column_name: &Ident,
8000-
) -> Result<Option<ColumnOption>, ParserError> {
7997+
pub fn parse_optional_column_option(&mut self) -> Result<Option<ColumnOption>, ParserError> {
80017998
if let Some(option) = self.dialect.parse_column_option(self)? {
80027999
return option;
80038000
}
80048001

80058002
self.with_state(
80068003
ColumnDefinition,
80078004
|parser| -> Result<Option<ColumnOption>, ParserError> {
8008-
parser.parse_optional_column_option_inner(column_name)
8005+
parser.parse_optional_column_option_inner()
80098006
},
80108007
)
80118008
}
80128009

8013-
fn parse_optional_column_option_inner(
8014-
&mut self,
8015-
column_name: &Ident,
8016-
) -> Result<Option<ColumnOption>, ParserError> {
8010+
fn parse_optional_column_option_inner(&mut self) -> Result<Option<ColumnOption>, ParserError> {
80178011
if self.parse_keywords(&[Keyword::CHARACTER, Keyword::SET]) {
80188012
Ok(Some(ColumnOption::CharacterSet(
80198013
self.parse_object_name(false)?,
@@ -8061,7 +8055,7 @@ impl<'a> Parser<'a> {
80618055
name: None,
80628056
index_name: None,
80638057
index_type: None,
8064-
columns: vec![column_name.clone().into()],
8058+
columns: vec![],
80658059
index_options: vec![],
80668060
characteristics,
80678061
}
@@ -8075,7 +8069,7 @@ impl<'a> Parser<'a> {
80758069
index_name: None,
80768070
index_type_display: KeyOrIndexDisplay::None,
80778071
index_type: None,
8078-
columns: vec![column_name.clone().into()],
8072+
columns: vec![],
80798073
index_options: vec![],
80808074
characteristics,
80818075
nulls_distinct: NullsDistinctOption::None,
@@ -9089,7 +9083,7 @@ impl<'a> Parser<'a> {
90899083
let new_name = self.parse_identifier()?;
90909084
let data_type = self.parse_data_type()?;
90919085
let mut options = vec![];
9092-
while let Some(option) = self.parse_optional_column_option(&new_name)? {
9086+
while let Some(option) = self.parse_optional_column_option()? {
90939087
options.push(option);
90949088
}
90959089

@@ -9107,7 +9101,7 @@ impl<'a> Parser<'a> {
91079101
let col_name = self.parse_identifier()?;
91089102
let data_type = self.parse_data_type()?;
91099103
let mut options = vec![];
9110-
while let Some(option) = self.parse_optional_column_option(&col_name)? {
9104+
while let Some(option) = self.parse_optional_column_option()? {
91119105
options.push(option);
91129106
}
91139107

@@ -11369,7 +11363,7 @@ impl<'a> Parser<'a> {
1136911363
/// Parses a column definition within a view.
1137011364
fn parse_view_column(&mut self) -> Result<ViewColumnDef, ParserError> {
1137111365
let name = self.parse_identifier()?;
11372-
let options = self.parse_view_column_options(&name)?;
11366+
let options = self.parse_view_column_options()?;
1137311367
let data_type = if dialect_of!(self is ClickHouseDialect) {
1137411368
Some(self.parse_data_type()?)
1137511369
} else {
@@ -11382,13 +11376,10 @@ impl<'a> Parser<'a> {
1138211376
})
1138311377
}
1138411378

11385-
fn parse_view_column_options(
11386-
&mut self,
11387-
column_name: &Ident,
11388-
) -> Result<Option<ColumnOptions>, ParserError> {
11379+
fn parse_view_column_options(&mut self) -> Result<Option<ColumnOptions>, ParserError> {
1138911380
let mut options = Vec::new();
1139011381
loop {
11391-
let option = self.parse_optional_column_option(column_name)?;
11382+
let option = self.parse_optional_column_option()?;
1139211383
if let Some(option) = option {
1139311384
options.push(option);
1139411385
} else {

tests/sqlparser_common.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3767,7 +3767,7 @@ fn parse_create_table() {
37673767
name: None,
37683768
index_name: None,
37693769
index_type: None,
3770-
columns: vec!["constrained".into()],
3770+
columns: vec![],
37713771
index_options: vec![],
37723772
characteristics: None,
37733773
}),
@@ -3783,7 +3783,7 @@ fn parse_create_table() {
37833783
index_name: None,
37843784
index_type_display: KeyOrIndexDisplay::None,
37853785
index_type: None,
3786-
columns: vec!["constrained".into()],
3786+
columns: vec![],
37873787
index_options: vec![],
37883788
characteristics: None,
37893789
nulls_distinct: NullsDistinctOption::None,
@@ -4101,7 +4101,7 @@ fn parse_create_table_column_constraint_characteristics() {
41014101
index_name: None,
41024102
index_type_display: KeyOrIndexDisplay::None,
41034103
index_type: None,
4104-
columns: vec!["a".into()],
4104+
columns: vec![],
41054105
index_options: vec![],
41064106
characteristics: expected_value,
41074107
nulls_distinct: NullsDistinctOption::None,

tests/sqlparser_mysql.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,7 @@ fn parse_create_table_auto_increment() {
642642
name: None,
643643
index_name: None,
644644
index_type: None,
645-
columns: vec!["bar".into()],
645+
columns: vec![],
646646
index_options: vec![],
647647
characteristics: None,
648648
}),
@@ -751,7 +751,7 @@ fn parse_create_table_primary_and_unique_key() {
751751
name: None,
752752
index_name: None,
753753
index_type: None,
754-
columns: vec!["id".into()],
754+
columns: vec![],
755755
index_options: vec![],
756756
characteristics: None,
757757
}),
@@ -1394,7 +1394,7 @@ fn parse_quote_identifiers() {
13941394
name: None,
13951395
index_name: None,
13961396
index_type: None,
1397-
columns: vec![Ident::with_quote('`', "BEGIN").into()],
1397+
columns: vec![],
13981398
index_options: vec![],
13991399
characteristics: None,
14001400
}),

tests/sqlparser_sqlite.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ fn parse_create_table_auto_increment() {
221221
name: None,
222222
index_name: None,
223223
index_type: None,
224-
columns: vec!["bar".into()],
224+
columns: vec![],
225225
index_options: vec![],
226226
characteristics: None,
227227
}),
@@ -253,7 +253,7 @@ fn parse_create_table_primary_key_asc_desc() {
253253
name: None,
254254
index_name: None,
255255
index_type: None,
256-
columns: vec!["bar".into()],
256+
columns: vec![],
257257
index_options: vec![],
258258
characteristics: None,
259259
}),

0 commit comments

Comments
 (0)