Skip to content

Commit 398a810

Browse files
authored
Support for unquoted hyphenated identifiers on bigquery (#1109)
1 parent 498708c commit 398a810

File tree

7 files changed

+298
-175
lines changed

7 files changed

+298
-175
lines changed

src/dialect/mysql.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ fn parse_lock_tables(parser: &mut Parser) -> Result<Statement, ParserError> {
8282

8383
// tbl_name [[AS] alias] lock_type
8484
fn parse_lock_table(parser: &mut Parser) -> Result<LockTable, ParserError> {
85-
let table = parser.parse_identifier()?;
85+
let table = parser.parse_identifier(false)?;
8686
let alias =
8787
parser.parse_optional_alias(&[Keyword::READ, Keyword::WRITE, Keyword::LOW_PRIORITY])?;
8888
let lock_type = parse_lock_tables_type(parser)?;

src/dialect/postgresql.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,11 @@ pub fn parse_comment(parser: &mut Parser) -> Result<Statement, ParserError> {
5757

5858
let (object_type, object_name) = match token.token {
5959
Token::Word(w) if w.keyword == Keyword::COLUMN => {
60-
let object_name = parser.parse_object_name()?;
60+
let object_name = parser.parse_object_name(false)?;
6161
(CommentObject::Column, object_name)
6262
}
6363
Token::Word(w) if w.keyword == Keyword::TABLE => {
64-
let object_name = parser.parse_object_name()?;
64+
let object_name = parser.parse_object_name(false)?;
6565
(CommentObject::Table, object_name)
6666
}
6767
_ => parser.expected("comment object_type", token)?,

src/dialect/snowflake.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ pub fn parse_create_stage(
9191
) -> Result<Statement, ParserError> {
9292
//[ IF NOT EXISTS ]
9393
let if_not_exists = parser.parse_keywords(&[Keyword::IF, Keyword::NOT, Keyword::EXISTS]);
94-
let name = parser.parse_object_name()?;
94+
let name = parser.parse_object_name(false)?;
9595
let mut directory_table_params = Vec::new();
9696
let mut file_format = Vec::new();
9797
let mut copy_options = Vec::new();
@@ -181,7 +181,7 @@ pub fn parse_snowflake_stage_name(parser: &mut Parser) -> Result<ObjectName, Par
181181
}
182182
_ => {
183183
parser.prev_token();
184-
Ok(parser.parse_object_name()?)
184+
Ok(parser.parse_object_name(false)?)
185185
}
186186
}
187187
}
@@ -219,7 +219,7 @@ pub fn parse_copy_into(parser: &mut Parser) -> Result<Statement, ParserError> {
219219
}
220220
_ => {
221221
parser.prev_token();
222-
from_stage = parser.parse_object_name()?;
222+
from_stage = parser.parse_object_name(false)?;
223223
stage_params = parse_stage_params(parser)?;
224224

225225
// as

src/parser/alter.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,17 @@ impl<'a> Parser<'a> {
3737
}
3838

3939
fn parse_mssql_alter_role(&mut self) -> Result<Statement, ParserError> {
40-
let role_name = self.parse_identifier()?;
40+
let role_name = self.parse_identifier(false)?;
4141

4242
let operation = if self.parse_keywords(&[Keyword::ADD, Keyword::MEMBER]) {
43-
let member_name = self.parse_identifier()?;
43+
let member_name = self.parse_identifier(false)?;
4444
AlterRoleOperation::AddMember { member_name }
4545
} else if self.parse_keywords(&[Keyword::DROP, Keyword::MEMBER]) {
46-
let member_name = self.parse_identifier()?;
46+
let member_name = self.parse_identifier(false)?;
4747
AlterRoleOperation::DropMember { member_name }
4848
} else if self.parse_keywords(&[Keyword::WITH, Keyword::NAME]) {
4949
if self.consume_token(&Token::Eq) {
50-
let role_name = self.parse_identifier()?;
50+
let role_name = self.parse_identifier(false)?;
5151
AlterRoleOperation::RenameRole { role_name }
5252
} else {
5353
return self.expected("= after WITH NAME ", self.peek_token());
@@ -63,25 +63,25 @@ impl<'a> Parser<'a> {
6363
}
6464

6565
fn parse_pg_alter_role(&mut self) -> Result<Statement, ParserError> {
66-
let role_name = self.parse_identifier()?;
66+
let role_name = self.parse_identifier(false)?;
6767

6868
// [ IN DATABASE _`database_name`_ ]
6969
let in_database = if self.parse_keywords(&[Keyword::IN, Keyword::DATABASE]) {
70-
self.parse_object_name().ok()
70+
self.parse_object_name(false).ok()
7171
} else {
7272
None
7373
};
7474

7575
let operation = if self.parse_keyword(Keyword::RENAME) {
7676
if self.parse_keyword(Keyword::TO) {
77-
let role_name = self.parse_identifier()?;
77+
let role_name = self.parse_identifier(false)?;
7878
AlterRoleOperation::RenameRole { role_name }
7979
} else {
8080
return self.expected("TO after RENAME", self.peek_token());
8181
}
8282
// SET
8383
} else if self.parse_keyword(Keyword::SET) {
84-
let config_name = self.parse_object_name()?;
84+
let config_name = self.parse_object_name(false)?;
8585
// FROM CURRENT
8686
if self.parse_keywords(&[Keyword::FROM, Keyword::CURRENT]) {
8787
AlterRoleOperation::Set {
@@ -117,7 +117,7 @@ impl<'a> Parser<'a> {
117117
in_database,
118118
}
119119
} else {
120-
let config_name = self.parse_object_name()?;
120+
let config_name = self.parse_object_name(false)?;
121121
AlterRoleOperation::Reset {
122122
config_name: ResetConfig::ConfigName(config_name),
123123
in_database,

0 commit comments

Comments
 (0)