mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-08-27 09:24:04 +00:00
Add most of the SQL:2011 data types
This commit is contained in:
parent
f56846098e
commit
0339558d4e
2 changed files with 52 additions and 1 deletions
|
@ -8,5 +8,5 @@ Goals for this version:
|
||||||
- Good error reporting (e.g. show line / column numbers and descriptive messages)
|
- Good error reporting (e.g. show line / column numbers and descriptive messages)
|
||||||
- Zero-copy of tokens when parsing
|
- Zero-copy of tokens when parsing
|
||||||
- Concise code
|
- Concise code
|
||||||
|
- Full support for ANSI SQL:2011 standard
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,57 @@ use std::fmt::Debug;
|
||||||
|
|
||||||
use super::tokenizer::*;
|
use super::tokenizer::*;
|
||||||
|
|
||||||
|
// https://jakewheat.github.io/sql-overview/sql-2011-foundation-grammar.html
|
||||||
|
|
||||||
|
/// ANSI SQL:2011 Data Types
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum SQLDataType<T> {
|
||||||
|
/// BOOLEAN
|
||||||
|
Boolean,
|
||||||
|
/// NUMERIC, DECIMAL, DEC
|
||||||
|
Numeric { precision: usize, scale: Option<usize> },
|
||||||
|
/// SMALLINT
|
||||||
|
SmallInt,
|
||||||
|
/// INT, INTEGER
|
||||||
|
Int,
|
||||||
|
/// BIGINT
|
||||||
|
BigInt,
|
||||||
|
/// Floating point: `FLOAT(precision)`
|
||||||
|
Float(usize),
|
||||||
|
/// REAL
|
||||||
|
Real,
|
||||||
|
/// Double: `DOUBLE PRECISION`
|
||||||
|
Double,
|
||||||
|
/// Fixed-length character. `CHAR, CHARACTER`
|
||||||
|
Char(usize),
|
||||||
|
/// Variable-length character: `VARCHAR, CHARACTER VARYING, CHAR VARYING`
|
||||||
|
VarChar(usize),
|
||||||
|
/// Character Large Object: `CHARACTER LARGE OBJECT, CHAR LARGE OBJECT, CLOB`
|
||||||
|
Clob(usize),
|
||||||
|
/// Fixed-length character. `NCHAR, NATIONAL CHAR, NATIONAL CHARACTER`
|
||||||
|
NChar(usize),
|
||||||
|
/// Variable-length character: `NCHAR VARYING, NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING`
|
||||||
|
NVarChar(usize),
|
||||||
|
/// National Character Large Object: `NATIONAL CHARACTER LARGE OBJECT, NCHAR LARGE OBJECT, NCLOB`
|
||||||
|
NClob(usize),
|
||||||
|
/// Fixed-length binary
|
||||||
|
Binary(usize),
|
||||||
|
/// Variable-length binary
|
||||||
|
VarBinary(usize),
|
||||||
|
/// Binary large object
|
||||||
|
Blob(usize),
|
||||||
|
/// Date
|
||||||
|
Date,
|
||||||
|
/// Time: `TIME [(precision)] [WITH TIME ZONE | WITHOUT TIME ZONE]`
|
||||||
|
Time { precision: usize, tz: bool },
|
||||||
|
/// Time: `TIMESTAMP [(precision)] [WITH TIME ZONE | WITHOUT TIME ZONE]`
|
||||||
|
Timestamp { precision: usize, tz: bool },
|
||||||
|
/// Custom data type
|
||||||
|
Custom(T)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum SQLOperator<T> {
|
pub enum SQLOperator<T> {
|
||||||
Plus,
|
Plus,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue