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

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

Open
jieguangzhou opened this issue Nov 28, 2024 · 0 comments
Open

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

jieguangzhou opened this issue Nov 28, 2024 · 0 comments

Comments

@jieguangzhou
Copy link
Collaborator

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant