def test_hackmetamodel(): bdb = bayeslite.bayesdb_open(builtin_metamodels=False) bdb.sql_execute('CREATE TABLE t(a INTEGER, b TEXT)') bdb.sql_execute("INSERT INTO t (a, b) VALUES (42, 'fnord')") bdb.sql_execute('CREATE TABLE u AS SELECT * FROM t') with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR t_cc FOR t USING crosscat(a NUMERICAL)') with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR t_dd FOR t USING dotdog(a NUMERICAL)') dotdog_metamodel = DotdogMetamodel() bayeslite.bayesdb_register_metamodel(bdb, dotdog_metamodel) bayeslite.bayesdb_deregister_metamodel(bdb, dotdog_metamodel) bayeslite.bayesdb_register_metamodel(bdb, dotdog_metamodel) with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR t_cc FOR t USING crosscat(a NUMERICAL)') bdb.execute('CREATE GENERATOR t_dd FOR t USING dotdog(a NUMERICAL)') with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR t_dd FOR t USING dotdog(a NUMERICAL)') with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR t_cc FOR t USING crosscat(a NUMERICAL)') with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR t_dd FOR t USING dotdog(a NUMERICAL)') # XXX Rest of test originally exercised default metamodel, but # syntax doesn't support that now. Not clear that's wrong either. bdb.execute('CREATE GENERATOR u_dd FOR u USING dotdog(a NUMERICAL)') with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR u_dd FOR u USING dotdog(a NUMERICAL)')
def test_hackmetamodel(): bdb = bayeslite.bayesdb_open(builtin_metamodels=False) bdb.sql_execute('CREATE TABLE t(a INTEGER, b TEXT)') bdb.sql_execute("INSERT INTO t (a, b) VALUES (42, 'fnord')") bdb.sql_execute('CREATE TABLE u AS SELECT * FROM t') with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR t_cc FOR t USING crosscat(a NUMERICAL)') with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR t_dd FOR t USING dotdog(a NUMERICAL)') crosscat = local_crosscat() crosscat_metamodel = CrosscatMetamodel(crosscat) dotdog_metamodel = DotdogMetamodel() bayeslite.bayesdb_register_metamodel(bdb, dotdog_metamodel) bayeslite.bayesdb_deregister_metamodel(bdb, dotdog_metamodel) bayeslite.bayesdb_register_metamodel(bdb, dotdog_metamodel) with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR t_cc FOR t USING crosscat(a NUMERICAL)') bdb.execute('CREATE GENERATOR t_dd FOR t USING dotdog(a NUMERICAL)') with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR t_dd FOR t USING dotdog(a NUMERICAL)') with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR t_cc FOR t USING crosscat(a NUMERICAL)') with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR t_dd FOR t USING dotdog(a NUMERICAL)') # XXX Rest of test originally exercised default metamodel, but # syntax doesn't support that now. Not clear that's wrong either. bdb.execute('CREATE GENERATOR u_dd FOR u USING dotdog(a NUMERICAL)') with pytest.raises(bayeslite.BQLError): bdb.execute('CREATE GENERATOR u_dd FOR u USING dotdog(a NUMERICAL)')