Skip to content

Commit 335c627

Browse files
authored
Merge pull request #258 from xnuinside/v1.5.1_minor_addition
V1.5.1 minor addition
2 parents b743e1d + 402c6e9 commit 335c627

File tree

7 files changed

+18247
-18044
lines changed

7 files changed

+18247
-18044
lines changed

CHANGELOG.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
**v1.5.1**
2+
### Improvements
3+
#### MySQL
4+
5+
1. Added support for INDEX statement in column definition - https://github.com/xnuinside/simple-ddl-parser/issues/253
6+
2.
7+
8+
19
**v1.5.0**
210

311
### Fixes

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,14 @@ for help with debugging & testing support for BigQuery dialect DDLs:
490490

491491

492492
## Changelog
493+
**v1.5.1**
494+
### Improvements
495+
#### MySQL
496+
497+
1. Added support for INDEX statement in column definition - https://github.com/xnuinside/simple-ddl-parser/issues/253
498+
2.
499+
500+
493501
**v1.5.0**
494502

495503
### Fixes

docs/README.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,18 @@ for help with debugging & testing support for BigQuery dialect DDLs:
555555
Changelog
556556
---------
557557

558+
**v1.5.1**
559+
560+
Improvements
561+
^^^^^^^^^^^^
562+
563+
MySQL
564+
~~~~~
565+
566+
567+
#. Added support for INDEX statement in column definition - https://github.com/xnuinside/simple-ddl-parser/issues/253
568+
2.
569+
558570
**v1.5.0**
559571

560572
Fixes

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.5.0"
3+
version = "1.5.1"
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 <xnuinside@gmail.com>"]
66
license = "MIT"

simple_ddl_parser/dialects/sql.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,8 @@ def get_column_properties(p_list: List) -> Tuple:
419419
default = None
420420
unique = False
421421
references = None
422+
index = False
423+
422424
if isinstance(p_list[-1], str):
423425
if p_list[-1].upper() == "KEY":
424426
if p_list[-2].upper() == "UNIQUE":
@@ -432,7 +434,9 @@ def get_column_properties(p_list: List) -> Tuple:
432434
p_list[-1]["references"]["column"] = p_list[-1]["references"]["columns"][0]
433435
del p_list[-1]["references"]["columns"]
434436
references = p_list[-1]["references"]
435-
return pk, default, unique, references, nullable
437+
if p_list[-1] == "INDEX":
438+
index = True
439+
return pk, default, unique, references, nullable, index
436440

437441
def p_autoincrement(self, p: List) -> None:
438442
"""autoincrement : AUTOINCREMENT"""
@@ -445,6 +449,7 @@ def p_defcolumn(self, p: List) -> None:
445449
| defcolumn PRIMARY KEY
446450
| defcolumn UNIQUE KEY
447451
| defcolumn UNIQUE
452+
| defcolumn INDEX
448453
| defcolumn check_ex
449454
| defcolumn default
450455
| defcolumn collate
@@ -470,7 +475,9 @@ def p_defcolumn(self, p: List) -> None:
470475
p[0] = p[1]
471476
p_list = list(p)
472477

473-
pk, default, unique, references, nullable = self.get_column_properties(p_list)
478+
pk, default, unique, references, nullable, index = self.get_column_properties(
479+
p_list
480+
)
474481

475482
self.set_property(p)
476483

@@ -486,6 +493,8 @@ def p_defcolumn(self, p: List) -> None:
486493
if isinstance(p_list[-1], dict) and p_list[-1].get("encode"):
487494
p[0]["encode"] = p[0].get("encode", p_list[-1]["encode"])
488495
p[0]["check"] = self.set_check_in_columm(p[0].get("check"))
496+
if index:
497+
p[0]["index"] = index
489498

490499
@staticmethod
491500
def set_check_in_columm(check: Optional[List]) -> Optional[str]:

simple_ddl_parser/parsetab.py

Lines changed: 18172 additions & 18041 deletions
Large diffs are not rendered by default.

tests/dialects/test_mysql.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -557,3 +557,38 @@ def test_auto_increment_table_property():
557557

558558
result = DDLParser(ddl).run(output_mode="mysql")
559559
assert result == expected
560+
561+
562+
def test_column_index():
563+
ddl = """CREATE TABLE `posts`(
564+
`integer_column__index` INT NOT NULL INDEX
565+
);"""
566+
567+
result = DDLParser(ddl).run()
568+
expected = [
569+
{
570+
"alter": {},
571+
"checks": [],
572+
"columns": [
573+
{
574+
"check": None,
575+
"default": None,
576+
"index": True,
577+
"name": "`integer_column__index`",
578+
"nullable": False,
579+
"references": None,
580+
"size": None,
581+
"type": "INT",
582+
"unique": False,
583+
}
584+
],
585+
"index": [],
586+
"partitioned_by": [],
587+
"primary_key": [],
588+
"schema": None,
589+
"table_name": "`posts`",
590+
"tablespace": None,
591+
}
592+
]
593+
594+
assert result == expected

0 commit comments

Comments
 (0)