Skip to content

Commit 2007995

Browse files
committed
Improve the create statement parser that uses create statements from pg database dump
Added PostgreSQL style casting
1 parent 7d27abd commit 2007995

File tree

6 files changed

+392
-81
lines changed

6 files changed

+392
-81
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ name = "sqlparser"
1818
path = "src/lib.rs"
1919

2020
[dependencies]
21+
log = "0.4.5"

src/dialect.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,12 @@ impl Dialect for GenericSqlDialect {
432432
"DATE",
433433
"TIME",
434434
"TIMESTAMP",
435+
"VALUES",
436+
"DEFAULT",
437+
"ZONE",
438+
"REGCLASS",
439+
"TEXT",
440+
"BYTEA",
435441
];
436442
}
437443

src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@
3535
//! println!("AST: {:?}", ast);
3636
//! ```
3737
38+
#[macro_use]
39+
extern crate log;
40+
3841
pub mod dialect;
3942
pub mod sqlast;
4043
pub mod sqlparser;

src/sqlast.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,15 +135,16 @@ pub struct SQLColumnDef {
135135
pub name: String,
136136
pub data_type: SQLType,
137137
pub allow_null: bool,
138+
pub default: Option<Box<ASTNode>>,
138139
}
139140

140141
/// SQL datatypes for literals in SQL statements
141142
#[derive(Debug, Clone, PartialEq)]
142143
pub enum SQLType {
143144
/// Fixed-length character type e.g. CHAR(10)
144-
Char(usize),
145+
Char(Option<usize>),
145146
/// Variable-length character type e.g. VARCHAR(10)
146-
Varchar(usize),
147+
Varchar(Option<usize>),
147148
/// Large character object e.g. CLOB(1000)
148149
Clob(usize),
149150
/// Fixed-length binary type e.g. BINARY(10)
@@ -174,6 +175,16 @@ pub enum SQLType {
174175
Time,
175176
/// Timestamp
176177
Timestamp,
178+
/// Regclass used in postgresql serial
179+
Regclass,
180+
/// Text
181+
Text,
182+
/// Bytea
183+
Bytea,
184+
/// Custom type such as enums
185+
Custom(String),
186+
/// Arrays
187+
Array(Box<SQLType>),
177188
}
178189

179190
/// SQL Operator

0 commit comments

Comments
 (0)