I've sorted this one thanks to John Berkus.
Thanks guys. I've included the solution below
for your interest.

=======================================================
DROP TABLE rtest;
DROP INDEX rtest_xz_index;
DROP INDEX rtest_yz_index;
DROP INDEX rtest_xy_index;


CREATE TABLE rtest (
             xz BOX,
             yz BOX,
             xy BOX);

CREATE INDEX rtest_xz_index ON rtest USING RTREE (xz bigbox_ops);
CREATE INDEX rtest_yz_index ON rtest USING RTREE (yz bigbox_ops);
CREATE INDEX rtest_xy_index ON rtest USING RTREE (xy bigbox_ops);

DROP FUNCTION cube (float,float,float, float,float,float);
CREATE FUNCTION cube (float,float,float,float,float,float)
RETURNS text
AS 'DECLARE
      x1 ALIAS FOR $1;
      y1 ALIAS FOR $2;
      z1 ALIAS FOR $3;
      x2 ALIAS FOR $4;
      y2 ALIAS FOR $5;
      z2 ALIAS FOR $6;
      xz_   BOX;
      yz_   BOX;
      xy_   BOX;
      left  VARCHAR;
      right VARCHAR;
    BEGIN
      left  := to_char(x1,''99999.999'') || '','' ||
to_char(z1,''99999.999'');
      right := to_char(x2,''99999.999'') || '','' ||
to_char(z2,''99999.999'');
      xz_   := left || '','' ||  right;

      left  := to_char(y1,''99999.999'') || '','' ||
to_char(z1,''99999.999'');
      right := to_char(y2,''99999.999'') || '','' ||
to_char(z2,''99999.999'');
      yz_   := left || '','' ||  right;

      left  := to_char(x1,''99999.999'') || '','' ||
to_char(y1,''99999.999'');
      right := to_char(x2,''99999.999'') || '','' ||
to_char(y2,''99999.999'');
      xy_   := left || '','' ||  right;

      INSERT INTO rtest(xz,yz,xy)
      VALUES (xz_, yz_, xy_);
      RETURN null;
    END;'
LANGUAGE 'plpgsql';


SELECT cube(1,2,3,10,20,30);

SELECT * FROM rtest
ORDER BY xz USING <<;

SELECT xy, yz, xz FROM rtest
WHERE xz @ '(0.0,0.0),(2.5,2.5)'::box
AND   yz @ '(0.0,0.0),(2.5,2.5)'::box
AND   xy @ '(0.0,0.0),(2.5,2.5)'::box
ORDER BY xy USING <<;







---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to