Source: geoalchemy2 Version: 0.13.1-2 Severity: serious Tags: sid bookworm bookworm-ignore User: debian...@lists.debian.org Usertags: regression
Dear maintainer(s),With a recent upload of geoalchemy2 the autopkgtest of geoalchemy2 fails in testing on s390x when that autopkgtest is run with the binary packages of geoalchemy2 from unstable. It passes when run with only packages from testing. In tabular form:
pass fail geoalchemy2 from testing 0.13.1-2 all others from testing from testing I copied some of the output at the bottom of this report.Currently this regression is blocking the migration to testing [1]. Can you please investigate the situation and fix it? Please be reminded that s390x is our only big endian architecture.
[Release Team member hat on] Because we're currently in the hard freeze for bookworm, I have marked this bug as bookworm-ignore. Targeted fixes are still welcome.
More information about this bug and the reason for filing it can be found on https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation Paul [1] https://qa.debian.org/excuses.php?package=geoalchemy2 https://ci.debian.net/data/autopkgtest/testing/s390x/g/geoalchemy2/32779104/log.gz=================================== FAILURES =================================== _________________ TestInsertionORM.test_WKTElement[postgresql] _________________
self = <tests.test_functional.TestInsertionORM object at 0x3ff88ddd910> session = <sqlalchemy.orm.session.Session object at 0x3ff890e8a90>Lake = <class 'tests.schema_fixtures.Lake.<locals>.Lake'>, setup_tables = None
def test_WKTElement(self, session, Lake, setup_tables): lake = Lake(WKTElement("LINESTRING(0 0,1 1)", srid=4326)) session.add(lake) session.flush() session.expire(lake) assert isinstance(lake.geom, WKBElement)
assert str(lake.geom) == (
"0102000020e6100000020000000000000000000000000000000000000000000" "0000000f03f000000000000f03f" )E AssertionError: assert '002000000200...0000000000000' == '0102000020e6...000000000f03f' E - 0102000020e61000000200000000000000000000000000000000000000000000000000f03f000000000000f03f E ? - ^ ^^^^^ -- - -- E + 0020000002000010e600000002000000000000000000000000000000003ff00000000000003ff0000000000000 E ? ++ +++++ ^ +++ ^
tests/test_functional.py:297: AssertionError_________________ TestInsertionORM.test_WKBElement[postgresql] _________________
self = <tests.test_functional.TestInsertionORM object at 0x3ff88ddeb50> session = <sqlalchemy.orm.session.Session object at 0x3ff88efb310>Lake = <class 'tests.schema_fixtures.Lake.<locals>.Lake'>, setup_tables = None
def test_WKBElement(self, session, Lake, setup_tables): shape = LineString([[0, 0], [1, 1]]) lake = Lake(from_shape(shape, srid=4326)) session.add(lake) session.flush() session.expire(lake) assert isinstance(lake.geom, WKBElement)
assert str(lake.geom) == (
"0102000020e6100000020000000000000000000000000000000000000000000" "0000000f03f000000000000f03f" )E AssertionError: assert '002000000200...0000000000000' == '0102000020e6...000000000f03f' E - 0102000020e61000000200000000000000000000000000000000000000000000000000f03f000000000000f03f E ? - ^ ^^^^^ -- - -- E + 0020000002000010e600000002000000000000000000000000000000003ff00000000000003ff0000000000000 E ? ++ +++++ ^ +++ ^
tests/test_functional.py:313: AssertionError____________________ TestUpdateORM.test_Raster[postgresql] _____________________
self = <tests.test_functional_postgresql.TestUpdateORM object at 0x3ff8900de90>
session = <sqlalchemy.orm.session.Session object at 0x3ff890c9890> Ocean = <class 'tests.schema_fixtures.Ocean.<locals>.Ocean'> setup_tables = None def test_Raster(self, session, Ocean, setup_tables): skip_postgis1(session) polygon = WKTElement("POLYGON((0 0,1 1,0 1,0 0))", srid=4326) o = Ocean(polygon.ST_AsRaster(5, 5)) session.add(o) session.flush() session.expire(o) assert isinstance(o.rast, RasterElement) rast_data = ( "01000001009A9999999999C93F9A9999999999C9BF0000000000000000000000000000F03" "F00000000000000000000000000000000E610000005000500440001010101010101010100" "010101000001010000000100000000" ) > assert o.rast.data == rast_dataE AssertionError: assert '00000000013F...0000100000000' == '01000001009A...0000100000000'
E Skipping 45 identical trailing characters in diff, use -v to showE - 01000001009A9999999999C93F9A9999999999C9BF0000000000000000000000000000F03F00000000000000000000000000000000E610000005000500440001010 E ? ^ ^^^^ - -- - ^^ ^^^^^^^^^^^^ -- --- -- E + 00000000013FC999999999999ABFC999999999999A00000000000000003FF000000000000000000000000000000000000000000000000010E600050005440001010 E ? ^^^ ^^^ +++ ^^ ^ ++++++++++++++++++
tests/test_functional_postgresql.py:365: AssertionError__________ TestDecipherRaster.test_decipher_raster[postgresql-16BSI] ___________
self = <tests.gallery.test_decipher_raster.TestDecipherRaster object at 0x3ff88e363d0>
pixel_type = '16BSI' session = <sqlalchemy.orm.session.Session object at 0x3ff891b8610> conn = <sqlalchemy.engine.base.Connection object at 0x3ff88d89850> @pytest.mark.parametrize( "pixel_type", [ "1BB", "2BUI", "4BUI", "8BSI", "8BUI", "16BSI", "16BUI", "32BSI", "32BUI", "32BF", "64BF", ], ) def test_decipher_raster(self, pixel_type, session, conn): """Create a raster and decipher it""" metadata.drop_all(conn, checkfirst=True) metadata.create_all(conn) # Create a new raster polygon = WKTElement("POLYGON((0 0,1 1,0 1,0 0))", srid=4326) o = Ocean(polygon.ST_AsRaster(5, 6, pixel_type)) session.add(o) session.flush() # Decipher data from each raster image = wkbImage(o.rast.data) # Define expected result expected = [ [0, 1, 1, 1, 1], [1, 1, 1, 1, 1], [0, 1, 1, 1, 0], [0, 1, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 0, 0], ] # Check results band = image[0]
E assert [[0, 256, 256..., 0, 0, 0, 0]] == [[0, 1, 1, 1,..., 0, 0, 0, 0]]assert band == expected
E At index 0 diff: [0, 256, 256, 256, 256] != [0, 1, 1, 1, 1] E Use -v to get more diff tests/gallery/test_decipher_raster.py:188: AssertionError__________ TestDecipherRaster.test_decipher_raster[postgresql-16BUI] ___________
self = <tests.gallery.test_decipher_raster.TestDecipherRaster object at 0x3ff88e35190>
pixel_type = '16BUI' session = <sqlalchemy.orm.session.Session object at 0x3ff88e3a690> conn = <sqlalchemy.engine.base.Connection object at 0x3ff88e3b710> @pytest.mark.parametrize( "pixel_type", [ "1BB", "2BUI", "4BUI", "8BSI", "8BUI", "16BSI", "16BUI", "32BSI", "32BUI", "32BF", "64BF", ], ) def test_decipher_raster(self, pixel_type, session, conn): """Create a raster and decipher it""" metadata.drop_all(conn, checkfirst=True) metadata.create_all(conn) # Create a new raster polygon = WKTElement("POLYGON((0 0,1 1,0 1,0 0))", srid=4326) o = Ocean(polygon.ST_AsRaster(5, 6, pixel_type)) session.add(o) session.flush() # Decipher data from each raster image = wkbImage(o.rast.data) # Define expected result expected = [ [0, 1, 1, 1, 1], [1, 1, 1, 1, 1], [0, 1, 1, 1, 0], [0, 1, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 0, 0], ] # Check results band = image[0]
E assert [[0, 256, 256..., 0, 0, 0, 0]] == [[0, 1, 1, 1,..., 0, 0, 0, 0]]assert band == expected
E At index 0 diff: [0, 256, 256, 256, 256] != [0, 1, 1, 1, 1] E Use -v to get more diff tests/gallery/test_decipher_raster.py:188: AssertionError__________ TestDecipherRaster.test_decipher_raster[postgresql-32BSI] ___________
self = <tests.gallery.test_decipher_raster.TestDecipherRaster object at 0x3ff88e37d50>
pixel_type = '32BSI' session = <sqlalchemy.orm.session.Session object at 0x3ff88cc6310> conn = <sqlalchemy.engine.base.Connection object at 0x3ff88cc70d0> @pytest.mark.parametrize( "pixel_type", [ "1BB", "2BUI", "4BUI", "8BSI", "8BUI", "16BSI", "16BUI", "32BSI", "32BUI", "32BF", "64BF", ], ) def test_decipher_raster(self, pixel_type, session, conn): """Create a raster and decipher it""" metadata.drop_all(conn, checkfirst=True) metadata.create_all(conn) # Create a new raster polygon = WKTElement("POLYGON((0 0,1 1,0 1,0 0))", srid=4326) o = Ocean(polygon.ST_AsRaster(5, 6, pixel_type)) session.add(o) session.flush() # Decipher data from each raster image = wkbImage(o.rast.data) # Define expected result expected = [ [0, 1, 1, 1, 1], [1, 1, 1, 1, 1], [0, 1, 1, 1, 0], [0, 1, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 0, 0], ] # Check results band = image[0]
E assert [[0, 16777216..., 0, 0, 0, 0]] == [[0, 1, 1, 1,..., 0, 0, 0, 0]] E At index 0 diff: [0, 16777216, 16777216, 16777216, 16777216] != [0, 1, 1, 1, 1]assert band == expected
E Use -v to get more diff tests/gallery/test_decipher_raster.py:188: AssertionError__________ TestDecipherRaster.test_decipher_raster[postgresql-32BUI] ___________
self = <tests.gallery.test_decipher_raster.TestDecipherRaster object at 0x3ff88e36350>
pixel_type = '32BUI' session = <sqlalchemy.orm.session.Session object at 0x3ff88f8f210> conn = <sqlalchemy.engine.base.Connection object at 0x3ff88ef9450> @pytest.mark.parametrize( "pixel_type", [ "1BB", "2BUI", "4BUI", "8BSI", "8BUI", "16BSI", "16BUI", "32BSI", "32BUI", "32BF", "64BF", ], ) def test_decipher_raster(self, pixel_type, session, conn): """Create a raster and decipher it""" metadata.drop_all(conn, checkfirst=True) metadata.create_all(conn) # Create a new raster polygon = WKTElement("POLYGON((0 0,1 1,0 1,0 0))", srid=4326) o = Ocean(polygon.ST_AsRaster(5, 6, pixel_type)) session.add(o) session.flush() # Decipher data from each raster image = wkbImage(o.rast.data) # Define expected result expected = [ [0, 1, 1, 1, 1], [1, 1, 1, 1, 1], [0, 1, 1, 1, 0], [0, 1, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 0, 0], ] # Check results band = image[0]
E assert [[0, 16777216..., 0, 0, 0, 0]] == [[0, 1, 1, 1,..., 0, 0, 0, 0]] E At index 0 diff: [0, 16777216, 16777216, 16777216, 16777216] != [0, 1, 1, 1, 1]assert band == expected
E Use -v to get more diff tests/gallery/test_decipher_raster.py:188: AssertionError___________ TestDecipherRaster.test_decipher_raster[postgresql-32BF] ___________
self = <tests.gallery.test_decipher_raster.TestDecipherRaster object at 0x3ff88e37550>
pixel_type = '32BF' session = <sqlalchemy.orm.session.Session object at 0x3ff890a7210> conn = <sqlalchemy.engine.base.Connection object at 0x3ff890a56d0> @pytest.mark.parametrize( "pixel_type", [ "1BB", "2BUI", "4BUI", "8BSI", "8BUI", "16BSI", "16BUI", "32BSI", "32BUI", "32BF", "64BF", ], ) def test_decipher_raster(self, pixel_type, session, conn): """Create a raster and decipher it""" metadata.drop_all(conn, checkfirst=True) metadata.create_all(conn) # Create a new raster polygon = WKTElement("POLYGON((0 0,1 1,0 1,0 0))", srid=4326) o = Ocean(polygon.ST_AsRaster(5, 6, pixel_type)) session.add(o) session.flush() # Decipher data from each raster image = wkbImage(o.rast.data) # Define expected result expected = [ [0, 1, 1, 1, 1], [1, 1, 1, 1, 1], [0, 1, 1, 1, 0], [0, 1, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 0, 0], ] # Check results band = image[0]
E assert [[0.0, 4.6006....0, 0.0, 0.0]] == [[0, 1, 1, 1,..., 0, 0, 0, 0]] E At index 0 diff: [0.0, 4.600602988224807e-41, 4.600602988224807e-41, 4.600602988224807e-41, 4.600602988224807e-41] != [0, 1, 1, 1, 1]assert band == expected
E Use -v to get more diff tests/gallery/test_decipher_raster.py:188: AssertionError___________ TestDecipherRaster.test_decipher_raster[postgresql-64BF] ___________
self = <tests.gallery.test_decipher_raster.TestDecipherRaster object at 0x3ff88e37690>
pixel_type = '64BF' session = <sqlalchemy.orm.session.Session object at 0x3ff88cd69d0> conn = <sqlalchemy.engine.base.Connection object at 0x3ff88cd5710> @pytest.mark.parametrize( "pixel_type", [ "1BB", "2BUI", "4BUI", "8BSI", "8BUI", "16BSI", "16BUI", "32BSI", "32BUI", "32BF", "64BF", ], ) def test_decipher_raster(self, pixel_type, session, conn): """Create a raster and decipher it""" metadata.drop_all(conn, checkfirst=True) metadata.create_all(conn) # Create a new raster polygon = WKTElement("POLYGON((0 0,1 1,0 1,0 0))", srid=4326) o = Ocean(polygon.ST_AsRaster(5, 6, pixel_type)) session.add(o) session.flush() # Decipher data from each raster image = wkbImage(o.rast.data) # Define expected result expected = [ [0, 1, 1, 1, 1], [1, 1, 1, 1, 1], [0, 1, 1, 1, 0], [0, 1, 1, 0, 0], [0, 1, 0, 0, 0], [0, 0, 0, 0, 0], ] # Check results band = image[0]
E assert [[0.0, 3.0386....0, 0.0, 0.0]] == [[0, 1, 1, 1,..., 0, 0, 0, 0]] E At index 0 diff: [0.0, 3.03865e-319, 3.03865e-319, 3.03865e-319, 3.03865e-319] != [0, 1, 1, 1, 1]assert band == expected
E Use -v to get more diff tests/gallery/test_decipher_raster.py:188: AssertionError_________________ TestTypeDecorator.test_force_3d[postgresql] __________________
self = <tests.gallery.test_type_decorator.TestTypeDecorator object at 0x3ff88eda590>
session = <sqlalchemy.orm.session.Session object at 0x3ff890cb3d0> conn = <sqlalchemy.engine.base.Connection object at 0x3ff89017590> def test_force_3d(self, session, conn): self._create_one_point(session, conn) # Query the point and check the result pt = session.query(Point).one() assert pt.id == 1 assert pt.three_d_geom.srid == 4326
assert pt.three_d_geom.desc.lower() == (
"01010000a0e6100000000000000000144000000000008046400000000000000000" )E AssertionError: assert '00a000000100...0000000000000' == '01010000a0e6...0000000000000' E - 01010000a0e6100000000000000000144000000000008046400000000000000000 E + 00a0000001000010e6401400000000000040468000000000000000000000000000
tests/gallery/test_type_decorator.py:168: AssertionError_______________________________ test_from_shape ________________________________
def test_from_shape(): # Standard case: POINT(1 2)expected = WKBElement(str("0101000000000000000000f03f0000000000000040"))
p = Point(1, 2) e = from_shape(p) assert isinstance(e, WKBElement) assert isinstance(e.data, memoryview)
E assert <WKBElement at 0x3ff88c1b590; 00000000013ff00000000000004000000000000000> == <WKBElement at 0x3ff88b21390; 0101000000000000000000f03f0000000000000040>assert e == expected
tests/test_shape.py:68: AssertionError=============================== warnings summary ===============================
tests/test_functional_postgresql.py:529/tmp/autopkgtest-lxc.s0f82vua/downtmp/build.qUM/src/tests/test_functional_postgresql.py:529: MovedIn20Warning: Deprecated API features detected! These feature(s) are not compatible with SQLAlchemy 2.0. To prevent incompatible upgrades prior to updating applications, ensure requirements files are pinned to "sqlalchemy<2.0". Set environment variable SQLALCHEMY_WARN_20=1 to show all deprecation warnings. Set environment variable SQLALCHEMY_SILENCE_UBER_WARNING=1 to silence this message. (Background on SQLAlchemy 2.0 at: https://sqlalche.me/e/b8d9)
InternalBase = declarative_base() tests/test_functional.py: 4 warnings tests/test_functional_postgresql.py: 10 warnings/tmp/autopkgtest-lxc.s0f82vua/downtmp/build.qUM/src/geoalchemy2/types.py:150: PendingDeprecationWarning: The 'management' parameter is going to be deprecated and will raise an error in the version 0.14
warnings.warn( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html=========================== short test summary info ============================ FAILED tests/test_functional.py::TestInsertionORM::test_WKTElement[postgresql] FAILED tests/test_functional.py::TestInsertionORM::test_WKBElement[postgresql] FAILED tests/test_functional_postgresql.py::TestUpdateORM::test_Raster[postgresql] FAILED tests/gallery/test_decipher_raster.py::TestDecipherRaster::test_decipher_raster[postgresql-16BSI] FAILED tests/gallery/test_decipher_raster.py::TestDecipherRaster::test_decipher_raster[postgresql-16BUI] FAILED tests/gallery/test_decipher_raster.py::TestDecipherRaster::test_decipher_raster[postgresql-32BSI] FAILED tests/gallery/test_decipher_raster.py::TestDecipherRaster::test_decipher_raster[postgresql-32BUI] FAILED tests/gallery/test_decipher_raster.py::TestDecipherRaster::test_decipher_raster[postgresql-32BF] FAILED tests/gallery/test_decipher_raster.py::TestDecipherRaster::test_decipher_raster[postgresql-64BF] FAILED tests/gallery/test_type_decorator.py::TestTypeDecorator::test_force_3d[postgresql] FAILED tests/test_shape.py::test_from_shape - assert <WKBElement at 0x3ff88c1... ==== 11 failed, 374 passed, 80 skipped, 6 deselected, 15 warnings in 4.80s =====
stopping server server error log2023-04-11 17:30:01.768 EDT [5346] LOG: starting PostgreSQL 15.2 (Debian 15.2-2) on s390x-ibm-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit 2023-04-11 17:30:01.768 EDT [5346] LOG: listening on IPv6 address "::1", port 34897 2023-04-11 17:30:01.768 EDT [5346] LOG: listening on IPv4 address "127.0.0.1", port 34897 2023-04-11 17:30:01.768 EDT [5346] LOG: listening on Unix socket "/tmp/tmpfk6x0e7w/tmp/.s.PGSQL.34897" 2023-04-11 17:30:01.770 EDT [5349] LOG: database system was shut down at 2023-04-11 17:30:01 EDT 2023-04-11 17:30:01.773 EDT [5346] LOG: database system is ready to accept connections 2023-04-11 17:30:03.487 EDT [5358] WARNING: there is no transaction in progress 2023-04-11 17:30:04.109 EDT [5381] ERROR: function st_geomfromewkt(integer) does not exist at character 26 2023-04-11 17:30:04.109 EDT [5381] HINT: No function matches the given name and argument types. You might need to add explicit type casts. 2023-04-11 17:30:04.109 EDT [5381] STATEMENT: UPDATE gis.lake SET geom=ST_GeomFromEWKT(1) WHERE gis.lake.id = 1 2023-04-11 17:30:04.287 EDT [5386] ERROR: function st_unknownfunction(geometry, integer) does not exist at character 8 2023-04-11 17:30:04.287 EDT [5386] HINT: No function matches the given name and argument types. You might need to add explicit type casts. 2023-04-11 17:30:04.287 EDT [5386] STATEMENT: SELECT ST_UnknownFunction(gis.lake.geom, 2) AS "ST_UnknownFunction_1" FROM gis.lake 2023-04-11 17:30:04.504 EDT [5390] ERROR: new row for relation "contrained_lake" violates check constraint "check_geom_sk" 2023-04-11 17:30:04.504 EDT [5390] DETAIL: Failing row contains (4, null, should fail, null). 2023-04-11 17:30:04.504 EDT [5390] STATEMENT: INSERT INTO contrained_lake (a_str, checked_str, geom) VALUES (NULL, 'should fail', ST_GeomFromEWKT(NULL)) RETURNING contrained_lake.id 2023-04-11 17:30:05.237 EDT [5406] ERROR: contains: Operation on mixed SRID geometries (Polygon, 4326) != (Point, 0) 2023-04-11 17:30:05.237 EDT [5406] STATEMENT: SELECT gis.lake.id AS gis_lake_id, ST_AsEWKB(gis.lake.geom) AS gis_lake_geom FROM gis.lake WHERE ST_Within('POINT(0 0)', ST_Buffer(gis.lake.geom, 2)) 2023-04-11 17:30:06.922 EDT [5425] WARNING: OGC WKT expected, EWKT provided - use GeomFromEWKT() for this 2023-04-11 17:30:06.931 EDT [5425] WARNING: OGC WKT expected, EWKT provided - use GeomFromEWKT() for this
2023-04-11 17:30:07.408 EDT [5346] LOG: received smart shutdown request2023-04-11 17:30:12.419 EDT [5419] FATAL: terminating connection due to unexpected postmaster exit 2023-04-11 17:30:12.419 EDT [5423] FATAL: terminating connection due to unexpected postmaster exit 2023-04-11 17:30:12.419 EDT [5389] FATAL: terminating connection due to unexpected postmaster exit 2023-04-11 17:30:12.419 EDT [5409] FATAL: terminating connection due to unexpected postmaster exit 2023-04-11 17:30:12.419 EDT [5428] FATAL: terminating connection due to unexpected postmaster exit 2023-04-11 17:30:12.420 EDT [5402] FATAL: terminating connection due to unexpected postmaster exit 2023-04-11 17:30:12.422 EDT [5396] FATAL: terminating connection due to unexpected postmaster exit
clean up autopkgtest [17:30:12]: test setup-db-and-run-tests.py
OpenPGP_signature
Description: OpenPGP digital signature