� J�g�7���ddlmZddlZddlmZddlmZddlmZddlmZddlmZddlm Z dd l m Z dd l mZdd l mZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddl!m"Z"ddl#m$Z$ddl$m%Z%ddl&m'Z'er6dd lm(Z(dd!l)m*Z*dd"l)m+Z+dd#l,m-Z-dd$l.m/Z/dd%l.m0Z0dd&l1m2Z2dd'l3m4Z4dd(lm5Z5Gd)�d*e"��Z6Gd+�d,ee��Z7Gd-�d.ee��Z8e'e7d/��dGd5���Z9e'e8d/��dHd6���Z:e'ed/��dId9���Z;dJd<�Z<e'ed/��dKd>���Z=e'ed/��dLd@���Z>e'ed/��dMdB���Z?e'ed/��dNdD���Z@e'e d/��dOdF���ZAdS)P�)� annotationsN)�Any)�Dict)�List)�Optional)� TYPE_CHECKING)�Union)�types)�Column)� CreateIndex)� Executable)� ClauseElement�)� AddColumn)� alter_column)� alter_table)� ColumnDefault)� ColumnName)�ColumnNullable)� ColumnType)�format_column_name)�format_server_default)�format_table_name)� format_type)� RenameTable)� DefaultImpl�)�util)� sqla_compat)�compiles)�Literal)� MSDDLCompiler)� MSSQLCompiler)� CursorResult)�Index)�Table)� TableClause)� TypeEngine)�_ServerDefaultc����eZdZdZdZdZejddhfzZejdzZd5�fd � Z d6�fd � Z d5d�Z d5�fd� Z d7d8�fd#� Z d9d&�Zd:�fd+� Z d;d<�fd.� Zd/�Z�fd0�Zd=d4�Z�xZS)>� MSSQLImpl�mssqlT�GO�VARCHAR�NVARCHAR)�minvalue�maxvalue� nominvalue� nomaxvalue�cycle�cache�return�Nonec���t��j|i|��|j�d|j��|_dS)N�mssql_batch_separator)�super�__init__� context_opts�get�batch_separator)�self�arg�kw� __class__s ��a/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/alembic/ddl/mssql.pyr;zMSSQLImpl.__init__BsH��������#�$��$�$�$�#�0�4�4� #�T�%9� � ������ constructr�Optional[CursorResult]c���t��j|g|�Ri|��}|jr!|jr|�|j��|S�N)r:�_exec�as_sqlr>� static_output)r?rE�argsrA�resultrBs �rCrIzMSSQLImpl._execHsX��������y�6�4�6�6�6�2�6�6�� �;� 5�4�/� 5� � � �t�3� 4� 4� 4�� rDc�@�|�d|jz��dS)NzBEGIN TRANSACTION)rK�command_terminator)r?s rC� emit_beginzMSSQLImpl.emit_beginNs%�� ���.��1H�H�I�I�I�I�IrDc���t�����|jr#|jr|�|j��dSdSdSrH)r:� emit_commitrJr>rK)r?rBs �rCrRzMSSQLImpl.emit_commitQs^��� �������� �;� 5�4�/� 5� � � �t�3� 4� 4� 4� 4� 4� 5� 5� 5� 5rDNF� table_name�str� column_name�nullable�Optional[bool]�server_default�/Optional[Union[_ServerDefault, Literal[False]]]�name� Optional[str]�type_�Optional[TypeEngine]�schema� existing_type�existing_server_default�Optional[_ServerDefault]�existing_nullablerAc �B��|�|�|}d}n8|�tjd���n!| � |�| }|}d}n|�tjd��d} tj|| ��stj|| ��r d} || d<| | d<t ��j||f||||| d�| ��|durV| durR| dus|�%|�t||d|����|�%t ���||||� ��|�'t ���||||� ��dSdS) NzhMS-SQL ALTER COLUMN operations with NULL or NOT NULL require the existing_type or a new type_ be passed.z�MS-SQL ALTER COLUMN operations that specify type_= should also specify a nullable= or existing_nullable= argument to avoid implicit conversion of NOT NULL columns to NULL.FTrXr`)rVr\r^r_rb�sys.default_constraints)r^rX)r^rZ) r� CommandError�warnr�_server_default_is_identity�_server_default_is_computedr:rrI�_ExecDropConstraint)r?rSrUrVrXrZr\r^r_r`rbrA� used_defaultrBs �rCrzMSSQLImpl.alter_columnVs���� � �� �!&� �����&��'�>����'� � *�u�/@�(�H�"�M��E�E� � � �I�/� � � �� � � 2� �3� � � D� � 4� �3� � � D�  �L�#1�B�� �,C�B�(� )������ � � ����'�/� � �� � � � �� &� &�<�5�+@�+@�&�e�3�3�~�7M�� � �'�"�#�1�� ������)����$�$���!�#1� %���� � � �G�G� � ��K��T� !� � � � � � � rD�indexr%c ��|j�dd��pd}|j�J�|D]B}||jjvr2|j�t |t j�����C|�t|fi|����dS)N� mssql_include�) �kwargsr=�table�c� append_columnr �sqltypes�NullTyperIr )r?rkrArm�cols rC� create_indexzMSSQLImpl.create_index�s���� �(�(��$�?�?�E�2� ��{�&�&�&� � J� J�C��%�+�-�'�'�� �)�)�&��h�6G�*H�*H�I�I�I�� � � �;�u�+�+��+�+�,�,�,�,�,rDrp�Union[TableClause, Table]�rows� List[dict]c �Z��|jr�|�d|jj�|��z��t ��j||fi|��|�d|jj�|��z��dSt ��j||fi|��dS)NzSET IDENTITY_INSERT %s ONzSET IDENTITY_INSERT %s OFF)rJrI�dialect�identifier_preparer� format_tabler:� bulk_insert)r?rprxrArBs �rCr~zMSSQLImpl.bulk_insert�s���� �;� 3� �J�J�+��,�2�?�?��F�F�G� � � � �E�G�G� ��t� 2� 2�r� 2� 2� 2� �J�J�,��,�2�?�?��F�F�G� � � � � � �E�G�G� ��t� 2� 2�r� 2� 2� 2� 2� 2rD�column� Column[Any]c ���|�dd��}|r%|�t||d|����|�dd��}|r%|�t||d|����|�dd��}|r$|�t|||����t ��j||fd|i|��dS)N�mssql_drop_defaultFrd�mssql_drop_checkzsys.check_constraints�mssql_drop_foreign_keyr^)�poprIri�_ExecDropFKConstraintr:� drop_column) r?rSrr^rA� drop_default� drop_check�drop_fksrBs �rCr�zMSSQLImpl.drop_column�s����v�v�2�E�:�:� � � � �J�J�#���(A�6��� � � � �V�V�.��6�6� � � � �J�J�#���(?���� � � � �6�6�2�E�:�:�� � J� �J�J�,�Z���H�H� I� I� I������J��D�D�v�D��D�D�D�D�DrDc�n�|�tjdd|��}|�tjdd|��}||kS)Nz [\(\) \"\']�)�re�sub)r?�inspector_column�metadata_column�rendered_metadata_default�rendered_inspector_defaults rC�compare_server_defaultz MSSQLImpl.compare_server_default�sV�� %� 0�(*����$=�)�)� %� &� 1�*,����$>�*�*� &�*�-F�F�FrDc���t���||��\}}}|�|�|s|j�|jjrd}|||fS)NF)r:�_compare_identity_defaultr� primary_key)r?�metadata_identity�inspector_identity�diff�ignored�is_alterrBs �rCr�z#MSSQLImpl._compare_identity_default�sj���"'�'�'�"C�"C� �1�# �# ���g�x� � %�"�.��/�"�)�5�"�)�5�6� �H��W�h�&�&rD�reflected_object�Dict[str, Any]�kindc��|�di�����}|�d��s|�dd��|�d��s|�dd��|S)N�dialect_optionsrm�mssql_clustered)r=�copyr�)r?r�r��optionss rC� adjust_reflected_dialect_optionsz*MSSQLImpl.adjust_reflected_dialect_options s}��#�&�&�'8�"�=�=�B�B�D�D���{�{�?�+�+� /� �K�K��� .� .� .��{�{�,�-�-� 1� �K�K�)�4� 0� 0� 0��rD)r6r7)rErr6rF)NFNNNNNN)rSrTrUrTrVrWrXrYrZr[r\r]r^r[r_r]r`rarbrWrArr6r7)rkr%rArr6r7)rprwrxryrArr6r7rH)rSrTrr�r^r[r6r7)r�r�r�rTr6r�)�__name__� __module__� __qualname__� __dialect__�transactional_ddlr>r� type_synonyms�identity_attrs_ignorer;rIrPrRrrvr~r�r�r�r�� __classcell__)rBs@rCr+r+3s���������K����O��-�)�Z�1H�0J�J�M�'�=�A��� � � � � � � ������ J�J�J�J�5�5�5�5�5�5�$(� �"�&*� $�.2�<@�,0�V�V�V�V�V�V�V�p -� -� -� -�3�3�3�3�3�3�(!%� E�E�E�E�E�E�E�4G�G�G�,'�'�'�'�'�$ � � � � � � � rDr+c��eZdZdZd d �Zd S)riF�tnamerT�colname�Union[Column[Any], str]r\r^r[r6r7c�>�||_||_||_||_dSrH)r�r�r\r^)r?r�r�r\r^s rCr;z_ExecDropConstraint.__init__s$���� ��� ��� ��� � � rDN) r�rTr�r�r\rTr^r[r6r7�r�r�r�� inherit_cacher;rnrDrCriris-�������M� � � � � � rDric��eZdZdZd d �Zd S) r�Fr�rTr�r�r^r[r6r7c�0�||_||_||_dSrH)r�r�r^)r?r�r�r^s rCr;z_ExecDropFKConstraint.__init__*s���� ��� ��� � � rDN)r�rTr�r�r^r[r6r7r�rnrDrCr�r�'s-�������M������rDr�r,�element�compilerr#r6rTc ��|j|j|j|jf\}}}}d|||t |||��|r|dzndd�zS)Nadeclare @const_name varchar(256) select @const_name = QUOTENAME([name]) from %(type)s where parent_object_id = object_id('%(schema_dot)s%(tname)s') and col_name(parent_object_id, parent_column_id) = '%(colname)s' exec('alter table %(tname_quoted)s drop constraint ' + @const_name)�.r�)�typer�r�� tname_quoted� schema_dot)r^r�r�r\r)r�r�rAr^r�r�r\s rC�_exec_drop_col_constraintr�2sn�� ��� ���� � %�!�F�E�7�E� G� ���)�(�E�6�B�B�&,�4�f�s�l�l�"� J�J� � rDc �l�|j|j|j}}}d||t|||��|r|dzndd�zS)Naydeclare @const_name varchar(256) select @const_name = QUOTENAME([name]) from sys.foreign_keys fk join sys.foreign_key_columns fkc on fk.object_id=fkc.constraint_object_id where fkc.parent_object_id = object_id('%(schema_dot)s%(tname)s') and col_name(fkc.parent_object_id, fkc.parent_column_id) = '%(colname)s' exec('alter table %(tname_quoted)s drop constraint ' + @const_name)r�r�)r�r�r�r�)r^r�r�r)r�r�rAr^r�r�s rC�_exec_drop_col_fk_constraintr�KsZ��%�^�W�]�G�O�7�E�F� G���)�(�E�6�B�B�&,�4�f�s�l�l�"� J�J� � rDrr"c �d�t||j|j���dt||jfi|����S�N� )rrSr^�mssql_add_columnr�r�r�rAs rC�visit_add_columnr�_sB�� �H�g�0�'�.�A�A�A�A���7�>�8�8�R�8�8�8� �rDrr�c �$�d|j|fi|��zS)NzADD %s)�get_column_specification)r�rrAs rCr�r�gs%�� �7�h�7��E�E�"�E�E� E�ErDrc ��t||j|j���dt||j���dt ||j���d|jrdnd��S)Nr��NULLzNOT NULL)rrSr^rrUrr_rVr�s rC�visit_column_nullabler�msf�� �H�g�0�'�.�A�A�A�A��X�w�2�3�3�3�3��H�g�3�4�4�4�4��"�2��� �2�  �rDrc ��t||j|j���dt||j���dt ||j����S)Nz ADD DEFAULT z FOR )rrSr^r�defaultrrUr�s rC�visit_column_defaultr�ysP�� �H�g�0�'�.�A�A�A�A��h���8�8�8�8��8�W�%8�9�9�9� �rDrc ��dt||j|j���dt||j���dt||j���d�S)N�EXEC sp_rename 'r��', z , 'COLUMN')rrSr^rrU�newnamer�s rC�visit_rename_columnr��sU��� �(�G�$6���G�G�G�G��8�W�%8�9�9�9�9��8�W�_�5�5�5�5� �rDrc ��t||j|j���dt||j���dt ||j����Sr�)rrSr^rrUrr\r�s rC�visit_column_typer��sP�� �H�g�0�'�.�A�A�A�A��X�w�2�3�3�3�3��H�g�m�,�,�,� �rDrc �l�dt||j|j���dt||jd����S)Nr�r�)rrSr^�new_table_namer�s rC�visit_rename_tabler��s?��� �(�G�$6���G�G�G�G��(�G�$:�D�A�A�A� �rD)r�rir�r#r6rT)r�r�r�r#r6rT)r�rr�r"r6rT)r�r"rr�r6rT)r�rr�r"r6rT)r�rr�r"r6rT)r�rr�r"r6rT)r�rr�r"r6rT)r�rr�r"r6rT)B� __future__rr��typingrrrrrr � sqlalchemyr rs�sqlalchemy.schemar r �sqlalchemy.sql.baser �sqlalchemy.sql.elementsr�baserrrrrrrrrrrr�implrr�rr�util.sqla_compatr r!�sqlalchemy.dialects.mssql.baser"r#�sqlalchemy.engine.cursorr$�sqlalchemy.sql.schemar%r&�sqlalchemy.sql.selectabler'�sqlalchemy.sql.type_apir(r)r+rir�r�r�r�r�r�r�r�r�r�rnrDrC�<module>r�s���#�"�"�"�"�"� � � � ������������������������� � � � � � �������(�(�(�(�(�(�$�$�$�$�$�$�)�)�)�)�)�)�*�*�*�*�*�*�1�1�1�1�1�1������������������������������� � � � � � �������$�$�$�$�$�$�'�'�'�'�'�'�#�#�#�#�#�#�������������������������������'�'�'�'�'�'�� %�������<�<�<�<�<�<�<�<�<�<�<�<�5�5�5�5�5�5�+�+�+�+�+�+�+�+�+�+�+�+�5�5�5�5�5�5�2�2�2�2�2�2�$�$�$�$�$�$�a�a�a�a�a� �a�a�a�H � � � � �*�m� � � � �����J� ���� �� �w�'�'����(�'��0 �� ��)�)����*�)��& ��)�W���������F�F�F�F�  ��.�'�"�"����#�"�� ��-��!�!� � � �"�!� � ��*�g��������� ��*�g��������� ��+�w������ ����rD
Memory