Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: _loads_domains in SQLA2 #929

Merged
merged 1 commit into from
Apr 7, 2024

fix: _loads_domains in SQLA2

4c67e26
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Merged

fix: _loads_domains in SQLA2 #929

fix: _loads_domains in SQLA2
4c67e26
Select commit
Loading
Failed to load commit list.
GitHub Actions / Test Results - 3.9, true failed Apr 7, 2024 in 0s

1 fail, 35 skipped, 52 pass in 17s

88 tests   52 ✅  17s ⏱️
 1 suites  35 💤
 1 files     1 ❌

Results for commit 4c67e26.

Annotations

Check warning on line 0 in duckdb_engine.tests.test_datatypes

See this annotation in the file changed.

@github-actions github-actions / Test Results - 3.9, true

test_unsigned_integer_type[UHugeInteger] (duckdb_engine.tests.test_datatypes) failed

results.xml [took 0s]
Raw output
sqlalchemy.exc.ProgrammingError: (duckdb.duckdb.CatalogException) Catalog Error: Type with name UHugeInt does not exist!
Did you mean "hugeint"?
[SQL: 
CREATE TABLE "table" (
	id INTEGER NOT NULL, 
	a UHugeInt, 
	PRIMARY KEY (id)
)

]
(Background on this error at: https://sqlalche.me/e/20/f405)
self = <sqlalchemy.engine.base.Connection object at 0x7f49855c4430>
dialect = <duckdb_engine.Dialect object at 0x7f4991b938b0>
context = <sqlalchemy.dialects.postgresql.psycopg2.PGExecutionContext_psycopg2 object at 0x7f49855c48b0>
statement = <sqlalchemy.dialects.postgresql.base.PGDDLCompiler object at 0x7f49855c4640>
parameters = [()]

    #x1B[94mdef#x1B[39;49;00m #x1B[92m_exec_single_context#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        dialect: Dialect,#x1B[90m#x1B[39;49;00m
        context: ExecutionContext,#x1B[90m#x1B[39;49;00m
        statement: Union[#x1B[96mstr#x1B[39;49;00m, Compiled],#x1B[90m#x1B[39;49;00m
        parameters: Optional[_AnyMultiExecuteParams],#x1B[90m#x1B[39;49;00m
    ) -> CursorResult[Any]:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""continue the _execute_context() method for a single DBAPI#x1B[39;49;00m
    #x1B[33m    cursor.execute() or cursor.executemany() call.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m dialect.bind_typing #x1B[95mis#x1B[39;49;00m BindTyping.SETINPUTSIZES:#x1B[90m#x1B[39;49;00m
            generic_setinputsizes = context._prepare_set_input_sizes()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m generic_setinputsizes:#x1B[90m#x1B[39;49;00m
                #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                    dialect.do_set_input_sizes(#x1B[90m#x1B[39;49;00m
                        context.cursor, generic_setinputsizes, context#x1B[90m#x1B[39;49;00m
                    )#x1B[90m#x1B[39;49;00m
                #x1B[94mexcept#x1B[39;49;00m #x1B[96mBaseException#x1B[39;49;00m #x1B[94mas#x1B[39;49;00m e:#x1B[90m#x1B[39;49;00m
                    #x1B[96mself#x1B[39;49;00m._handle_dbapi_exception(#x1B[90m#x1B[39;49;00m
                        e, #x1B[96mstr#x1B[39;49;00m(statement), parameters, #x1B[94mNone#x1B[39;49;00m, context#x1B[90m#x1B[39;49;00m
                    )#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        cursor, str_statement, parameters = (#x1B[90m#x1B[39;49;00m
            context.cursor,#x1B[90m#x1B[39;49;00m
            context.statement,#x1B[90m#x1B[39;49;00m
            context.parameters,#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        effective_parameters: Optional[_AnyExecuteParams]#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m context.executemany:#x1B[90m#x1B[39;49;00m
            effective_parameters = parameters[#x1B[94m0#x1B[39;49;00m]#x1B[90m#x1B[39;49;00m
        #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            effective_parameters = parameters#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._has_events #x1B[95mor#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.engine._has_events:#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m fn #x1B[95min#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.dispatch.before_cursor_execute:#x1B[90m#x1B[39;49;00m
                str_statement, effective_parameters = fn(#x1B[90m#x1B[39;49;00m
                    #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                    cursor,#x1B[90m#x1B[39;49;00m
                    str_statement,#x1B[90m#x1B[39;49;00m
                    effective_parameters,#x1B[90m#x1B[39;49;00m
                    context,#x1B[90m#x1B[39;49;00m
                    context.executemany,#x1B[90m#x1B[39;49;00m
                )#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._echo:#x1B[90m#x1B[39;49;00m
            #x1B[96mself#x1B[39;49;00m._log_info(str_statement)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
            stats = context._get_cache_stats()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.engine.hide_parameters:#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m._log_info(#x1B[90m#x1B[39;49;00m
                    #x1B[33m"#x1B[39;49;00m#x1B[33m[#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m] #x1B[39;49;00m#x1B[33m%r#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                    stats,#x1B[90m#x1B[39;49;00m
                    sql_util._repr_params(#x1B[90m#x1B[39;49;00m
                        effective_parameters,#x1B[90m#x1B[39;49;00m
                        batches=#x1B[94m10#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                        ismulti=context.executemany,#x1B[90m#x1B[39;49;00m
                    ),#x1B[90m#x1B[39;49;00m
                )#x1B[90m#x1B[39;49;00m
            #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m._log_info(#x1B[90m#x1B[39;49;00m
                    #x1B[33m"#x1B[39;49;00m#x1B[33m[#x1B[39;49;00m#x1B[33m%s#x1B[39;49;00m#x1B[33m] [SQL parameters hidden due to hide_parameters=True]#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                    stats,#x1B[90m#x1B[39;49;00m
                )#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        evt_handled: #x1B[96mbool#x1B[39;49;00m = #x1B[94mFalse#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m context.execute_style #x1B[95mis#x1B[39;49;00m ExecuteStyle.EXECUTEMANY:#x1B[90m#x1B[39;49;00m
                effective_parameters = cast(#x1B[90m#x1B[39;49;00m
                    #x1B[33m"#x1B[39;49;00m#x1B[33m_CoreMultiExecuteParams#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, effective_parameters#x1B[90m#x1B[39;49;00m
                )#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.dialect._has_events:#x1B[90m#x1B[39;49;00m
                    #x1B[94mfor#x1B[39;49;00m fn #x1B[95min#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.dialect.dispatch.do_executemany:#x1B[90m#x1B[39;49;00m
                        #x1B[94mif#x1B[39;49;00m fn(#x1B[90m#x1B[39;49;00m
                            cursor,#x1B[90m#x1B[39;49;00m
                            str_statement,#x1B[90m#x1B[39;49;00m
                            effective_parameters,#x1B[90m#x1B[39;49;00m
                            context,#x1B[90m#x1B[39;49;00m
                        ):#x1B[90m#x1B[39;49;00m
                            evt_handled = #x1B[94mTrue#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                            #x1B[94mbreak#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m evt_handled:#x1B[90m#x1B[39;49;00m
                    #x1B[96mself#x1B[39;49;00m.dialect.do_executemany(#x1B[90m#x1B[39;49;00m
                        cursor,#x1B[90m#x1B[39;49;00m
                        str_statement,#x1B[90m#x1B[39;49;00m
                        effective_parameters,#x1B[90m#x1B[39;49;00m
                        context,#x1B[90m#x1B[39;49;00m
                    )#x1B[90m#x1B[39;49;00m
            #x1B[94melif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m effective_parameters #x1B[95mand#x1B[39;49;00m context.no_parameters:#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.dialect._has_events:#x1B[90m#x1B[39;49;00m
                    #x1B[94mfor#x1B[39;49;00m fn #x1B[95min#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.dialect.dispatch.do_execute_no_params:#x1B[90m#x1B[39;49;00m
                        #x1B[94mif#x1B[39;49;00m fn(cursor, str_statement, context):#x1B[90m#x1B[39;49;00m
                            evt_handled = #x1B[94mTrue#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                            #x1B[94mbreak#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m evt_handled:#x1B[90m#x1B[39;49;00m
                    #x1B[96mself#x1B[39;49;00m.dialect.do_execute_no_params(#x1B[90m#x1B[39;49;00m
                        cursor, str_statement, context#x1B[90m#x1B[39;49;00m
                    )#x1B[90m#x1B[39;49;00m
            #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                effective_parameters = cast(#x1B[90m#x1B[39;49;00m
                    #x1B[33m"#x1B[39;49;00m#x1B[33m_CoreSingleExecuteParams#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, effective_parameters#x1B[90m#x1B[39;49;00m
                )#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.dialect._has_events:#x1B[90m#x1B[39;49;00m
                    #x1B[94mfor#x1B[39;49;00m fn #x1B[95min#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.dialect.dispatch.do_execute:#x1B[90m#x1B[39;49;00m
                        #x1B[94mif#x1B[39;49;00m fn(#x1B[90m#x1B[39;49;00m
                            cursor,#x1B[90m#x1B[39;49;00m
                            str_statement,#x1B[90m#x1B[39;49;00m
                            effective_parameters,#x1B[90m#x1B[39;49;00m
                            context,#x1B[90m#x1B[39;49;00m
                        ):#x1B[90m#x1B[39;49;00m
                            evt_handled = #x1B[94mTrue#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                            #x1B[94mbreak#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m evt_handled:#x1B[90m#x1B[39;49;00m
>                   #x1B[96mself#x1B[39;49;00m.dialect.do_execute(#x1B[90m#x1B[39;49;00m
                        cursor, str_statement, effective_parameters, context#x1B[90m#x1B[39;49;00m
                    )#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/engine/base.py#x1B[0m:1971: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/engine/default.py#x1B[0m:919: in do_execute
    cursor.execute(statement, parameters)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <duckdb_engine.ConnectionWrapper object at 0x7f49855c45b0>
statement = '\nCREATE TABLE "table" (\n\tid INTEGER NOT NULL, \n\ta UHugeInt, \n\tPRIMARY KEY (id)\n)\n\n'
parameters = (), context = None

    #x1B[94mdef#x1B[39;49;00m #x1B[92mexecute#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        statement: #x1B[96mstr#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        parameters: Optional[Tuple] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        context: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m statement.lower() == #x1B[33m"#x1B[39;49;00m#x1B[33mcommit#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m:  #x1B[90m# this is largely for ipython-sql#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.__c.commit()#x1B[90m#x1B[39;49;00m
            #x1B[94melif#x1B[39;49;00m statement.lower() #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mregister#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mregister(?, ?)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mregister($1, $2)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            ):#x1B[90m#x1B[39;49;00m
                #x1B[94massert#x1B[39;49;00m parameters #x1B[95mand#x1B[39;49;00m #x1B[96mlen#x1B[39;49;00m(parameters) == #x1B[94m2#x1B[39;49;00m, parameters#x1B[90m#x1B[39;49;00m
                view_name, df = parameters#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.__c.register(view_name, df)#x1B[90m#x1B[39;49;00m
            #x1B[94melif#x1B[39;49;00m parameters #x1B[95mis#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.__c.execute(statement)#x1B[90m#x1B[39;49;00m
            #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>               #x1B[96mself#x1B[39;49;00m.__c.execute(statement, parameters)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE               duckdb.duckdb.CatalogException: Catalog Error: Type with name UHugeInt does not exist!#x1B[0m
#x1B[1m#x1B[31mE               Did you mean "hugeint"?#x1B[0m

#x1B[1m#x1B[31mduckdb_engine/__init__.py#x1B[0m:163: CatalogException

#x1B[33mThe above exception was the direct cause of the following exception:#x1B[0m

engine = Engine(duckdb:///:memory:)
session = <sqlalchemy.orm.session.Session object at 0x7f49855229d0>
coltype = <class 'duckdb_engine.datatypes.UHugeInteger'>

    #x1B[37m@mark#x1B[39;49;00m.parametrize(#x1B[33m"#x1B[39;49;00m#x1B[33mcoltype#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, types)#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m #x1B[92mtest_unsigned_integer_type#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        engine: Engine, session: Session, coltype: Type[Integer]#x1B[90m#x1B[39;49;00m
    ) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        Base = declarative_base()#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        tname = #x1B[33m"#x1B[39;49;00m#x1B[33mtable#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        table = #x1B[96mtype#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
            #x1B[33m"#x1B[39;49;00m#x1B[33mTable#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            (Base,),#x1B[90m#x1B[39;49;00m
            {#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33m__tablename__#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: tname,#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mid#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: Column(Integer, primary_key=#x1B[94mTrue#x1B[39;49;00m, default=#x1B[94m0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33ma#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: Column(coltype),#x1B[90m#x1B[39;49;00m
            },#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
>       Base.metadata.create_all(engine)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mduckdb_engine/tests/test_datatypes.py#x1B[0m:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/sql/schema.py#x1B[0m:5825: in create_all
    bind._run_ddl_visitor(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/engine/base.py#x1B[0m:3255: in _run_ddl_visitor
    conn._run_ddl_visitor(visitorcallable, element, **kwargs)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/engine/base.py#x1B[0m:2461: in _run_ddl_visitor
    visitorcallable(#x1B[96mself#x1B[39;49;00m.dialect, #x1B[96mself#x1B[39;49;00m, **kwargs).traverse_single(element)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/sql/visitors.py#x1B[0m:664: in traverse_single
    #x1B[94mreturn#x1B[39;49;00m meth(obj, **kw)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/sql/ddl.py#x1B[0m:918: in visit_metadata
    #x1B[96mself#x1B[39;49;00m.traverse_single(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/sql/visitors.py#x1B[0m:664: in traverse_single
    #x1B[94mreturn#x1B[39;49;00m meth(obj, **kw)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/sql/ddl.py#x1B[0m:951: in visit_table
    CreateTable(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/sql/ddl.py#x1B[0m:314: in _invoke_with
    #x1B[94mreturn#x1B[39;49;00m bind.execute(#x1B[96mself#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/engine/base.py#x1B[0m:1422: in execute
    #x1B[94mreturn#x1B[39;49;00m meth(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/sql/ddl.py#x1B[0m:180: in _execute_on_connection
    #x1B[94mreturn#x1B[39;49;00m connection._execute_ddl(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/engine/base.py#x1B[0m:1533: in _execute_ddl
    ret = #x1B[96mself#x1B[39;49;00m._execute_context(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/engine/base.py#x1B[0m:1850: in _execute_context
    #x1B[94mreturn#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m._exec_single_context(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/engine/base.py#x1B[0m:1990: in _exec_single_context
    #x1B[96mself#x1B[39;49;00m._handle_dbapi_exception(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/engine/base.py#x1B[0m:2357: in _handle_dbapi_exception
    #x1B[94mraise#x1B[39;49;00m sqlalchemy_exception.with_traceback(exc_info[#x1B[94m2#x1B[39;49;00m]) #x1B[94mfrom#x1B[39;49;00m #x1B[04m#x1B[96me#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/engine/base.py#x1B[0m:1971: in _exec_single_context
    #x1B[96mself#x1B[39;49;00m.dialect.do_execute(#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m.tox/duckdb_master/lib/python3.9/site-packages/sqlalchemy/engine/default.py#x1B[0m:919: in do_execute
    cursor.execute(statement, parameters)#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <duckdb_engine.ConnectionWrapper object at 0x7f49855c45b0>
statement = '\nCREATE TABLE "table" (\n\tid INTEGER NOT NULL, \n\ta UHugeInt, \n\tPRIMARY KEY (id)\n)\n\n'
parameters = (), context = None

    #x1B[94mdef#x1B[39;49;00m #x1B[92mexecute#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        statement: #x1B[96mstr#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        parameters: Optional[Tuple] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        context: Optional[Any] = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        #x1B[94mtry#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m statement.lower() == #x1B[33m"#x1B[39;49;00m#x1B[33mcommit#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m:  #x1B[90m# this is largely for ipython-sql#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.__c.commit()#x1B[90m#x1B[39;49;00m
            #x1B[94melif#x1B[39;49;00m statement.lower() #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mregister#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mregister(?, ?)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
                #x1B[33m"#x1B[39;49;00m#x1B[33mregister($1, $2)#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            ):#x1B[90m#x1B[39;49;00m
                #x1B[94massert#x1B[39;49;00m parameters #x1B[95mand#x1B[39;49;00m #x1B[96mlen#x1B[39;49;00m(parameters) == #x1B[94m2#x1B[39;49;00m, parameters#x1B[90m#x1B[39;49;00m
                view_name, df = parameters#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.__c.register(view_name, df)#x1B[90m#x1B[39;49;00m
            #x1B[94melif#x1B[39;49;00m parameters #x1B[95mis#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
                #x1B[96mself#x1B[39;49;00m.__c.execute(statement)#x1B[90m#x1B[39;49;00m
            #x1B[94melse#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>               #x1B[96mself#x1B[39;49;00m.__c.execute(statement, parameters)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE               sqlalchemy.exc.ProgrammingError: (duckdb.duckdb.CatalogException) Catalog Error: Type with name UHugeInt does not exist!#x1B[0m
#x1B[1m#x1B[31mE               Did you mean "hugeint"?#x1B[0m
#x1B[1m#x1B[31mE               [SQL: #x1B[0m
#x1B[1m#x1B[31mE               CREATE TABLE "table" (#x1B[0m
#x1B[1m#x1B[31mE               	id INTEGER NOT NULL, #x1B[0m
#x1B[1m#x1B[31mE               	a UHugeInt, #x1B[0m
#x1B[1m#x1B[31mE               	PRIMARY KEY (id)#x1B[0m
#x1B[1m#x1B[31mE               )#x1B[0m
#x1B[1m#x1B[31mE               #x1B[0m
#x1B[1m#x1B[31mE               ]#x1B[0m
#x1B[1m#x1B[31mE               (Background on this error at: https://sqlalche.me/e/20/f405)#x1B[0m

#x1B[1m#x1B[31mduckdb_engine/__init__.py#x1B[0m:163: ProgrammingError