--- Begin Message ---
Source: geoalchemy2
Version: 0.13.1-2
Severity: serious
Tags: sid bookworm bookworm-ignore
User: [email protected]
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_data
E AssertionError: assert '00000000013F...0000100000000' ==
'01000001009A...0000100000000'
E Skipping 45 identical trailing characters in diff, use -v to show
E -
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]
assert band == expected
E assert [[0, 256, 256..., 0, 0, 0, 0]] == [[0, 1, 1, 1,..., 0, 0,
0, 0]]
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]
assert band == expected
E assert [[0, 256, 256..., 0, 0, 0, 0]] == [[0, 1, 1, 1,..., 0, 0,
0, 0]]
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]
assert band == expected
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]
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]
assert band == expected
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]
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]
assert band == expected
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]
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]
assert band == expected
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]
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)
assert e == expected
E assert <WKBElement at 0x3ff88c1b590;
00000000013ff00000000000004000000000000000> == <WKBElement at
0x3ff88b21390; 0101000000000000000000f03f0000000000000040>
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 log
2023-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 request
2023-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
--- End Message ---