U ofc@s8ddlmZddlZddlmZddlmZddlmZddlmZddl m Z dd l m Z dd l m Z dd l m Z dd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddlmZddlmZer"ddlmZddlmZddlm Z GdddeZ!ee dddd d!d"d#Z"eedd$dd d!d%d&Z#eedd'dd d!d(d)Z$eedd*dd d!d+d,Z%ee dd-dd d!d.d/Z&ee dd0dd d!d1d2Z'eedd3dd d!d4d5Z(dd d d6d7d8Z)dd9d d:d;d<Z*eedd=dd>d?d@Z+dS)A) annotationsN)Any)Optional) TYPE_CHECKING)sqltypes) AddColumn) alter_table) ColumnComment) ColumnDefault) ColumnName)ColumnNullable) ColumnTypeformat_column_name)format_server_default)format_table_name) format_type)IdentityColumnDefault) RenameTable) DefaultImpl)compiles)OracleDDLCompiler) CursorResult)ColumncseZdZdZdZdZdZejddhddd d d d hd ddhfZdZ ddfdd Z dddfdd Z ddZ ddddZ ddddZZS) OracleImploracleF/ZVARCHARZVARCHAR2ZBIGINTZINTEGERZSMALLINTZDECIMALZNUMERICNUMBERDOUBLEFLOATZDOUBLE_PRECISIONNone)returncs$tj|||jd|j|_dS)NZoracle_batch_separator)super__init__Z context_optsgetbatch_separator)selfargkw __class__r#@/opt/hc_python/lib/python3.8/site-packages/alembic/ddl/oracle.pyr'/s zOracleImpl.__init__rzOptional[CursorResult]) constructr%cs0tj|f||}|jr,|jr,||j|S)N)r&_execZas_sqlr)Z static_output)r*r0argsr,resultr-r#r/r15s  zOracleImpl._execcCsX|dk r$tdd|}tdd|}|dk rPtdd|}tdd|}|}||kS)Nz ^\((.+)\)$z\1z^\"?'(.+)'\"?$)resubstrip)r*Zinspector_columnZmetadata_columnZrendered_metadata_defaultZrendered_inspector_defaultr#r#r/compare_server_default;s0z!OracleImpl.compare_server_defaultcCs|ddS)NzSET TRANSACTION READ WRITEr1r*r#r#r/ emit_beginWszOracleImpl.emit_begincCs|ddS)NZCOMMITr8r9r#r#r/ emit_commitZszOracleImpl.emit_commit)__name__ __module__ __qualname__Z __dialect__Ztransactional_ddlr)Zcommand_terminatorrZ type_synonymsZidentity_attrs_ignorer'r1r7r:r; __classcell__r#r#r-r/r#srrrrstr)elementcompilerr%cKs$dt||j|jt||jf|fS)Nz%s %s)r table_nameschema add_columncolumnrArBr,r#r#r/visit_add_column^srHr cKs,dt||j|jt||j|jr$dndfS)N%s %s %sZNULLzNOT NULL)r rCrD alter_column column_nameZnullablerGr#r#r/visit_column_nullablehs   rLrcKs.dt||j|jt||jdt||jfS)NrIz%s)r rCrDrJrKrtype_rGr#r#r/visit_column_typess  rNr cKs*dt||j|jt||jt||jfS)Nz%s RENAME COLUMN %s TO %s)r rCrDrrKZnewnamerGr#r#r/visit_column_name~s   rOr cKs<dt||j|jt||j|jdk r4dt||jndfS)NrIz DEFAULT %sz DEFAULT NULL)r rCrDrJrKdefaultrrGr#r#r/visit_column_defaults rQr cKs:d}|j|jdk r|jndt}|j|j|j|dS)Nz9COMMENT ON COLUMN {table_name}.{column_name} IS {comment}r)rCrKcomment)Z sql_compilerZrender_literal_valuerRrStringformatrCrK)rArBr,ZddlrRr#r#r/visit_column_commentsrUrcKs"dt||j|jt||jdfS)Nz%s RENAME TO %s)r rCrDrZnew_table_namerGr#r#r/visit_rename_tables rV)rBnamer%cCsdt||S)Nz MODIFY %sr)rBrWr#r#r/rJsrJz Column[Any])rBrFr%cKsd|j|f|S)NzADD %s)Zget_column_specification)rBrFr,r#r#r/rEsrEr)rArBcKsNdt||j|jt||jf}|jdkr6|d7}|S|||j7}|SdS)Nz%s %s z DROP IDENTITY)r rCrDrJrKrPvisit_identity_column)rArBr,textr#r#r/rXs  rX), __future__rr4typingrrrZsqlalchemy.sqlrbaserr r r r r rrrrrrrimplrZutil.sqla_compatrZsqlalchemy.dialects.oracle.baserZsqlalchemy.engine.cursorrZsqlalchemy.sql.schemarrrHrLrNrOrQrUrVrJrErXr#r#r#r/sV                       ;