From 1dc0a5663333b1711c0e22a260515b754391ee9e Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 13 Jul 2025 21:42:35 +0200 Subject: [PATCH] Bugfix on layout query The following query did not render the correct box for top-level objects: select path_dtrans*shape.dbbox.center,cell_name from shapes on layer 1/0 from instances of .*.. Reason was that "path_dtrans" returned a ICplxTrans for top level instead of a DCplxTrans object. --- src/db/db/dbLayoutQuery.cc | 4 ++-- src/db/unit_tests/dbLayoutQueryTests.cc | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/db/db/dbLayoutQuery.cc b/src/db/db/dbLayoutQuery.cc index 40835f186..f96560210 100644 --- a/src/db/db/dbLayoutQuery.cc +++ b/src/db/db/dbLayoutQuery.cc @@ -1212,12 +1212,12 @@ public: return true; } else { - v = tl::Variant::make_variant (db::ICplxTrans ()); + v = tl::Variant::make_variant (db::DCplxTrans ()); return true; } } else { - v = tl::Variant::make_variant (db::ICplxTrans ()); + v = tl::Variant::make_variant (db::DCplxTrans ()); return true; } diff --git a/src/db/unit_tests/dbLayoutQueryTests.cc b/src/db/unit_tests/dbLayoutQueryTests.cc index a9ddb1102..3c72da59b 100644 --- a/src/db/unit_tests/dbLayoutQueryTests.cc +++ b/src/db/unit_tests/dbLayoutQueryTests.cc @@ -1620,3 +1620,17 @@ TEST(66) EXPECT_EQ (s, "(cell_index=0 r0 *1 10,-20),(cell_index=4 r0 *1 10,-20)"); } } + +// Bug: path_dtrans was ICplxTrans on top level +TEST(67) +{ + db::Layout g; + init_layout (g); + + { + db::LayoutQuery q ("select path_dtrans*shape.dbbox from shapes on layer l1 from instances of .*"); + db::LayoutQueryIterator iq (q, &g); + std::string s = q2s_var (iq, "data"); + EXPECT_EQ (s, "((0,0.001;0.002,0.003)),((0,0.001;0.002,0.003))"); + } +}