Skip to content

Commit 18bfcdc

Browse files
authored
Merge pull request #247 from xnuinside/v1.2.0_release
V1.2.0 release
2 parents c13ad11 + 3a3815c commit 18bfcdc

File tree

13 files changed

+26242
-25005
lines changed

13 files changed

+26242
-25005
lines changed

CHANGELOG.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
1+
**v1.2.0**
2+
### Fixes
3+
MySQL:
4+
1. Fixed issue relative to auto_increment that caused empty output if auto_increment defined in table properties -
5+
https://github.com/xnuinside/simple-ddl-parser/issues/206
6+
7+
### Improvements
8+
MySQL:
9+
1. auto_increment added as property to mysql output
10+
11+
Oracle:
12+
1. Added support for constraint name in column definition - https://github.com/xnuinside/simple-ddl-parser/issues/203
13+
2. Added support for GENERATED (ALWAYS | (BY DEFAULT [ON NULL])) AS IDENTITY in column definition
14+
15+
PostgreSQL:
16+
1. Added support for CAST statement in column GENERATE ALWAYS expression - https://github.com/xnuinside/simple-ddl-parser/issues/198
17+
18+
119
**v1.1.0**
220
### Improvements
321
MySQL:

README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,24 @@ for help with debugging & testing support for BigQuery dialect DDLs:
486486

487487

488488
## Changelog
489+
**v1.2.0**
490+
### Fixes
491+
MySQL:
492+
1. Fixed issue relative to auto_increment that caused empty output if auto_increment defined in table properties -
493+
https://github.com/xnuinside/simple-ddl-parser/issues/206
494+
495+
### Improvements
496+
MySQL:
497+
1. auto_increment added as property to mysql output
498+
499+
Oracle:
500+
1. Added support for constraint name in column definition - https://github.com/xnuinside/simple-ddl-parser/issues/203
501+
2. Added support for GENERATED (ALWAYS | (BY DEFAULT [ON NULL])) AS IDENTITY in column definition
502+
503+
PostgreSQL:
504+
1. Added support for CAST statement in column GENERATE ALWAYS expression - https://github.com/xnuinside/simple-ddl-parser/issues/198
505+
506+
489507
**v1.1.0**
490508
### Improvements
491509
MySQL:

docs/README.rst

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,36 @@ for help with debugging & testing support for BigQuery dialect DDLs:
549549
Changelog
550550
---------
551551

552+
**v1.2.0**
553+
554+
Fixes
555+
^^^^^
556+
557+
MySQL:
558+
559+
560+
#. Fixed issue relative to auto_increment that caused empty output if auto_increment defined in table properties -
561+
https://github.com/xnuinside/simple-ddl-parser/issues/206
562+
563+
Improvements
564+
^^^^^^^^^^^^
565+
566+
MySQL:
567+
568+
569+
#. auto_increment added as property to mysql output
570+
571+
Oracle:
572+
573+
574+
#. Added support for constraint name in column definition - https://github.com/xnuinside/simple-ddl-parser/issues/203
575+
#. Added support for GENERATED (ALWAYS | (BY DEFAULT [ON NULL])) AS IDENTITY in column definition
576+
577+
PostgreSQL:
578+
579+
580+
#. Added support for CAST statement in column GENERATE ALWAYS expression - https://github.com/xnuinside/simple-ddl-parser/issues/198
581+
552582
**v1.1.0**
553583

554584
Improvements

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "simple-ddl-parser"
3-
version = "1.1.0"
3+
version = "1.2.0"
44
description = "Simple DDL Parser to parse SQL & dialects like HQL, TSQL (MSSQL), Oracle, AWS Redshift, Snowflake, MySQL, PostgreSQL, etc ddl files to json/python dict with full information about columns: types, defaults, primary keys, etc.; sequences, alters, custom types & other entities from ddl."
55
authors = ["Iuliia Volkova <[email protected]>"]
66
license = "MIT"

simple_ddl_parser/ddl_parser.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,10 @@ def exceptional_cases(self, value: str) -> bool:
170170

171171
def t_AUTOINCREMENT(self, t: LexToken):
172172
r"(?i:AUTO_INCREMENT|AUTOINCREMENT)\b"
173-
t.type = "AUTOINCREMENT"
173+
if not self.lexer.after_columns:
174+
t.type = "AUTOINCREMENT"
175+
else:
176+
t.type = "ID"
174177
return self.set_last_token(t)
175178

176179
def t_ID(self, t: LexToken):

simple_ddl_parser/dialects/oracle.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,10 @@ def p_expr_index(self, p: List) -> None:
6262
"""expr : expr ID INDEX"""
6363
p[0] = p[1]
6464
p[0][f"{p[2].lower()}_index"] = True
65+
66+
def p_generated_by(self, p: List) -> None:
67+
"""generated_by : GENERATED BY DEFAULT ON NULL AS ID
68+
| GENERATED BY ID AS ID
69+
| GENERATED BY DEFAULT AS ID"""
70+
p_list = list(p)
71+
p[0] = {"generated_by": " ".join(p_list[3:]).upper()}

simple_ddl_parser/dialects/sql.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,8 @@ def p_defcolumn(self, p: List) -> None:
417417
| defcolumn option_with_tag
418418
| defcolumn option_with_masking_policy
419419
| defcolumn as_virtual
420+
| defcolumn constraint
421+
| defcolumn generated_by
420422
"""
421423
p[0] = p[1]
422424
p_list = list(p)
@@ -1387,11 +1389,15 @@ def p_f_call(self, p: List) -> None:
13871389
| id LP f_call RP
13881390
| id LP multi_id RP
13891391
| id LP pid RP
1392+
| id LP id AS id RP
13901393
"""
13911394
p_list = list(p)
13921395
if isinstance(p[1], list):
13931396
p[0] = p[1]
13941397
p[0].append(p_list[-1])
1398+
elif p_list[1].upper() == "CAST":
1399+
p_list = remove_par(p_list)
1400+
p[0] = {"cast": {"value": p_list[2], "as": p_list[4]}}
13951401
else:
13961402
value = ""
13971403
for elem in p_list[1:]:
@@ -1410,6 +1416,8 @@ def p_multi_id(self, p: List) -> None:
14101416
if isinstance(p[1], list):
14111417
p[0] = p[1]
14121418
p[0].append(p_list[-1])
1419+
elif isinstance(p_list[1], dict):
1420+
p[0] = p[1]
14131421
else:
14141422
value = " ".join(p_list[1:])
14151423
p[0] = value

simple_ddl_parser/output/dialects.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ class MySSQL(Dialect):
9393
default_charset: Optional[str] = field(
9494
default=None, metadata={"exclude_if_not_provided": True}
9595
)
96+
auto_increment: Optional[str] = field(
97+
default=None, metadata={"exclude_if_not_provided": True}
98+
)
9699

97100

98101
@dataclass

0 commit comments

Comments
 (0)