From 85f1c222e6ecae8b29a1cc7f46421f22beaae8bd Mon Sep 17 00:00:00 2001 From: Andy Salnikov Date: Fri, 16 Aug 2024 14:47:57 -0700 Subject: [PATCH] Extend unit test to check for ingest_date in WHERE clause --- python/lsst/daf/butler/tests/butler_queries.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/python/lsst/daf/butler/tests/butler_queries.py b/python/lsst/daf/butler/tests/butler_queries.py index 4906fd0330..b641bafb84 100644 --- a/python/lsst/daf/butler/tests/butler_queries.py +++ b/python/lsst/daf/butler/tests/butler_queries.py @@ -383,6 +383,7 @@ def test_general_query(self) -> None: def test_query_ingest_date(self) -> None: """Test general query returning ingest_date field.""" + before_ingest = astropy.time.Time.now() butler = self.make_butler("base.yaml", "datasets.yaml") dimensions = DimensionGroup(butler.dimensions, ["detector", "physical_filter"]) @@ -395,6 +396,20 @@ def test_query_ingest_date(self) -> None: for row in rows: self.assertIsInstance(row["flat.ingest_date"], astropy.time.Time) + # Check that WHERE accepts astropy time + with butler._query() as query: + query = query.join_dataset_search("flat", "imported_g") + query1 = query.where("flat.ingest_date < before_ingest", bind={"before_ingest": before_ingest}) + rows = list(query1.general(dimensions)) + self.assertEqual(len(rows), 0) + query1 = query.where("flat.ingest_date >= before_ingest", bind={"before_ingest": before_ingest}) + rows = list(query1.general(dimensions)) + self.assertEqual(len(rows), 3) + # Same with a time in string literal. + query1 = query.where(f"flat.ingest_date < T'mjd/{before_ingest.tai.mjd}'") + rows = list(query1.general(dimensions)) + self.assertEqual(len(rows), 0) + def test_implied_union_record_query(self) -> None: """Test queries for a dimension ('band') that uses "implied union" storage, in which its values are the union of the values for it in a