@@ -177,6 +177,7 @@ def parse_complex_type(p_list: List[str]) -> str:
177177 if isinstance (p_list [1 ], dict ):
178178 _type = p_list [1 ]["type" ]
179179 start_index = 2
180+
180181 for elem in p_list [start_index :]:
181182 if isinstance (elem , list ):
182183 for _elem in elem :
@@ -202,7 +203,6 @@ def p_c_type(self, p: List) -> None:
202203 p [0 ] = {}
203204 p_list = remove_par (list (p ))
204205 _type = None
205-
206206 if len (p_list ) == 2 :
207207 _type = p_list [- 1 ]
208208 elif isinstance (p [1 ], str ) and p [1 ].lower () == "encode" :
@@ -302,7 +302,11 @@ def process_type_to_column_data(self, p_list, p):
302302 p [0 ][key ] = value
303303 else :
304304 # for [] arrays
305- p [0 ]["type" ] += p_list [- 1 ]["type" ]
305+ if "[]" in p_list [- 1 ]["type" ]:
306+ p [0 ]["type" ] += p_list [- 1 ]["type" ]
307+ else :
308+ # types like int UNSIGNED
309+ p [0 ]["type" ] += f' { p_list [- 1 ]["type" ]} '
306310 del p_list [- 1 ]
307311 return False
308312
@@ -483,7 +487,13 @@ def p_expression_schema(self, p: List) -> None:
483487 if isinstance (p_list [- 1 ], dict ):
484488 p [0 ].update (p_list [- 1 ])
485489 elif len (p ) > 2 :
486- p [0 ]["authorization" ] = p [2 ]
490+ if p [0 ].get ("schema" ) is not None :
491+ # then is is a authorization schema property
492+ p [0 ]["authorization" ] = p [2 ]
493+ else :
494+ if isinstance (p_list [- 2 ], dict ):
495+ last_key = list (p_list [- 2 ].keys ())[- 1 ]
496+ p [0 ][last_key ] = p_list [- 1 ]
487497
488498 def set_properties_for_schema_and_database (self , p : List , p_list : List ) -> None :
489499 if not p [0 ].get ("properties" ):
0 commit comments