probcomp / bayeslite

BayesDB on SQLite. A Bayesian database table for querying the probable implications of data as easily as SQL databases query the data itself.
http://probcomp.csail.mit.edu/software/bayesdb
Apache License 2.0
921 stars 63 forks source link

CREATE GENERATOR IF NOT EXISTS still tries to create crosscat stuff #191

Closed tibbetts closed 8 years ago

tibbetts commented 8 years ago
In [19]: bayeslite.core.bayesdb_has_generator(bdb, 'patients_cc')
Out[19]: True
In [20]:

# create the crosscat generator using
q('''
    CREATE GENERATOR patients_cc IF NOT EXISTS FOR patients USING crosscat (
        GUESS(*),
        "sid1a of RISC 1_3" IGNORE
    )
''')
bdbcontrib.describe_generator_columns(bdb, "patients_cc")
At 1069.48s executing 
    CREATE GENERATOR patients_cc IF NOT EXISTS FOR patients USING crosscat (
        GUESS(*),
        "sid1a of RISC 1_3" IGNORE
    )

ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line string', (1, 0))

---------------------------------------------------------------------------
IntegrityError                            Traceback (most recent call last)
<ipython-input-20-336a964d7469> in <module>()
      6         "sid1a of RISC 1_3" IGNORE
      7     )
----> 8 ''')
      9 bdbcontrib.describe_generator_columns(bdb, "patients_cc")

<ipython-input-2-68aba181bdcd> in q(bql)
     24 def q(bql):
     25     log("executing %s" % bql)
---> 26     bdb.execute(bql)
     27 
     28 log('reading data from %s' % csv_file)

/Applications/BayesDB-bdbco0.1a20150918+unknown.app/Contents/MacOS/venv/lib/python2.7/site-packages/bayeslite/bayesdb.pyc in execute(self, string, bindings)
    156         else:
    157             raise ValueError('>1 phrase in string')
--> 158         cursor = bql.execute_phrase(self, phrase, bindings)
    159         return self.empty_cursor if cursor is None else cursor
    160 

/Applications/BayesDB-bdbco0.1a20150918+unknown.app/Contents/MacOS/venv/lib/python2.7/site-packages/bayeslite/bql.pyc in execute_phrase(bdb, phrase, bindings)
    315                     default=phrase.default)
    316             metamodel.create_generator(bdb, phrase.table, phrase.schema,
--> 317                 instantiate)
    318 
    319         # All done.  Nothing to return.

/Applications/BayesDB-bdbco0.1a20150918+unknown.app/Contents/MacOS/venv/lib/python2.7/site-packages/bayeslite/metamodels/crosscat.pyc in create_generator(self, bdb, table, schema, instantiate)
    594             # Create the metamodel-independent records and assign a
    595             # generator id.
--> 596             generator_id, column_list = instantiate(columns)
    597 
    598             # Install the metadata json blob.

/Applications/BayesDB-bdbco0.1a20150918+unknown.app/Contents/MacOS/venv/lib/python2.7/site-packages/bayeslite/bql.pyc in instantiate(columns)
    313                     metamodel, columns,
    314                     ifnotexists=phrase.ifnotexists,
--> 315                     default=phrase.default)
    316             metamodel.create_generator(bdb, phrase.table, phrase.schema,
    317                 instantiate)

/Applications/BayesDB-bdbco0.1a20150918+unknown.app/Contents/MacOS/venv/lib/python2.7/site-packages/bayeslite/bql.pyc in instantiate_generator(bdb, gen_name, table, metamodel, columns, ifnotexists, default)
    604             'generator_id': generator_id,
    605             'colno': colno,
--> 606             'stattype': stattype,
    607         })
    608 

/Applications/BayesDB-bdbco0.1a20150918+unknown.app/Contents/MacOS/venv/lib/python2.7/site-packages/bayeslite/bayesdb.pyc in sql_execute(self, string, bindings)
    174         if self.sql_tracer:
    175             self.sql_tracer(string, bindings)
--> 176         return bql.BayesDBCursor(self, self.sqlite3.execute(string, bindings))
    177 
    178     @contextlib.contextmanager

IntegrityError: FOREIGN KEY constraint failed
fsaad commented 8 years ago

(update formatting for easier readability)

gregory-marton commented 8 years ago

This was fixed in 0.1.5.