]> granicus.if.org Git - postgis/commitdiff
backported -I switch
authorSandro Santilli <strk@keybit.net>
Fri, 1 Jul 2005 14:22:40 +0000 (14:22 +0000)
committerSandro Santilli <strk@keybit.net>
Fri, 1 Jul 2005 14:22:40 +0000 (14:22 +0000)
git-svn-id: http://svn.osgeo.org/postgis/branches/pgis_1_0@1798 b70326c6-7e19-0410-871a-916f4a2858ee

loader/shp2pgsql.c

index b9b4c2c751d0dc3ab9a678a95f8a9036ab1e9e49..1dfaeff9c3b9961e5258170c00aeca495980b4e0 100644 (file)
@@ -59,6 +59,7 @@ typedef struct Ring {
 int    dump_format = 0; //0=insert statements, 1 = dump
 int    quoteidentifiers = 0;
 int    forceint4 = 0;
+int    createindex = 0;
 char    opt = ' ';
 char    *col_names = NULL;
 char   *pgtype;
@@ -90,6 +91,7 @@ char *protect_quotes_string(char *str);
 int PIP( Point P, Point* V, int n );
 void *safe_malloc(size_t size);
 void CreateTable(void);
+void CreateIndex(void);
 void usage(char *me, int exitcode);
 void InsertPoint(void);
 void InsertPointWKT(void);
@@ -395,6 +397,11 @@ main (int ARGC, char **ARGV)
         */
        if(opt != 'a') CreateTable();
 
+       /*
+        * Create GiST index if requested
+        */
+       if(createindex) CreateIndex();
+
        /*
         * Generate INSERT or COPY lines
         */
@@ -566,6 +573,22 @@ CreateTable(void)
        printf("'%s',%d);\n", pgtype, pgdims);
 }
 
+void
+CreateIndex(void)
+{
+       /* 
+        * Create gist index
+        */
+       if ( schema )
+       {
+               printf("CREATE INDEX \"%s_%s_gist\" ON \"%s\".\"%s\" using gist (\"%s\" gist_geometry_ops);\n", table, geom, schema, table, geom);
+       }
+       else
+       {
+               printf("CREATE INDEX \"%s_%s_gist\" ON \"%s\" using gist (\"%s\" gist_geometry_ops);\n", table, geom, table, geom);
+       }
+}
+
 void
 LoadData(void)
 {
@@ -707,6 +730,8 @@ usage(char *me, int exitcode)
        fprintf(stderr, "\n");
        fprintf(stderr, "  -i  Use int4 type for all integer dbf fields.\n");
        fprintf(stderr, "\n");
+       fprintf(stderr, "  -I  Create a GiST index on the geometry column.\n");
+       fprintf(stderr, "\n");
        fprintf(stderr, "  -w  Use wkt format (for postgis-0.x support - drops M - drifts coordinates).\n");
 #ifdef USE_ICONV
        fprintf(stderr, "\n");
@@ -1176,7 +1201,7 @@ ParseCmdline(int ARGC, char **ARGV)
        extern char *optarg;
        extern int optind;
 
-       while ((c = getopt(ARGC, ARGV, "kcdapDs:g:iW:w")) != EOF){
+       while ((c = getopt(ARGC, ARGV, "kcdapDs:g:iW:wI")) != EOF){
                switch (c) {
                case 'c':
                     if (opt == ' ')
@@ -1217,6 +1242,9 @@ ParseCmdline(int ARGC, char **ARGV)
                case 'i':
                     forceint4 = 1;
                     break;
+               case 'I':
+                    createindex = 1;
+                    break;
                case 'w':
                     hwgeom = 1;
                     break;
@@ -1615,6 +1643,9 @@ utf8 (const char *fromcode, char *inputbuf)
 
 /**********************************************************************
  * $Log$
+ * Revision 1.88.2.2  2005/07/01 14:22:40  strk
+ * backported -I switch
+ *
  * Revision 1.88.2.1  2005/04/21 09:07:41  strk
  * Applied patch from Ron Mayer fixing a segfault in string escaper funx
  *