
    Pqh                       d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ erd dlmZ d dlmZ d dlm Z   G d de      Z! eed      	 	 	 	 	 	 d'd       Z" eed      	 	 	 	 	 	 d(d       Z# eed      	 	 	 	 	 	 d)d       Z$ eed      	 	 	 	 	 	 d*d        Z% eed      	 	 	 	 	 	 d+d!       Z& eed      	 	 	 	 	 	 d,d"       Z' eed      	 	 	 	 	 	 d-d#       Z(d.d$Z)d/d%Z* eed      	 	 	 	 d0d&       Z+y)1    )annotationsN)Any)Optional)TYPE_CHECKING)compiles)sqltypes   )	AddColumn)alter_table)ColumnComment)ColumnDefault)
ColumnName)ColumnNullable)
ColumnTypeformat_column_name)format_server_default)format_table_name)format_type)IdentityColumnDefault)RenameTable)DefaultImpl)OracleDDLCompiler)CursorResult)Columnc                       e Zd ZdZdZdZdZej                  ddhh dh dfz   Zd	Z	d fd
Z
d fdZd ZddZddZ xZS )
OracleImploracleF/ VARCHARVARCHAR2>   BIGINTNUMBERDECIMALINTEGERNUMERICSMALLINT>   FLOATDOUBLEDOUBLE_PRECISION c                z    t        |   |i | | j                  j                  d| j                        | _        y )Noracle_batch_separator)super__init__context_optsgetbatch_separator)selfargkw	__class__s      S/srv/www/ollama/chat-ollama/venv/lib/python3.12/site-packages/alembic/ddl/oracle.pyr0   zOracleImpl.__init__,   s9    #$$#0044$d&:&: 
    c                    t        |   |g|i |}| j                  r'| j                  r| j	                  | j                         |S )N)r/   _execas_sqlr3   static_output)r4   	constructargsr6   resultr7   s        r8   r;   zOracleImpl._exec2   sC    y64626;;4//t334r9   c                    |.t        j                  dd|      }t        j                  dd|      }|>t        j                  dd|      }t        j                  dd|      }|j                         }||k7  S )Nz
^\((.+)\)$z\1z^\"?'(.+)'\"?$)resubstrip)r4   inspector_columnmetadata_columnrendered_metadata_defaultrendered_inspector_defaults        r8   compare_server_defaultz!OracleImpl.compare_server_default8   s     %0(*u&?)% )+!5*C)% &1)+u&@*& *,!5*D*& *D)I)I)K&)-FFFr9   c                &    | j                  d       y )NzSET TRANSACTION READ WRITEr;   r4   s    r8   
emit_beginzOracleImpl.emit_beginT   s    

/0r9   c                &    | j                  d       y )NCOMMITrK   rL   s    r8   emit_commitzOracleImpl.emit_commitW   s    

8r9   )returnNone)r>   r   rQ   zOptional[CursorResult])__name__
__module____qualname____dialect__transactional_ddlr3   command_terminatorr   type_synonymsidentity_attrs_ignorer0   r;   rI   rM   rP   __classcell__)r7   s   @r8   r   r       s^    KO--	JI/1 M
 
G81r9   r   r   c                x    t        || j                  | j                        dt        || j                  fi |S )N )r   
table_nameschema
add_columncolumnelementcompilerr6   s      r8   visit_add_columnre   [   s7    
 	Hg00'..A8W^^2r2 r9   c                    t        || j                  | j                        dt        || j                        d| j
                  rdS dS )Nr]   NULLzNOT NULL)r   r^   r_   alter_columncolumn_namenullablerb   s      r8   visit_column_nullablerk   e   sT    
 	Hg00'..AXw223""2  )32 r9   c           	         t        || j                  | j                        dt        || j                        ddt        || j                        z  S )Nr]   z%s)r   r^   r_   rh   ri   r   type_rb   s      r8   visit_column_typern   p   sG    
 	Hg00'..AXw223{8W]]33 r9   c                    t        || j                  | j                        dt        || j                        dt        || j
                        S )Nz RENAME COLUMN z TO )r   r^   r_   r   ri   newnamerb   s      r8   visit_column_namerq   {   sB    
 	Hg00'..A8W%8%898W__5 r9   c           	         t        || j                  | j                        dt        || j                        d| j
                  dt        || j
                        z  S dS )Nr]   z
DEFAULT %szDEFAULT NULL)r   r^   r_   rh   ri   defaultr   rb   s      r8   visit_column_defaultrt      sm    
 	Hg00'..AXw223??& 	,XwGG 	 
 	 r9   c                    d}|j                   j                  | j                  | j                  ndt        j                               }|j                  | j                  | j                  |      S )Nz9COMMENT ON COLUMN {table_name}.{column_name} IS {comment}r    )r^   ri   comment)sql_compilerrender_literal_valuerv   r   Stringformatr^   ri   )rc   rd   r6   ddlrv   s        r8   visit_column_commentr|      si     FC##88#OO7RG
 ::%%''   r9   c                x    t        || j                  | j                        dt        || j                  d       S )Nz RENAME TO )r   r^   r_   r   new_table_namerb   s      r8   visit_rename_tabler      s6    
 	Hg00'..A(G$:$:DA r9   c                     dt        | |      z  S )Nz	MODIFY %sr   )rd   names     r8   rh   rh      s    +Hd;;;r9   c                .    d | j                   |fi |z  S )NzADD %s)get_column_specification)rd   ra   r6   s      r8   r`   r`      s     7h77E"EEEr9   c                    t        || j                  | j                        dt        || j                        d}| j
                  |dz  }|S ||j                  | j
                        z  }|S )Nr]   zDROP IDENTITY)r   r^   r_   rh   ri   rs   visit_identity_column)rc   rd   r6   texts       r8   r   r      sj    
 	Hg00'..AXw223D ..w??r9   )rc   r
   rd   r   rQ   str)rc   r   rd   r   rQ   r   )rc   r   rd   r   rQ   r   )rc   r   rd   r   rQ   r   )rc   r   rd   r   rQ   r   )rc   r   rd   r   rQ   r   )rc   r   rd   r   rQ   r   )rd   r   r   r   rQ   r   )rd   r   ra   zColumn[Any]rQ   r   )rc   r   rd   r   ),
__future__r   rB   typingr   r   r   sqlalchemy.ext.compilerr   sqlalchemy.sqlr   baser
   r   r   r   r   r   r   r   r   r   r   r   r   implr   sqlalchemy.dialects.oracle.baser   sqlalchemy.engine.cursorr   sqlalchemy.sql.schemar   r   re   rk   rn   rq   rt   r|   r   rh   r`   r   r,   r9   r8   <module>r      s   " 	     , #         $ ' #  '  A5,8 8v 
)X"3  
.(#'8 $ 
*h#4   
*h#4   
-"		&7		 #	 
-"&7 #" 
+x $5 !<F 

*".? +r9   