PostGIS  3.3.9dev-r@@SVN_REVISION@@

◆ ShpLoaderGetSQLFooter()

int ShpLoaderGetSQLFooter ( SHPLOADERSTATE state,
char **  strfooter 
)

We need to copy from the temp table to the real table, transforming to to_srid

Definition at line 1877 of file shp2pgsql-core.c.

1878 {
1879  stringbuffer_t *sb;
1880  char *ret;
1881 
1882  /* Create the stringbuffer containing the header; we use this API as it's easier
1883  for handling string resizing during append */
1884  sb = stringbuffer_create();
1885  stringbuffer_clear(sb);
1886 
1887  if ( state->config->dump_format && state->to_srid != state->from_srid){
1889  stringbuffer_aprintf(sb, "ALTER TABLE \"pgis_tmp_%s\" ALTER COLUMN \"%s\" TYPE ", state->config->table, state->geo_col);
1890  if (state->config->geography){
1891  stringbuffer_aprintf(sb, "geography USING (ST_Transform(\"%s\", %d)::geography );\n", state->geo_col, state->to_srid);
1892  }
1893  else {
1894  stringbuffer_aprintf(sb, "geometry USING (ST_Transform(\"%s\", %d)::geometry );\n", state->geo_col, state->to_srid);
1895  }
1896  stringbuffer_aprintf(sb, "INSERT INTO ");
1897  // /* Schema is optional, include if present. */
1898  if (state->config->schema)
1899  {
1900  stringbuffer_aprintf(sb, "\"%s\".", state->config->schema);
1901  }
1902  stringbuffer_aprintf(sb, "\"%s\" (%s) ", state->config->table, state->col_names);
1903  stringbuffer_aprintf(sb, "SELECT %s FROM \"pgis_tmp_%s\";\n", state->col_names, state->config->table);
1904  }
1905 
1906  /* Create gist index if specified and not in "prepare" mode */
1907  if (state->config->readshape && state->config->createindex)
1908  {
1909  stringbuffer_aprintf(sb, "CREATE INDEX ON ");
1910  /* Schema is optional, include if present. */
1911  if (state->config->schema)
1912  {
1913  stringbuffer_aprintf(sb, "\"%s\".",state->config->schema);
1914  }
1915  stringbuffer_aprintf(sb, "\"%s\" USING GIST (\"%s\")", state->config->table, state->geo_col);
1916  /* Tablespace is also optional. */
1917  if (state->config->idxtablespace != NULL)
1918  {
1919  stringbuffer_aprintf(sb, " TABLESPACE \"%s\"", state->config->idxtablespace);
1920  }
1921  stringbuffer_aprintf(sb, ";\n");
1922  }
1923 
1924  /* End the transaction if there is one. */
1925  if (state->config->usetransaction)
1926  {
1927  stringbuffer_aprintf(sb, "COMMIT;\n");
1928  }
1929 
1930 
1931  if(state->config->analyze)
1932  {
1933  /* Always ANALYZE the resulting table, for better stats */
1934  stringbuffer_aprintf(sb, "ANALYZE ");
1935  if (state->config->schema)
1936  {
1937  stringbuffer_aprintf(sb, "\"%s\".", state->config->schema);
1938  }
1939  stringbuffer_aprintf(sb, "\"%s\";\n", state->config->table);
1940  }
1941 
1942  /* Copy the string buffer into a new string, destroying the string buffer */
1943  ret = (char *)malloc(strlen((char *)stringbuffer_getstring(sb)) + 1);
1944  strcpy(ret, (char *)stringbuffer_getstring(sb));
1946 
1947  *strfooter = ret;
1948 
1949  return SHPLOADEROK;
1950 }
void * malloc(YYSIZE_T)
#define SHPLOADEROK
void stringbuffer_clear(stringbuffer_t *s)
Reset the stringbuffer_t.
Definition: stringbuffer.c:88
int stringbuffer_aprintf(stringbuffer_t *s, const char *fmt,...)
Appends a formatted string to the current string buffer, using the format and argument list provided.
Definition: stringbuffer.c:230
stringbuffer_t * stringbuffer_create(void)
Allocate a new stringbuffer_t.
Definition: stringbuffer.c:33
void stringbuffer_destroy(stringbuffer_t *s)
Free the stringbuffer_t and all memory managed within it.
Definition: stringbuffer.c:76
const char * stringbuffer_getstring(stringbuffer_t *s)
Returns a reference to the internal string being managed by the stringbuffer.
Definition: stringbuffer.c:113
SHPLOADERCONFIG * config

References shp_loader_config::analyze, shp_loader_state::col_names, shp_loader_state::config, shp_loader_config::createindex, shp_loader_config::dump_format, shp_loader_state::from_srid, shp_loader_state::geo_col, shp_loader_config::geography, shp_loader_config::idxtablespace, malloc(), shp_loader_config::readshape, shp_loader_config::schema, SHPLOADEROK, stringbuffer_aprintf(), stringbuffer_clear(), stringbuffer_create(), stringbuffer_destroy(), stringbuffer_getstring(), shp_loader_config::table, shp_loader_state::to_srid, and shp_loader_config::usetransaction.

Referenced by pgui_action_import().

Here is the call graph for this function:
Here is the caller graph for this function: