[postgis-users] shp2pgsql and schemas
Seamus Thomas Carroll
carrolls at cpsc.ucalgary.ca
Mon Dec 15 09:47:47 PST 2003
I realize it does not work in the current version. I have edited
AddGeometryColumn so that there is an extra explicit varchar arguement for
schema.
The problem I am having is that when I try to add the extra geometry
column using alter table I recieve an error that I dont think sould
happen.
>From email below I try to alter the table in AddGeometryColumn with line:
input := ''ALTER TABLE '' || quote_ident(schema_name) || ''.'' || quote_ident(table_name) || '' ADD COLUMN '' || quote_ident(column_name) || '' geometry '';
which results in
ALTER TABLE "schema_name"."table_name" ADD COLUMN "column_name" geometry
This is the correct form isnt it?
When I copy the output of "input" and paste into pgsql the table is
altered correctly but not when I try loading a shp2pgsql output. Note
that I have edited shp2pgsql to handle schemas.
If you guys want to look at the code I can send you my altered postgis.sql
and shp2pgsql.c.
Seamus
On Mon, 15 Dec 2003, strk wrote:
>
> Schema handling is not supported by current postgis version.
> I'd suggest you set your search_path so to have the schema you'd
> like the table to be created in as the first listed.
> Using schema.table will not work when fed to AddGeometryColumn.
>
> --strk;
>
>
> carrolls wrote:
> > The updated code is:
> > input := ''ALTER TABLE '' || quote_ident(schema_name) || ''.'' || quote_ident(table_name) || '' ADD COLUMN '' || quote_ident(column_name) || '' geometry '';
> > RAISE NOTICE ''input: %'', input;
> > EXECUTE input;
> > RAISE NOTICE exec finished;
> >
> > And the new output is:
> > psql:toload.txt:2: ERROR: syntax error at or near "exec"
> > CONTEXT: compile of PL/pgSQL function "addgeometrycolumn" near line 43
> >
> > No output is given for the first RAISE NOTICE. The the_geom column is
> > still not added to the created table.
> >
> > Seamus
> >
> > On Fri, 12 Dec 2003, David Blasby wrote:
> >
> > > Seamus Thomas Carroll wrote:
> > > > I have changed the code to:
> > > > input := ''ALTER TABLE '' || quote_ident(schema_name) || ''.'' || quote_ident(table_name) || '' ADD COLUMN '' || quote_ident(column_name) || '' geometry '';
> > > > RAISE NOTICE ''input: %'', input;
> > > > EXECUTE input;
> > > >
> > > > and the output is now:
> > > > psql:toload.txt:2: NOTICE: input: ALTER TABLE roads.carrolls_route_alberta_test ADD COLUMN the_geom geometry
> > > > psql:toload.txt:2: ERROR: syntax error at or near "$3" at character 70
> > > > CONTEXT: PL/pgSQL function "addgeometrycolumn" line 69 at return
> > > >
> > > > if I copy the result of the notice and paste it into the psql prompt it
> > > > works without error.
> > > >
> > > > Could this be a error in posgtres that is causing a syntax error when one
> > > > is not present?
> > >
> > > Try putting a "RAISE NOTICE exec finished" immediately after the EXECUTE.
> > >
> > > dave
> > >
> > >
> > > _______________________________________________
> > > postgis-users mailing list
> > > postgis-users at postgis.refractions.net
> > > http://postgis.refractions.net/mailman/listinfo/postgis-users
> > >
> >
> >
> > _______________________________________________
> > postgis-users mailing list
> > postgis-users at postgis.refractions.net
> > http://postgis.refractions.net/mailman/listinfo/postgis-users
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
>
More information about the postgis-users
mailing list