1003 {
1005 uint32_t len = 0;
1006
1007 assert(table != NULL);
1008 assert(column != NULL);
1009
1010 len = strlen("CREATE TABLE (\"rid\" serial PRIMARY KEY, raster);") + 1;
1011 if (schema != NULL)
1012 len += strlen(schema);
1013 len += strlen(table);
1014 len += strlen(column);
1015 if (file_column)
1016 len += strlen(", text") + strlen(file_column_name);
1017 if (tablespace != NULL)
1018 len += strlen(" TABLESPACE ") + strlen(tablespace);
1019 if (idx_tablespace != NULL)
1020 len += strlen(" USING INDEX TABLESPACE ") + strlen(idx_tablespace);
1021
1023 if (sql == NULL) {
1024 rterror(
_(
"create_table: Could not allocate memory for CREATE TABLE statement"));
1025 return 0;
1026 }
1027 sprintf(sql, "CREATE TABLE %s%s (\"rid\" serial PRIMARY KEY%s%s,%s raster%s%s%s)%s%s;",
1028 (schema != NULL ? schema : ""),
1029 table,
1030 (idx_tablespace != NULL ? " USING INDEX TABLESPACE " : ""),
1031 (idx_tablespace != NULL ? idx_tablespace : ""),
1032 column,
1033 (file_column ? "," : ""),
1034 (file_column ? file_column_name : ""),
1035 (file_column ? " text" : ""),
1036 (tablespace != NULL ? " TABLESPACE " : ""),
1037 (tablespace != NULL ? tablespace : "")
1038 );
1039
1041
1042 return 1;
1043}
void rterror(const char *fmt,...)
Wrappers used for reporting errors and info.
void * rtalloc(size_t size)
Wrappers used for managing memory.
Datum buffer(PG_FUNCTION_ARGS)
static int append_sql_to_buffer(STRINGBUFFER *buffer, const char *str)