Thread: Array of box not supported?
To insert into a box[ ], I need to convert the individual boxes into a string. I get a "malformed array literal" error with any of the following formats for a 1 dimensional array with two boxes:
{"1.0,1.0,0.0,0.0","10.0,10.0,0.0,0.0"}
{"((1.0,1.0),(0.0,0.0))","((10.0,10.0),(0.0,0.0))"}
{"(1.0,1.0),(0.0,0.0)","(10.0,10.0),(0.0,0.0)"}
Can anybody suggest other things to try, or do I conclude that box[ ] isn't supported?
{"1.0,1.0,0.0,0.0","10.0,10.0,0.0,0.0"}
{"((1.0,1.0),(0.0,0.0))","((10.0,10.0),(0.0,0.0))"}
{"(1.0,1.0),(0.0,0.0)","(10.0,10.0),(0.0,0.0)"}
Can anybody suggest other things to try, or do I conclude that box[ ] isn't supported?
RW Shore <rws228@gmail.com> writes: > To insert into a box[ ], I need to convert the individual boxes into a > string. I get a "malformed array literal" error with any of the following > formats for a 1 dimensional array with two boxes: > {"1.0,1.0,0.0,0.0","10.0,10.0,0.0,0.0"} > {"((1.0,1.0),(0.0,0.0))","((10.0,10.0),(0.0,0.0))"} > {"(1.0,1.0),(0.0,0.0)","(10.0,10.0),(0.0,0.0)"} For historical reasons (well, I can see why they did it, but it's still weird), array of box uses semicolon not comma as the delimiter between array elements. regression=# select '{"1.0,1.0,0.0,0.0","10.0,10.0,0.0,0.0"}'::box[]; ERROR: malformed array literal: "{"1.0,1.0,0.0,0.0","10.0,10.0,0.0,0.0"}" LINE 1: select '{"1.0,1.0,0.0,0.0","10.0,10.0,0.0,0.0"}'::box[]; ^ regression=# select '{"1.0,1.0,0.0,0.0";"10.0,10.0,0.0,0.0"}'::box[]; box ----------------------------- {(1,1),(0,0);(10,10),(0,0)} (1 row) The advantage is you don't need double quotes: regression=# select '{1.0,1.0,0.0,0.0;10.0,10.0,0.0,0.0}'::box[]; box ----------------------------- {(1,1),(0,0);(10,10),(0,0)} (1 row) Whether this requires any special pushups on the JDBC side is beyond my ken. regards, tom lane
That did it, thanks much.
Ah, the joys of inconsistency (all other geometric types use or at least accept comma - only box is different)
Ah, the joys of inconsistency (all other geometric types use or at least accept comma - only box is different)
On Wed, Feb 16, 2011 at 12:17 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
RW Shore <rws228@gmail.com> writes:For historical reasons (well, I can see why they did it, but it's still
> To insert into a box[ ], I need to convert the individual boxes into a
> string. I get a "malformed array literal" error with any of the following
> formats for a 1 dimensional array with two boxes:
> {"1.0,1.0,0.0,0.0","10.0,10.0,0.0,0.0"}
> {"((1.0,1.0),(0.0,0.0))","((10.0,10.0),(0.0,0.0))"}
> {"(1.0,1.0),(0.0,0.0)","(10.0,10.0),(0.0,0.0)"}
weird), array of box uses semicolon not comma as the delimiter between
array elements.
regression=# select '{"1.0,1.0,0.0,0.0","10.0,10.0,0.0,0.0"}'::box[];
ERROR: malformed array literal: "{"1.0,1.0,0.0,0.0","10.0,10.0,0.0,0.0"}"
LINE 1: select '{"1.0,1.0,0.0,0.0","10.0,10.0,0.0,0.0"}'::box[];
^
regression=# select '{"1.0,1.0,0.0,0.0";"10.0,10.0,0.0,0.0"}'::box[];
box
-----------------------------
{(1,1),(0,0);(10,10),(0,0)}
(1 row)
The advantage is you don't need double quotes:
regression=# select '{1.0,1.0,0.0,0.0;10.0,10.0,0.0,0.0}'::box[];
box
-----------------------------
{(1,1),(0,0);(10,10),(0,0)}
(1 row)
Whether this requires any special pushups on the JDBC side is beyond
my ken.
regards, tom lane