PostGIS  2.5.0beta2dev-r@@SVN_REVISION@@

◆ ShpLoaderGetSQLFooter()

int ShpLoaderGetSQLFooter ( SHPLOADERSTATE state,
char **  strfooter 
)

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

References shp_loader_state::config, shp_loader_config::createindex, shp_loader_state::geo_col, 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, and shp_loader_config::usetransaction.

Referenced by main(), and pgui_action_import().

1830 {
1831  stringbuffer_t *sb;
1832  char *ret;
1833 
1834  /* Create the stringbuffer containing the header; we use this API as it's easier
1835  for handling string resizing during append */
1836  sb = stringbuffer_create();
1837  stringbuffer_clear(sb);
1838 
1839  /* Create gist index if specified and not in "prepare" mode */
1840  if (state->config->readshape && state->config->createindex)
1841  {
1842  stringbuffer_aprintf(sb, "CREATE INDEX ON ");
1843  /* Schema is optional, include if present. */
1844  if (state->config->schema)
1845  {
1846  stringbuffer_aprintf(sb, "\"%s\".",state->config->schema);
1847  }
1848  stringbuffer_aprintf(sb, "\"%s\" USING GIST (\"%s\")", state->config->table, state->geo_col);
1849  /* Tablespace is also optional. */
1850  if (state->config->idxtablespace != NULL)
1851  {
1852  stringbuffer_aprintf(sb, " TABLESPACE \"%s\"", state->config->idxtablespace);
1853  }
1854  stringbuffer_aprintf(sb, ";\n");
1855  }
1856 
1857  /* End the transaction if there is one. */
1858  if (state->config->usetransaction)
1859  {
1860  stringbuffer_aprintf(sb, "COMMIT;\n");
1861  }
1862 
1863  /* Always ANALYZE the resulting table, for better stats */
1864  stringbuffer_aprintf(sb, "ANALYZE ");
1865  if (state->config->schema)
1866  {
1867  stringbuffer_aprintf(sb, "\"%s\".", state->config->schema);
1868  }
1869  stringbuffer_aprintf(sb, "\"%s\";\n", state->config->table);
1870 
1871  /* Copy the string buffer into a new string, destroying the string buffer */
1872  ret = (char *)malloc(strlen((char *)stringbuffer_getstring(sb)) + 1);
1873  strcpy(ret, (char *)stringbuffer_getstring(sb));
1875 
1876  *strfooter = ret;
1877 
1878  return SHPLOADEROK;
1879 }
SHPLOADERCONFIG * config
stringbuffer_t * stringbuffer_create(void)
Allocate a new stringbuffer_t.
Definition: stringbuffer.c:35
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:253
void stringbuffer_clear(stringbuffer_t *s)
Reset the stringbuffer_t.
Definition: stringbuffer.c:90
#define SHPLOADEROK
void stringbuffer_destroy(stringbuffer_t *s)
Free the stringbuffer_t and all memory managed within it.
Definition: stringbuffer.c:78
const char * stringbuffer_getstring(stringbuffer_t *s)
Returns a reference to the internal string being managed by the stringbuffer.
Definition: stringbuffer.c:149
void * malloc(YYSIZE_T)
Here is the call graph for this function:
Here is the caller graph for this function: