Re: contrib/ intarray, ltree, intagg broken(?) by array - Mailing list pgsql-hackers

From mlw
Subject Re: contrib/ intarray, ltree, intagg broken(?) by array
Date
Msg-id 3D72D2F4.A2407932@mohawksoft.com
Whole thread Raw
In response to Re: contrib/ intarray, ltree, intagg broken(?) by array changes  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-hackers
This built and worked on my system.
famous last words, huh?


Bruce Momjian wrote:
>
> Can someone address the intagg issue here, or is the code OK?
>
> ---------------------------------------------------------------------------
>
> Tom Lane wrote:
> > Joe Conway and I have just committed some changes in the internal
> > representation of Postgres arrays: an element-type-OID field is added to
> > the array header, and alignment calculations are now done the same way
> > as in ordinary tuple storage, instead of taking shortcuts.  I believe
> > that these changes need to be reflected into the intarray, ltree, and
> > intagg contrib modules.
> >
> > intarray and ltree both seem to be mapping their own declarations onto
> > arrays using largely-similar code.  But while intarray fails its
> > regression test, I find ltree still passes.  So I'm confused about what
> > that code is really doing and don't want to touch it.
> >
> > I tried to fix intagg, but since there is no regression test for it
> > I'm unsure whether it's okay.
> >
> > Could you folks take a look at CVS tip and see what changes are needed,
> > if any?
> >
> > In the longer run, it might be possible to improve these routines to be
> > array-type-polymorphic using the new features.  But with the 7.3 beta
> > date nearly upon us, I'd counsel first making the existing functionality
> > work again...
> >
> >                       regards, tom lane
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 3: if posting/reading through Usenet, please send an appropriate
> > subscribe-nomail command to majordomo@postgresql.org so that your
> > message can get through to the mailing list cleanly
> >
>
> --
>   Bruce Momjian                        |  http://candle.pha.pa.us
>   pgman@candle.pha.pa.us               |  (610) 359-1001
>   +  If your life is a hard drive,     |  13 Roberts Road
>   +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073? int_aggregate.sql
? intagg.patch
? intagg_test.sql
Index: int_aggregate.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/contrib/intagg/int_aggregate.c,v
retrieving revision 1.4
diff -u -r1.4 int_aggregate.c
--- int_aggregate.c    2002/08/30 00:28:40    1.4
+++ int_aggregate.c    2002/08/30 15:22:03
@@ -11,7 +11,8 @@
  * This file is the property of the Digital Music Network (DMN).
  * It is being made available to users of the PostgreSQL system
  * under the BSD license.
- *
+ *
+ * NOTE: This module requires sizeof(void *) to be the same as sizeof(int)
  */
 #include "postgres.h"

@@ -37,6 +38,9 @@
 #include "utils/lsyscache.h"


+/* Uncomment this define if you are compiling for postgres 7.2.x */
+/* #define PG_7_2 */
+
 /* This is actually a postgres version of a one dimensional array */

 typedef struct
@@ -96,7 +100,9 @@
         p->a.size = cb;
         p->a.ndim = 0;
         p->a.flags = 0;
+#ifndef PG_7_2
         p->a.elemtype = INT4OID;
+#endif
         p->items = 0;
         p->lower= START_NUM;
     }
@@ -149,7 +155,9 @@
             pnew->a.size = cb;
             pnew->a.ndim=1;
             pnew->a.flags = 0;
+#ifndef PG_7_2
             pnew->a.elemtype = INT4OID;
+#endif
             pnew->lower = 0;
         }
         else
Index: int_aggregate.sql.in
===================================================================
RCS file: /projects/cvsroot/pgsql-server/contrib/intagg/int_aggregate.sql.in,v
retrieving revision 1.1
diff -u -r1.1 int_aggregate.sql.in
--- int_aggregate.sql.in    2002/02/25 03:45:27    1.1
+++ int_aggregate.sql.in    2002/08/30 15:22:03
@@ -1,7 +1,7 @@
 -- Drop functions
+drop aggregate int_array_aggregate(int4);
 drop function int_agg_state (int4, int4);
 drop function int_agg_final_array (int4);
-drop aggregate int_array_aggregate(int4);
 drop function int_array_enum (int4[]);


@@ -9,14 +9,14 @@
 -- Is called for each item in an aggregation
 create function int_agg_state (int4, int4)
     returns int4
-    as 'MODULE_FILENAME','int_agg_state'
+    as 'MODULE_PATHNAME','int_agg_state'
     language 'c';

 -- Internal function for the aggregate
 -- Is called at the end of the aggregation, and returns an array.
 create function int_agg_final_array (int4)
     returns int4[]
-    as 'MODULE_FILENAME','int_agg_final_array'
+    as 'MODULE_PATHNAME','int_agg_final_array'
     language 'c';

 -- The aggration funcion.
@@ -35,6 +35,6 @@
 -- as a row.
 create function int_array_enum(int4[])
     returns setof integer
-    as 'MODULE_FILENAME','int_enum'
+    as 'MODULE_PATHNAME','int_enum'
     language 'c';


pgsql-hackers by date:

Previous
From: leozc@cse.unsw.edu.au (Zhicong Leo Liang)
Date:
Subject: serial type as foreign key referential integrity violation
Next
From: adwolf1@yahoo.com (ad wolf)
Date:
Subject: Wanted: pgdiff ($$$)