o
    EDi                     @   s   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mZ d d	lmZ d d
lmZmZ G dd deZdS )    )text)DefaultDialectdbapi)ChInspector)
full_table)ChDDLCompiler)ChStatementCompiler)ischema_namesdialect_name)ChIdentifierPreparer)quote_identifier
format_strc                   @   s>  e Zd ZdZeZdZdZdZdZ	dZ
dZdZeZeZeZdZdZeZeZedd	 Zed
d Zdd Zdd Zedd Zd:ddZd:ddZ d:ddZ!d:ddZ"d:ddZ#d:ddZ$d:ddZ%d:d d!Z&d:d"d#Z'd:d$d%Z(d:d&d'Z)d:d(d)Z*d:d*d+Z+d,d- Z,d.d/ Z-d;d0d1Z.d;d2d3Z/d4d5 Z0d6d7 Z1d8d9 Z2dS )<ClickHouseDialectz6
    See :py:class:`sqlalchemy.engine.interfaces`
    connectdefaultTFN   c                 C      t S Nr   cls r   a/var/www/Datamplify/venv/lib/python3.10/site-packages/clickhouse_connect/cc_sqlalchemy/dialect.pyr   '      zClickHouseDialect.dbapic                 C   r   r   r   r   r   r   r   import_dbapi-   r   zClickHouseDialect.import_dbapic                 C      d S r   r   self
connectionr   r   r   
initialize1      zClickHouseDialect.initializec                 K   s   dd | dD S )Nc                 S      g | ]}|j qS r   name.0rowr   r   r   
<listcomp>5       z6ClickHouseDialect.get_schema_names.<locals>.<listcomp>zSHOW DATABASES)execute)r   r   _r   r   r   get_schema_names4   s   z"ClickHouseDialect.get_schema_namesc                 C   s"   |  tddt|  jdkS )Nz"SELECT name FROM system.databases zWHERE name = r   )r)   r   r   rowcount)r   db_namer   r   r   has_database7   s
   zClickHouseDialect.has_databasec                 K   s,   d}|r|dt | 7 }dd ||D S )NzSHOW TABLESz FROM c                 S   r!   r   r"   r$   r   r   r   r'   @   r(   z5ClickHouseDialect.get_table_names.<locals>.<listcomp>)r   r)   )r   r   schemakwcmdr   r   r   get_table_names<   s   z!ClickHouseDialect.get_table_namesc                 K      g S r   r   r   r   
table_namer/   r0   r   r   r   get_primary_keysB   r    z"ClickHouseDialect.get_primary_keysc                 K   r3   r   r   r4   r   r   r   get_pk_constraintF   r    z#ClickHouseDialect.get_pk_constraintc                 K   r3   r   r   r4   r   r   r   get_foreign_keysI   r    z"ClickHouseDialect.get_foreign_keysc                 K   r3   r   r   r   r   r/   r0   r   r   r   get_temp_table_namesL   r    z&ClickHouseDialect.get_temp_table_namesc                 K   r3   r   r   r9   r   r   r   get_view_namesO   r    z ClickHouseDialect.get_view_namesc                 K   r3   r   r   r9   r   r   r   get_temp_view_namesR   r    z%ClickHouseDialect.get_temp_view_namesc                 K   r   r   r   )r   r   	view_namer/   r0   r   r   r   get_view_definitionU   r    z%ClickHouseDialect.get_view_definitionc                 K   r3   r   r   r4   r   r   r   get_indexesX   r    zClickHouseDialect.get_indexesc                 K   r3   r   r   r4   r   r   r   get_unique_constraints[   r    z(ClickHouseDialect.get_unique_constraintsc                 K   r3   r   r   r4   r   r   r   get_check_constraints^   r    z'ClickHouseDialect.get_check_constraintsc                 K   s.   | tdt|| }| }|d dkS )NzEXISTS TABLE r      )r)   r   r   fetchone)r   r   r5   r/   _kwresultr&   r   r   r   	has_tablea   s   zClickHouseDialect.has_tablec                 K   s   dS )NFr   )r   r   sequence_namer/   rD   r   r   r   has_sequencef   r    zClickHouseDialect.has_sequencec                 C      t r   NotImplementedErrorr   r   xidr   r   r   do_begin_twophasej   r    z#ClickHouseDialect.do_begin_twophasec                 C   rI   r   rJ   rL   r   r   r   do_prepare_twophasem   r    z%ClickHouseDialect.do_prepare_twophasec                 C   rI   r   rJ   r   r   rM   is_preparedrecoverr   r   r   do_rollback_twophasep   r    z&ClickHouseDialect.do_rollback_twophasec                 C   rI   r   rJ   rP   r   r   r   do_commit_twophases   r    z$ClickHouseDialect.do_commit_twophasec                 C   rI   r   rJ   r   r   r   r   do_recover_twophasev   r    z%ClickHouseDialect.do_recover_twophasec                 C   r   r   r   )r   
dbapi_connlevelr   r   r   set_isolation_levely   r    z%ClickHouseDialect.set_isolation_levelc                 C   r   r   r   )r   rV   r   r   r   get_isolation_level|   r    z%ClickHouseDialect.get_isolation_levelr   )TF)3__name__
__module____qualname____doc__r   r#   driverdefault_schema_namesupports_native_decimalsupports_native_booleansupports_statement_cachereturns_unicode_stringspostfetch_lastrowidr   ddl_compilerr	   statement_compilerr   preparerdescription_encodingmax_identifier_lengthr
   r   	inspectorclassmethodr   r   r   r+   staticmethodr.   r2   r6   r7   r8   r:   r;   r<   r>   r?   r@   rA   rF   rH   rN   rO   rS   rT   rU   rX   rY   r   r   r   r   r      sZ    

















r   N)
sqlalchemyr   sqlalchemy.engine.defaultr   clickhouse_connectr   *clickhouse_connect.cc_sqlalchemy.inspectorr   $clickhouse_connect.cc_sqlalchemy.sqlr   0clickhouse_connect.cc_sqlalchemy.sql.ddlcompilerr   -clickhouse_connect.cc_sqlalchemy.sql.compilerr	    clickhouse_connect.cc_sqlalchemyr
   r   -clickhouse_connect.cc_sqlalchemy.sql.preparerr   !clickhouse_connect.driver.bindingr   r   r   r   r   r   r   <module>   s    