@@ -17138,7 +17138,7 @@ fn test_parse_semantic_view_table_factor() {
17138
17138
}
17139
17139
17140
17140
let ast_sql = r#"SELECT * FROM SEMANTIC_VIEW(
17141
- my_model
17141
+ my_model
17142
17142
DIMENSIONS DATE_PART('year', date_col), region_name
17143
17143
METRICS orders.revenue, orders.count
17144
17144
WHERE active = true
@@ -17193,3 +17193,56 @@ fn parse_adjacent_string_literal_concatenation() {
17193
17193
let sql = "SELECT * FROM t WHERE col = 'Hello' \n ' ' \t 'World!'";
17194
17194
dialects.one_statement_parses_to(sql, r"SELECT * FROM t WHERE col = 'Hello World!'");
17195
17195
}
17196
+
17197
+ #[test]
17198
+ fn parse_invisible_column() {
17199
+ let sql = r#"CREATE TABLE t (foo INT, bar INT INVISIBLE)"#;
17200
+ let stmt = verified_stmt(sql);
17201
+ match stmt {
17202
+ Statement::CreateTable(CreateTable { columns, .. }) => {
17203
+ assert_eq!(
17204
+ columns,
17205
+ vec![
17206
+ ColumnDef {
17207
+ name: "foo".into(),
17208
+ data_type: DataType::Int(None),
17209
+ options: vec![]
17210
+ },
17211
+ ColumnDef {
17212
+ name: "bar".into(),
17213
+ data_type: DataType::Int(None),
17214
+ options: vec![ColumnOptionDef {
17215
+ name: None,
17216
+ option: ColumnOption::Invisible
17217
+ }]
17218
+ }
17219
+ ]
17220
+ );
17221
+ }
17222
+ _ => panic!("Unexpected statement {stmt}"),
17223
+ }
17224
+
17225
+ let sql = r#"ALTER TABLE t ADD COLUMN bar INT INVISIBLE"#;
17226
+ let stmt = verified_stmt(sql);
17227
+ match stmt {
17228
+ Statement::AlterTable { operations, .. } => {
17229
+ assert_eq!(
17230
+ operations,
17231
+ vec![AlterTableOperation::AddColumn {
17232
+ column_keyword: true,
17233
+ if_not_exists: false,
17234
+ column_def: ColumnDef {
17235
+ name: "bar".into(),
17236
+ data_type: DataType::Int(None),
17237
+ options: vec![ColumnOptionDef {
17238
+ name: None,
17239
+ option: ColumnOption::Invisible
17240
+ }]
17241
+ },
17242
+ column_position: None
17243
+ }]
17244
+ );
17245
+ }
17246
+ _ => panic!("Unexpected statement {stmt}"),
17247
+ }
17248
+ }
0 commit comments