superduper icon indicating copy to clipboard operation
superduper copied to clipboard

[BUG]: The bug related to using ibis query with outputs.

Open jieguangzhou opened this issue 11 months ago • 0 comments
trafficstars

Contact Details [Optional]

No response

System Information

main

What happened?

BUG1:

from superduper import superduper
db = superduper("sqlite://", artifact_store="filesystem:///tmp/artifact_store")
db["test"].outputs("1")
      1 from superduper_ibis.query import IbisQuery
----> 2 db["test"].outputs("1")

File ~/Work/Superduper/superduper/superduper/backends/base/query.py:43, in applies_to.<locals>.decorator.<locals>.decorated(self, *args, **kwargs)
     41     raise TypeError(msg)
     42 assert flavour in flavours, msg
---> 43 return f(self, *args, **kwargs)

File ~/Work/Superduper/superduper/plugins/ibis/superduper_ibis/query.py:319, in IbisQuery.outputs(self, *predict_ids)
    315         assert (
    316             self.primary_id in args
    317         ), f"Primary id: `{self.primary_id}` not in select when using outputs"
    318 query = self
--> 319 attr = getattr(query, self.primary_id)
    320 for identifier in predict_ids:
    321     identifier = (
    322         identifier
    323         if identifier.startswith(CFG.output_prefix)
    324         else f"{CFG.output_prefix}{identifier}"
    325     )

File ~/Work/Superduper/superduper/plugins/ibis/superduper_ibis/query.py:243, in IbisQuery.primary_id(self)
    240 @property
    241 def primary_id(self):
    242     """Return the primary id."""
--> 243     return self.base_table.primary_id

File ~/Work/Superduper/superduper/plugins/ibis/superduper_ibis/query.py:104, in IbisQuery.base_table(self)
    102 """Return the base table."""
    103 if self._base_table is None:
--> 104     self._base_table = self.db.load('table', self.table)
    105 return self._base_table

File ~/Work/Superduper/superduper/superduper/base/datalayer.py:628, in Datalayer.load(self, type_id, identifier, version, uuid, huuid, allow_hidden)
    626 assert identifier is not None
    627 logging.info(f'Load ({type_id, identifier}) from metadata...')
--> 628 info = self.metadata.get_component(
    629     type_id=type_id,
    630     identifier=identifier,
    631     allow_hidden=allow_hidden,
    632 )
    633 c = Document.decode(info, db=self)
    634 c.db = self

File ~/Work/Superduper/superduper/superduper/backends/base/data_backend.py:222, in DataBackendProxy._try_execute.<locals>.wrapper(*args, **kwargs)
    220     return attr(*args, **kwargs)
    221 else:
--> 222     raise e

File ~/Work/Superduper/superduper/superduper/backends/base/data_backend.py:211, in DataBackendProxy._try_execute.<locals>.wrapper(*args, **kwargs)
    208 @functools.wraps(attr)
    209 def wrapper(*args, **kwargs):
    210     try:
--> 211         return attr(*args, **kwargs)
    212     except Exception as e:
    213         error_message = str(e).lower()

File ~/Work/Superduper/superduper/superduper/backends/base/metadata.py:388, in MetaDataStore.get_component(self, type_id, identifier, version, allow_hidden)
    379 """
    380 Get a component from the metadata store.
    381
   (...)
    385 :param allow_hidden: whether to allow hidden components
    386 """
    387 if version is None:
--> 388     version = self.get_latest_version(
    389         type_id=type_id, identifier=identifier, allow_hidden=allow_hidden
    390     )
    391 r = self._get_component(
    392     type_id=type_id,
    393     identifier=identifier,
    394     version=version,
    395     allow_hidden=allow_hidden,
    396 )
    397 if r is None:

File ~/Work/Superduper/superduper/plugins/sqlalchemy/superduper_sqlalchemy/metadata.py:451, in SQLAlchemyMetadata.get_latest_version(self, type_id, identifier, allow_hidden)
    449 versions = [r['version'] for r in res]
    450 if len(versions) == 0:
--> 451     raise FileNotFoundError(
    452         f'Can\'t find {type_id}: {identifier} in metadata'
    453     )
    454 return versions[0]

FileNotFoundError: Can't find table: test in metadata


BUG2:

from superduper_ibis.query import IbisQuery
IbisQuery(table="test").select().outputs("1")
RecursionError: maximum recursion depth exceeded in comparison

Steps to reproduce

No response

Relevant log output

No response

jieguangzhou avatar Nov 28 '24 08:11 jieguangzhou