]> granicus.if.org Git - postgis/commitdiff
Added automatic endian detection for the WKB parser/unparser.
authorDavid Blasby <dblasby@gmail.com>
Wed, 28 Apr 2004 18:10:41 +0000 (18:10 +0000)
committerDavid Blasby <dblasby@gmail.com>
Wed, 28 Apr 2004 18:10:41 +0000 (18:10 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@522 b70326c6-7e19-0410-871a-916f4a2858ee

lwgeom/lwgeom_regress.sql
lwgeom/lwgparse.c
lwgeom/wktunparse.c

index 662f70934d4f5a9564f65e079dc0dcd7fc62aacf..41992cd771870403d3f1bc0a5c1996caee8de218 100644 (file)
@@ -1,3 +1,4 @@
+
 drop table test_data;
 
 CREATE TABLE test_data (
@@ -8,6 +9,8 @@ CREATE TABLE test_data (
 );
 
 
+
+
 INSERT INTO test_data VALUES (1, 'MULTIPOINT(1 2)', '00000000040000000100000000013FF00000000000004000000000000000', '0104000000010000000101000000000000000000F03F0000000000000040');
 INSERT INTO test_data VALUES (-5, 'LINESTRING(1 2,3 4)', '0000000002000000023FF0000000000000400000000000000040080000000000004010000000000000', '010200000002000000000000000000F03F000000000000004000000000000008400000000000001040');
 INSERT INTO test_data VALUES (-4, 'LINESTRING(1 2 3,4 5 6)', '0080000002000000023FF000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000', '010200008002000000000000000000F03F00000000000000400000000000000840000000000000104000000000000014400000000000001840');
@@ -17,13 +20,13 @@ INSERT INTO test_data VALUES (14, 'MULTILINESTRING((1 2,3 4),(5 6,7 8))', '00000
 INSERT INTO test_data VALUES (0, 'POINT(1 2)', '00000000013FF00000000000004000000000000000', '0101000000000000000000F03F0000000000000040');
 INSERT INTO test_data VALUES (101, 'GEOMETRYCOLLECTION(POINT(1 2))', '00000000070000000100000000013FF00000000000004000000000000000', '0107000000010000000101000000000000000000F03F0000000000000040');
 INSERT INTO test_data VALUES (-1, 'POINT(1 2 3)', '00800000013FF000000000000040000000000000004008000000000000', '0101000080000000000000F03F00000000000000400000000000000840');
-INSERT INTO test_data VALUES (118, 'GEOMETRYCOLLECTION(LINESTRING(1 2 -1,3 4 -2,5 6 -3),LINESTRING(7 8 -1,9 10 -2,11 12 -3))', '0000000087000000020080000002000000033FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C00000000000000040140000000000004018000000000000C008000000000000008000000200000003401C0000000000004020000000000000BFF000000000000040220000000000004024000000000000C00000000000000040260000000000004028000000000000C008000000000000', '010700008002000000010200008003000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C00000000000001440000000000000184000000000000008C00102000080030000000000000000001C400000000000002040000000000000F0BF0000000000002240000000000000244000000000000000C00000000000002640000000000000284000000000000008C0');
+INSERT INTO test_data VALUES (118, 'GEOMETRYCOLLECTION(LINESTRING(1 2 -1,3 4 -2,5 6 -3),LINESTRING(7 8 -1,9 10 -2,11 12 -3))', '0080000007000000020080000002000000033FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C00000000000000040140000000000004018000000000000C008000000000000008000000200000003401C0000000000004020000000000000BFF000000000000040220000000000004024000000000000C00000000000000040260000000000004028000000000000C008000000000000', '010700008002000000010200008003000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C00000000000001440000000000000184000000000000008C00102000080030000000000000000001C400000000000002040000000000000F0BF0000000000002240000000000000244000000000000000C00000000000002640000000000000284000000000000008C0');
 INSERT INTO test_data VALUES (-8, 'LINESTRING(1 2,3 4,5 6,7 8,9 10)', '0000000002000000053FF000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000401C000000000000402000000000000040220000000000004024000000000000', '010200000005000000000000000000F03F000000000000004000000000000008400000000000001040000000000000144000000000000018400000000000001C40000000000000204000000000000022400000000000002440');
 INSERT INTO test_data VALUES (115, 'GEOMETRYCOLLECTION(LINESTRING(1 2,3 4,5 6),LINESTRING(7 8,9 10))', '0000000007000000020000000002000000033FF000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000000000000200000002401C000000000000402000000000000040220000000000004024000000000000', '010700000002000000010200000003000000000000000000F03F000000000000004000000000000008400000000000001040000000000000144000000000000018400102000000020000000000000000001C40000000000000204000000000000022400000000000002440');
-INSERT INTO test_data VALUES (117, 'GEOMETRYCOLLECTION(LINESTRING(5 6 -55,7 8 -22),LINESTRING(1 2 -1,3 4 -2))', '00000000870000000200800000020000000240140000000000004018000000000000C04B800000000000401C0000000000004020000000000000C0360000000000000080000002000000023FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C000000000000000', '010700008002000000010200008002000000000000000000144000000000000018400000000000804BC00000000000001C40000000000000204000000000000036C0010200008002000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C0');
+INSERT INTO test_data VALUES (117, 'GEOMETRYCOLLECTION(LINESTRING(5 6 -55,7 8 -22),LINESTRING(1 2 -1,3 4 -2))', '00800000070000000200800000020000000240140000000000004018000000000000C04B800000000000401C0000000000004020000000000000C0360000000000000080000002000000023FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C000000000000000', '010700008002000000010200008002000000000000000000144000000000000018400000000000804BC00000000000001C40000000000000204000000000000036C0010200008002000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C0');
 INSERT INTO test_data VALUES (-7, 'LINESTRING(1 2,3 4,5 6,7 8)', '0000000002000000043FF000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000401C0000000000004020000000000000', '010200000004000000000000000000F03F000000000000004000000000000008400000000000001040000000000000144000000000000018400000000000001C400000000000002040');
-INSERT INTO test_data VALUES (105, 'GEOMETRYCOLLECTION(POINT(1 2 -1))', '00000000870000000100800000013FF00000000000004000000000000000BFF0000000000000', '0107000080010000000101000080000000000000F03F0000000000000040000000000000F0BF');
-INSERT INTO test_data VALUES (112, 'GEOMETRYCOLLECTION(LINESTRING(1 2 -1,3 4 -2))', '0000000087000000010080000002000000023FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C000000000000000', '010700008001000000010200008002000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C0');
+INSERT INTO test_data VALUES (105, 'GEOMETRYCOLLECTION(POINT(1 2 -1))', '00800000070000000100800000013FF00000000000004000000000000000BFF0000000000000', '0107000080010000000101000080000000000000F03F0000000000000040000000000000F0BF');
+INSERT INTO test_data VALUES (112, 'GEOMETRYCOLLECTION(LINESTRING(1 2 -1,3 4 -2))', '0080000007000000010080000002000000023FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C000000000000000', '010700008001000000010200008002000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C0');
 INSERT INTO test_data VALUES (-6, 'LINESTRING(1 2,3 4,5 6)', '0000000002000000033FF000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000', '010200000003000000000000000000F03F00000000000000400000000000000840000000000000104000000000000014400000000000001840');
 INSERT INTO test_data VALUES (111, 'GEOMETRYCOLLECTION(LINESTRING(1 2,3 4,5 6))', '0000000007000000010000000002000000033FF000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000', '010700000001000000010200000003000000000000000000F03F00000000000000400000000000000840000000000000104000000000000014400000000000001840');
 INSERT INTO test_data VALUES (18, 'MULTILINESTRING((1 2 -1,3 4 -2,5 6 -3),(7 8 -1,9 10 -2,11 12 -3))', '0080000005000000020080000002000000033FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C00000000000000040140000000000004018000000000000C008000000000000008000000200000003401C0000000000004020000000000000BFF000000000000040220000000000004024000000000000C00000000000000040260000000000004028000000000000C008000000000000', '010500008002000000010200008003000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C00000000000001440000000000000184000000000000008C00102000080030000000000000000001C400000000000002040000000000000F0BF0000000000002240000000000000244000000000000000C00000000000002640000000000000284000000000000008C0');
@@ -32,25 +35,25 @@ INSERT INTO test_data VALUES (120, 'GEOMETRYCOLLECTION(POLYGON((0 0.1,0.2 10.3,1
 INSERT INTO test_data VALUES (100, 'GEOMETRYCOLLECTION(POINT(1 2),POINT(3 4))', '00000000070000000200000000013FF00000000000004000000000000000000000000140080000000000004010000000000000', '0107000000020000000101000000000000000000F03F0000000000000040010100000000000000000008400000000000001040');
 INSERT INTO test_data VALUES (122, 'GEOMETRYCOLLECTION(POLYGON((0 0.1,0.2 10.3,10.4 10.5,10.7 0.6,0 0.1),(2 2,2 3,3 3,3 2,2 2)))', '0000000007000000010000000003000000020000000500000000000000003FB999999999999A3FC999999999999A402499999999999A4024CCCCCCCCCCCD402500000000000040256666666666663FE333333333333300000000000000003FB999999999999A000000054000000000000000400000000000000040000000000000004008000000000000400800000000000040080000000000004008000000000000400000000000000040000000000000004000000000000000', '0107000000010000000103000000020000000500000000000000000000009A9999999999B93F9A9999999999C93F9A99999999992440CDCCCCCCCCCC244000000000000025406666666666662540333333333333E33F00000000000000009A9999999999B93F050000000000000000000040000000000000004000000000000000400000000000000840000000000000084000000000000008400000000000000840000000000000004000000000000000400000000000000040');
 INSERT INTO test_data VALUES (27, 'MULTIPOLYGON(((0 0.1,0.2 10.3,10.4 10.5,10.7 0.6,0 0.1)),((0 0.1,0.2 10.3,10.4 10.5,10.7 0.6,0 0.1),(2 2,2 3,3 3,3 2,2 2)))', '0000000006000000020000000003000000010000000500000000000000003FB999999999999A3FC999999999999A402499999999999A4024CCCCCCCCCCCD402500000000000040256666666666663FE333333333333300000000000000003FB999999999999A0000000003000000020000000500000000000000003FB999999999999A3FC999999999999A402499999999999A4024CCCCCCCCCCCD402500000000000040256666666666663FE333333333333300000000000000003FB999999999999A000000054000000000000000400000000000000040000000000000004008000000000000400800000000000040080000000000004008000000000000400000000000000040000000000000004000000000000000', '0106000000020000000103000000010000000500000000000000000000009A9999999999B93F9A9999999999C93F9A99999999992440CDCCCCCCCCCC244000000000000025406666666666662540333333333333E33F00000000000000009A9999999999B93F0103000000020000000500000000000000000000009A9999999999B93F9A9999999999C93F9A99999999992440CDCCCCCCCCCC244000000000000025406666666666662540333333333333E33F00000000000000009A9999999999B93F050000000000000000000040000000000000004000000000000000400000000000000840000000000000084000000000000008400000000000000840000000000000004000000000000000400000000000000040');
-INSERT INTO test_data VALUES (106, 'GEOMETRYCOLLECTION(POINT(1 2 -2),POINT(3 4 -2),POINT(5 6 -3))', '00000000870000000300800000013FF00000000000004000000000000000C000000000000000008000000140080000000000004010000000000000C000000000000000008000000140140000000000004018000000000000C008000000000000', '0107000080030000000101000080000000000000F03F000000000000004000000000000000C001010000800000000000000840000000000000104000000000000000C001010000800000000000001440000000000000184000000000000008C0');
+INSERT INTO test_data VALUES (106, 'GEOMETRYCOLLECTION(POINT(1 2 -2),POINT(3 4 -2),POINT(5 6 -3))', '00800000070000000300800000013FF00000000000004000000000000000C000000000000000008000000140080000000000004010000000000000C000000000000000008000000140140000000000004018000000000000C008000000000000', '0107000080030000000101000080000000000000F03F000000000000004000000000000000C001010000800000000000000840000000000000104000000000000000C001010000800000000000001440000000000000184000000000000008C0');
 INSERT INTO test_data VALUES (11, 'MULTILINESTRING((1 2,3 4,5 6))', '0000000005000000010000000002000000033FF000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000', '010500000001000000010200000003000000000000000000F03F00000000000000400000000000000840000000000000104000000000000014400000000000001840');
 INSERT INTO test_data VALUES (12, 'MULTILINESTRING((1 2 -1,3 4 -2))', '0080000005000000010080000002000000023FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C000000000000000', '010500008001000000010200008002000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C0');
 INSERT INTO test_data VALUES (13, 'MULTILINESTRING((1 2 -1,3 4 -2,5 6 -3))', '0080000005000000010080000002000000033FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C00000000000000040140000000000004018000000000000C008000000000000', '010500008001000000010200008003000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C00000000000001440000000000000184000000000000008C0');
 INSERT INTO test_data VALUES (102, 'GEOMETRYCOLLECTION(POINT(1 2),POINT(3 4),POINT(5 6))', '00000000070000000300000000013FF00000000000004000000000000000000000000140080000000000004010000000000000000000000140140000000000004018000000000000', '0107000000030000000101000000000000000000F03F0000000000000040010100000000000000000008400000000000001040010100000000000000000014400000000000001840');
-INSERT INTO test_data VALUES (104, 'GEOMETRYCOLLECTION(POINT(1 2 -1),POINT(3 4 -2))', '00000000870000000200800000013FF00000000000004000000000000000BFF0000000000000008000000140080000000000004010000000000000C000000000000000', '0107000080020000000101000080000000000000F03F0000000000000040000000000000F0BF01010000800000000000000840000000000000104000000000000000C0');
+INSERT INTO test_data VALUES (104, 'GEOMETRYCOLLECTION(POINT(1 2 -1),POINT(3 4 -2))', '00800000070000000200800000013FF00000000000004000000000000000BFF0000000000000008000000140080000000000004010000000000000C000000000000000', '0107000080020000000101000080000000000000F03F0000000000000040000000000000F0BF01010000800000000000000840000000000000104000000000000000C0');
 INSERT INTO test_data VALUES (17, 'MULTILINESTRING((5 6 -55,7 8 -22),(1 2 -1,3 4 -2))', '00800000050000000200800000020000000240140000000000004018000000000000C04B800000000000401C0000000000004020000000000000C0360000000000000080000002000000023FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C000000000000000', '010500008002000000010200008002000000000000000000144000000000000018400000000000804BC00000000000001C40000000000000204000000000000036C0010200008002000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C0');
-INSERT INTO test_data VALUES (113, 'GEOMETRYCOLLECTION(LINESTRING(1 2 -1,3 4 -2,5 6 -3))', '0000000087000000010080000002000000033FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C00000000000000040140000000000004018000000000000C008000000000000', '010700008001000000010200008003000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C00000000000001440000000000000184000000000000008C0');
+INSERT INTO test_data VALUES (113, 'GEOMETRYCOLLECTION(LINESTRING(1 2 -1,3 4 -2,5 6 -3))', '0080000007000000010080000002000000033FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C00000000000000040140000000000004018000000000000C008000000000000', '010700008001000000010200008003000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C00000000000001440000000000000184000000000000008C0');
 INSERT INTO test_data VALUES (-3, 'LINESTRING(1 2 3,4 5 6,7 8 9)', '0080000002000000033FF000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000401C00000000000040200000000000004022000000000000', '010200008003000000000000000000F03F000000000000004000000000000008400000000000001040000000000000144000000000000018400000000000001C4000000000000020400000000000002240');
 INSERT INTO test_data VALUES (21, 'MULTIPOLYGON(((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01)))', '0080000006000000010080000003000000010000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B', '0106000080010000000103000080010000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF');
-INSERT INTO test_data VALUES (116, 'GEOMETRYCOLLECTION(LINESTRING(1 2 -1,3 4 -2),LINESTRING(5 6 -55,7 8 -22))', '0000000087000000020080000002000000023FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C00000000000000000800000020000000240140000000000004018000000000000C04B800000000000401C0000000000004020000000000000C036000000000000', '010700008002000000010200008002000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C0010200008002000000000000000000144000000000000018400000000000804BC00000000000001C40000000000000204000000000000036C0');
+INSERT INTO test_data VALUES (116, 'GEOMETRYCOLLECTION(LINESTRING(1 2 -1,3 4 -2),LINESTRING(5 6 -55,7 8 -22))', '0080000007000000020080000002000000023FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C00000000000000000800000020000000240140000000000004018000000000000C04B800000000000401C0000000000004020000000000000C036000000000000', '010700008002000000010200008002000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C0010200008002000000000000000000144000000000000018400000000000804BC00000000000001C40000000000000204000000000000036C0');
 INSERT INTO test_data VALUES (-2, 'LINESTRING(1 2 3,4 5 6,7 8 9,10 11 12)', '0080000002000000043FF000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000401C00000000000040200000000000004022000000000000402400000000000040260000000000004028000000000000', '010200008004000000000000000000F03F000000000000004000000000000008400000000000001040000000000000144000000000000018400000000000001C4000000000000020400000000000002240000000000000244000000000000026400000000000002840');
 INSERT INTO test_data VALUES (2, 'MULTIPOINT(1 2,3 4)', '00000000040000000200000000013FF00000000000004000000000000000000000000140080000000000004010000000000000', '0104000000020000000101000000000000000000F03F0000000000000040010100000000000000000008400000000000001040');
 INSERT INTO test_data VALUES (3, 'MULTIPOINT(1 2 3,4 5 6)', '00800000040000000200800000013FF0000000000000400000000000000040080000000000000080000001401000000000000040140000000000004018000000000000', '0104000080020000000101000080000000000000F03F000000000000004000000000000008400101000080000000000000104000000000000014400000000000001840');
 INSERT INTO test_data VALUES (4, 'MULTIPOINT(1 2 3,4 5 6,7 8 9)', '00800000040000000300800000013FF00000000000004000000000000000400800000000000000800000014010000000000000401400000000000040180000000000000080000001401C00000000000040200000000000004022000000000000', '0104000080030000000101000080000000000000F03F00000000000000400000000000000840010100008000000000000010400000000000001440000000000000184001010000800000000000001C4000000000000020400000000000002240');
 INSERT INTO test_data VALUES (5, 'MULTIPOINT(1 2,4 5,7 8)', '00000000040000000300000000013FF000000000000040000000000000000000000001401000000000000040140000000000000000000001401C0000000000004020000000000000', '0104000000030000000101000000000000000000F03F000000000000004001010000000000000000001040000000000000144001010000000000000000001C400000000000002040');
 INSERT INTO test_data VALUES (10, 'MULTILINESTRING((1 2,3 4))', '0000000005000000010000000002000000023FF0000000000000400000000000000040080000000000004010000000000000', '010500000001000000010200000002000000000000000000F03F000000000000004000000000000008400000000000001040');
-INSERT INTO test_data VALUES (121, 'GEOMETRYCOLLECTION(POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01)))', '0000000087000000010080000003000000010000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B', '0107000080010000000103000080010000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF');
-INSERT INTO test_data VALUES (123, 'GEOMETRYCOLLECTION(POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01)))', '0000000087000000010080000003000000020000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B', '0107000080010000000103000080020000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF');
+INSERT INTO test_data VALUES (121, 'GEOMETRYCOLLECTION(POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01)))', '0080000007000000010080000003000000010000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B', '0107000080010000000103000080010000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF');
+INSERT INTO test_data VALUES (123, 'GEOMETRYCOLLECTION(POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01)))', '0080000007000000010080000003000000020000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B', '0107000080010000000103000080020000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF');
 INSERT INTO test_data VALUES (125, 'GEOMETRYCOLLECTION(POLYGON((0 0.1,0.2 10.3,10.4 10.5,10.7 0.6,0 0.1)),POLYGON((0 0.1,0.2 10.3,10.4 10.5,10.7 0.6,0 0.1)))', '0000000007000000020000000003000000010000000500000000000000003FB999999999999A3FC999999999999A402499999999999A4024CCCCCCCCCCCD402500000000000040256666666666663FE333333333333300000000000000003FB999999999999A0000000003000000010000000500000000000000003FB999999999999A3FC999999999999A402499999999999A4024CCCCCCCCCCCD402500000000000040256666666666663FE333333333333300000000000000003FB999999999999A', '0107000000020000000103000000010000000500000000000000000000009A9999999999B93F9A9999999999C93F9A99999999992440CDCCCCCCCCCC244000000000000025406666666666662540333333333333E33F00000000000000009A9999999999B93F0103000000010000000500000000000000000000009A9999999999B93F9A9999999999C93F9A99999999992440CDCCCCCCCCCC244000000000000025406666666666662540333333333333E33F00000000000000009A9999999999B93F');
 INSERT INTO test_data VALUES (15, 'MULTILINESTRING((1 2,3 4,5 6),(7 8,9 10))', '0000000005000000020000000002000000033FF000000000000040000000000000004008000000000000401000000000000040140000000000004018000000000000000000000200000002401C000000000000402000000000000040220000000000004024000000000000', '010500000002000000010200000003000000000000000000F03F000000000000004000000000000008400000000000001040000000000000144000000000000018400102000000020000000000000000001C40000000000000204000000000000022400000000000002440');
 INSERT INTO test_data VALUES (16, 'MULTILINESTRING((1 2 -1,3 4 -2),(5 6 -55,7 8 -22))', '0080000005000000020080000002000000023FF00000000000004000000000000000BFF000000000000040080000000000004010000000000000C00000000000000000800000020000000240140000000000004018000000000000C04B800000000000401C0000000000004020000000000000C036000000000000', '010500008002000000010200008002000000000000000000F03F0000000000000040000000000000F0BF0000000000000840000000000000104000000000000000C0010200008002000000000000000000144000000000000018400000000000804BC00000000000001C40000000000000204000000000000036C0');
@@ -67,10 +70,10 @@ INSERT INTO test_data VALUES (31, 'MULTIPOLYGON(((0 0.1 -0.01,0.2 10.3 -0.02,10.
 INSERT INTO test_data VALUES (32, 'MULTIPOLYGON(((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01)),((0 0.1 0,0.2 10.3 0,10.4 10.5 0,10.7 0.6 0,0 0.1 0),(2 2 0,2 3 0,3 3 0,3 2 0,2 2 0)))', '0080000006000000020080000003000000020000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B0080000003000000020000000500000000000000003FB999999999999A00000000000000003FC999999999999A402499999999999A00000000000000004024CCCCCCCCCCCD4025000000000000000000000000000040256666666666663FE3333333333333000000000000000000000000000000003FB999999999999A000000000000000000000005400000000000000040000000000000000000000000000000400000000000000040080000000000000000000000000000400800000000000040080000000000000000000000000000400800000000000040000000000000000000000000000000400000000000000040000000000000000000000000000000', '0106000080020000000103000080020000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF0103000080020000000500000000000000000000009A9999999999B93F00000000000000009A9999999999C93F9A999999999924400000000000000000CDCCCCCCCCCC2440000000000000254000000000000000006666666666662540333333333333E33F000000000000000000000000000000009A9999999999B93F000000000000000005000000000000000000004000000000000000400000000000000000000000000000004000000000000008400000000000000000000000000000084000000000000008400000000000000000000000000000084000000000000000400000000000000000000000000000004000000000000000400000000000000000');
 INSERT INTO test_data VALUES (33, 'MULTIPOLYGON(((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01)),((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01)))', '0080000006000000020080000003000000020000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B0080000003000000020000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B', '0106000080020000000103000080020000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF0103000080020000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF');
 INSERT INTO test_data VALUES (34, 'MULTIPOLYGON(((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01)),((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01),(4 2 0,4 3 0,5 3 0,5 2 0,4 2 0)))', '0080000006000000020080000003000000020000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B0080000003000000030000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B00000005401000000000000040000000000000000000000000000000401000000000000040080000000000000000000000000000401400000000000040080000000000000000000000000000401400000000000040000000000000000000000000000000401000000000000040000000000000000000000000000000', '0106000080020000000103000080020000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF0103000080030000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF05000000000000000000104000000000000000400000000000000000000000000000104000000000000008400000000000000000000000000000144000000000000008400000000000000000000000000000144000000000000000400000000000000000000000000000104000000000000000400000000000000000');
-INSERT INTO test_data VALUES (124, 'GEOMETRYCOLLECTION(POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01),(4 2 0,4 3 0,5 3 0,5 2 0,4 2 0)))', '0000000087000000010080000003000000030000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B00000005401000000000000040000000000000000000000000000000401000000000000040080000000000000000000000000000401400000000000040080000000000000000000000000000401400000000000040000000000000000000000000000000401000000000000040000000000000000000000000000000', '0107000080010000000103000080030000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF05000000000000000000104000000000000000400000000000000000000000000000104000000000000008400000000000000000000000000000144000000000000008400000000000000000000000000000144000000000000000400000000000000000000000000000104000000000000000400000000000000000');
-INSERT INTO test_data VALUES (126, 'GEOMETRYCOLLECTION(POLYGON((0 0.1 0,0.2 10.3 0,10.4 10.5 0,10.7 0.6 0,0 0.1 0)),POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01)))', '0000000087000000020080000003000000010000000500000000000000003FB999999999999A00000000000000003FC999999999999A402499999999999A00000000000000004024CCCCCCCCCCCD4025000000000000000000000000000040256666666666663FE3333333333333000000000000000000000000000000003FB999999999999A00000000000000000080000003000000010000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B', '0107000080020000000103000080010000000500000000000000000000009A9999999999B93F00000000000000009A9999999999C93F9A999999999924400000000000000000CDCCCCCCCCCC2440000000000000254000000000000000006666666666662540333333333333E33F000000000000000000000000000000009A9999999999B93F00000000000000000103000080010000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF');
-INSERT INTO test_data VALUES (128, 'GEOMETRYCOLLECTION(POLYGON((0 0.1 0,0.2 10.3 0,10.4 10.5 0,10.7 0.6 0,0 0.1 0)),POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01)))', '0000000087000000020080000003000000010000000500000000000000003FB999999999999A00000000000000003FC999999999999A402499999999999A00000000000000004024CCCCCCCCCCCD4025000000000000000000000000000040256666666666663FE3333333333333000000000000000000000000000000003FB999999999999A00000000000000000080000003000000020000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B', '0107000080020000000103000080010000000500000000000000000000009A9999999999B93F00000000000000009A9999999999C93F9A999999999924400000000000000000CDCCCCCCCCCC2440000000000000254000000000000000006666666666662540333333333333E33F000000000000000000000000000000009A9999999999B93F00000000000000000103000080020000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF');
-INSERT INTO test_data VALUES (129, 'GEOMETRYCOLLECTION(POLYGON((0 0.1 0,0.2 10.3 0,10.4 10.5 0,10.7 0.6 0,0 0.1 0)),POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01),(4 2 0,4 3 0,5 3 0,5 2 0,4 2 0)))', '0000000087000000020080000003000000010000000500000000000000003FB999999999999A00000000000000003FC999999999999A402499999999999A00000000000000004024CCCCCCCCCCCD4025000000000000000000000000000040256666666666663FE3333333333333000000000000000000000000000000003FB999999999999A00000000000000000080000003000000030000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B00000005401000000000000040000000000000000000000000000000401000000000000040080000000000000000000000000000401400000000000040080000000000000000000000000000401400000000000040000000000000000000000000000000401000000000000040000000000000000000000000000000', '0107000080020000000103000080010000000500000000000000000000009A9999999999B93F00000000000000009A9999999999C93F9A999999999924400000000000000000CDCCCCCCCCCC2440000000000000254000000000000000006666666666662540333333333333E33F000000000000000000000000000000009A9999999999B93F00000000000000000103000080030000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF05000000000000000000104000000000000000400000000000000000000000000000104000000000000008400000000000000000000000000000144000000000000008400000000000000000000000000000144000000000000000400000000000000000000000000000104000000000000000400000000000000000');
+INSERT INTO test_data VALUES (124, 'GEOMETRYCOLLECTION(POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01),(4 2 0,4 3 0,5 3 0,5 2 0,4 2 0)))', '0080000007000000010080000003000000030000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B00000005401000000000000040000000000000000000000000000000401000000000000040080000000000000000000000000000401400000000000040080000000000000000000000000000401400000000000040000000000000000000000000000000401000000000000040000000000000000000000000000000', '0107000080010000000103000080030000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF05000000000000000000104000000000000000400000000000000000000000000000104000000000000008400000000000000000000000000000144000000000000008400000000000000000000000000000144000000000000000400000000000000000000000000000104000000000000000400000000000000000');
+INSERT INTO test_data VALUES (126, 'GEOMETRYCOLLECTION(POLYGON((0 0.1 0,0.2 10.3 0,10.4 10.5 0,10.7 0.6 0,0 0.1 0)),POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01)))', '0080000007000000020080000003000000010000000500000000000000003FB999999999999A00000000000000003FC999999999999A402499999999999A00000000000000004024CCCCCCCCCCCD4025000000000000000000000000000040256666666666663FE3333333333333000000000000000000000000000000003FB999999999999A00000000000000000080000003000000010000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B', '0107000080020000000103000080010000000500000000000000000000009A9999999999B93F00000000000000009A9999999999C93F9A999999999924400000000000000000CDCCCCCCCCCC2440000000000000254000000000000000006666666666662540333333333333E33F000000000000000000000000000000009A9999999999B93F00000000000000000103000080010000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF');
+INSERT INTO test_data VALUES (128, 'GEOMETRYCOLLECTION(POLYGON((0 0.1 0,0.2 10.3 0,10.4 10.5 0,10.7 0.6 0,0 0.1 0)),POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01)))', '0080000007000000020080000003000000010000000500000000000000003FB999999999999A00000000000000003FC999999999999A402499999999999A00000000000000004024CCCCCCCCCCCD4025000000000000000000000000000040256666666666663FE3333333333333000000000000000000000000000000003FB999999999999A00000000000000000080000003000000020000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B', '0107000080020000000103000080010000000500000000000000000000009A9999999999B93F00000000000000009A9999999999C93F9A999999999924400000000000000000CDCCCCCCCCCC2440000000000000254000000000000000006666666666662540333333333333E33F000000000000000000000000000000009A9999999999B93F00000000000000000103000080020000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF');
+INSERT INTO test_data VALUES (129, 'GEOMETRYCOLLECTION(POLYGON((0 0.1 0,0.2 10.3 0,10.4 10.5 0,10.7 0.6 0,0 0.1 0)),POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01),(4 2 0,4 3 0,5 3 0,5 2 0,4 2 0)))', '0080000007000000020080000003000000010000000500000000000000003FB999999999999A00000000000000003FC999999999999A402499999999999A00000000000000004024CCCCCCCCCCCD4025000000000000000000000000000040256666666666663FE3333333333333000000000000000000000000000000003FB999999999999A00000000000000000080000003000000030000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B00000005401000000000000040000000000000000000000000000000401000000000000040080000000000000000000000000000401400000000000040080000000000000000000000000000401400000000000040000000000000000000000000000000401000000000000040000000000000000000000000000000', '0107000080020000000103000080010000000500000000000000000000009A9999999999B93F00000000000000009A9999999999C93F9A999999999924400000000000000000CDCCCCCCCCCC2440000000000000254000000000000000006666666666662540333333333333E33F000000000000000000000000000000009A9999999999B93F00000000000000000103000080030000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF05000000000000000000104000000000000000400000000000000000000000000000104000000000000008400000000000000000000000000000144000000000000008400000000000000000000000000000144000000000000000400000000000000000000000000000104000000000000000400000000000000000');
 INSERT INTO test_data VALUES (130, 'MULTIPOLYGON(((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01)),((0 0.1 0,0.2 10.3 0,10.4 10.5 0,10.7 0.6 0,0 0.1 0)))', '0080000006000000020080000003000000020000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B0080000003000000010000000500000000000000003FB999999999999A00000000000000003FC999999999999A402499999999999A00000000000000004024CCCCCCCCCCCD4025000000000000000000000000000040256666666666663FE3333333333333000000000000000000000000000000003FB999999999999A0000000000000000', '0106000080020000000103000080020000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF0103000080010000000500000000000000000000009A9999999999B93F00000000000000009A9999999999C93F9A999999999924400000000000000000CDCCCCCCCCCC2440000000000000254000000000000000006666666666662540333333333333E33F000000000000000000000000000000009A9999999999B93F0000000000000000');
 INSERT INTO test_data VALUES (131, 'MULTIPOLYGON(((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01)),((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01)))', '0080000006000000020080000003000000020000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B0080000003000000010000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B', '0106000080020000000103000080020000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF0103000080010000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF');
 INSERT INTO test_data VALUES (132, 'MULTIPOLYGON(((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01)),((0 0.1 0,0.2 10.3 0,10.4 10.5 0,10.7 0.6 0,0 0.1 0),(2 2 0,2 3 0,3 3 0,3 2 0,2 2 0)))', '0080000006000000020080000003000000020000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B0080000003000000020000000500000000000000003FB999999999999A00000000000000003FC999999999999A402499999999999A00000000000000004024CCCCCCCCCCCD4025000000000000000000000000000040256666666666663FE3333333333333000000000000000000000000000000003FB999999999999A000000000000000000000005400000000000000040000000000000000000000000000000400000000000000040080000000000000000000000000000400800000000000040080000000000000000000000000000400800000000000040000000000000000000000000000000400000000000000040000000000000000000000000000000', '0106000080020000000103000080020000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF0103000080020000000500000000000000000000009A9999999999B93F00000000000000009A9999999999C93F9A999999999924400000000000000000CDCCCCCCCCCC2440000000000000254000000000000000006666666666662540333333333333E33F000000000000000000000000000000009A9999999999B93F000000000000000005000000000000000000004000000000000000400000000000000000000000000000004000000000000008400000000000000000000000000000084000000000000008400000000000000000000000000000084000000000000000400000000000000000000000000000004000000000000000400000000000000000');
@@ -83,8 +86,6 @@ INSERT INTO test_data VALUES (-12, 'POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.
 INSERT INTO test_data VALUES (-13, 'POLYGON((0 0.1 -0.01,0.2 10.3 -0.02,10.4 10.5 -0.03,10.7 0.6 -0.04,0 0.1 -0.01),(2 2 -0.01,2 3 -0.01,3 3 -0.01,3 2 -0.01,2 2 -0.01),(4 2 0,4 3 0,5 3 0,5 2 0,4 2 0))', '0080000003000000030000000500000000000000003FB999999999999ABF847AE147AE147B3FC999999999999A402499999999999ABF947AE147AE147B4024CCCCCCCCCCCD4025000000000000BF9EB851EB851EB840256666666666663FE3333333333333BFA47AE147AE147B00000000000000003FB999999999999ABF847AE147AE147B0000000540000000000000004000000000000000BF847AE147AE147B40000000000000004008000000000000BF847AE147AE147B40080000000000004008000000000000BF847AE147AE147B40080000000000004000000000000000BF847AE147AE147B40000000000000004000000000000000BF847AE147AE147B00000005401000000000000040000000000000000000000000000000401000000000000040080000000000000000000000000000401400000000000040080000000000000000000000000000401400000000000040000000000000000000000000000000401000000000000040000000000000000000000000000000', '0103000080030000000500000000000000000000009A9999999999B93F7B14AE47E17A84BF9A9999999999C93F9A999999999924407B14AE47E17A94BFCDCCCCCCCCCC24400000000000002540B81E85EB51B89EBF6666666666662540333333333333E33F7B14AE47E17AA4BF00000000000000009A9999999999B93F7B14AE47E17A84BF05000000000000000000004000000000000000407B14AE47E17A84BF000000000000004000000000000008407B14AE47E17A84BF000000000000084000000000000008407B14AE47E17A84BF000000000000084000000000000000407B14AE47E17A84BF000000000000004000000000000000407B14AE47E17A84BF05000000000000000000104000000000000000400000000000000000000000000000104000000000000008400000000000000000000000000000144000000000000008400000000000000000000000000000144000000000000000400000000000000000000000000000104000000000000000400000000000000000');
 
 
--- this should come up with no results
----  currently it lists the 5 multipoint() cases - thats okay.
 SELECT id,wkt FROM test_data WHERE
        asText(lwgeom(wkt)) != wkt  OR
        asText(lwgeom(wkb_xdr)) != wkt OR 
index a491dc680ee4fa3e4b76b9537156c5803cbd21a1..07ce6390f46f8e68f9ad6b50dad8553896946e71 100644 (file)
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
 
+
+static int endian_check_int = 1; // dont modify this!!!
+
+#define LITTLE_ENDIAN 1
+static char getMachineEndian()
+{
+       return *((char *) &endian_check_int); // 0 = big endian, 1 = little endian
+}
+
+
 typedef unsigned long int4;
 
 int srid=-1;
@@ -200,7 +210,7 @@ void check_dims(int num){
 #ifdef SHRINK_INTS
 void WRITE_INT4(output_state * out,int4 val){
        if ( val <= 0x7f ){
-               if ( BYTE_ORDER == LITTLE_ENDIAN ){
+               if ( getMachineEndian() == LITTLE_ENDIAN ){
                        val = (val<<1) | 1;
                }
                else{
@@ -211,7 +221,7 @@ void WRITE_INT4(output_state * out,int4 val){
                the_geom.alloc_size-=3;
        }
        else{
-               if ( BYTE_ORDER == LITTLE_ENDIAN ){
+               if ( getMachineEndian() == LITTLE_ENDIAN ){
                        val <<=1;
                }
                WRITE_INT4_REAL(out,val);
@@ -548,7 +558,7 @@ double read_wbk_double(const char** in,int convert_from_int){
 
 void read_wkb_point(const char** b){
        int i;
-       tuple* p;
+       tuple* p = NULL;
 
 
        if(the_geom.lwgi && the_geom.from_lwgi ){
@@ -606,11 +616,11 @@ void parse_wkb(const char** b){
        swap_order=0;
 
        if ( xdr == 0x01 ){  // wkb is in little endian
-               if ( BYTE_ORDER != LITTLE_ENDIAN )
+               if ( getMachineEndian() != LITTLE_ENDIAN )
                        swap_order=1;
        }
        else if ( xdr == 0x00 ){ // wkb is in big endian
-               if ( BYTE_ORDER == LITTLE_ENDIAN )
+               if ( getMachineEndian() == LITTLE_ENDIAN )
                        swap_order=1;
        }
 
index e0e189eef924310291bf49a0f5209fb769555693..b8c34be0fd50420d9f4e4f9dfa209666682edfdc 100644 (file)
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
 
+
+static int endian_check_int = 1; // dont modify this!!!
+
+#define LITTLE_ENDIAN 1
+static char getMachineEndian()
+{
+       return *((char *) &endian_check_int); // 0 = big endian, 1 = little endian
+}
+
+
 typedef unsigned long int4;
 
 static int dims;
@@ -70,7 +80,7 @@ void write_int(int i){
 int4 read_int(byte** geom){
        int4 ret;
 #ifdef SHRINK_INTS
-       if ( BYTE_ORDER == LITTLE_ENDIAN ){
+       if ( getMachineEndian() == LITTLE_ENDIAN ){
                if( (**geom)& 0x01){
                        ret = **geom >>1;
                        (*geom)++;
@@ -88,7 +98,7 @@ int4 read_int(byte** geom){
        memcpy(&ret,*geom,4);
 
 #ifdef SHRINK_INTS
-       if ( BYTE_ORDER == LITTLE_ENDIAN ){
+       if ( getMachineEndian() == LITTLE_ENDIAN ){
                ret >>= 1;
        }
 #endif
@@ -304,7 +314,7 @@ byte* output_wkb(byte* geom){
        else if (dims==4)
                 type |=0x40000000;
 
-       if ( BYTE_ORDER != LITTLE_ENDIAN ){
+       if ( getMachineEndian() != LITTLE_ENDIAN ){
                byte endian=0;
                write_wkb_bytes(&endian,1);
        }