125
135
int StorageTableShare::create(StorageConnection *storageConnection, const char* sql, int64 autoIncrementValue)
127
if (!(table = storageDatabase->createTable(storageConnection, name, schemaName, sql, autoIncrementValue)))
128
return StorageErrorTableExits;
139
table = storageDatabase->createTable(storageConnection, name, schemaName, sql, autoIncrementValue);
141
catch (SQLException& exception)
143
int sqlcode= exception.getSqlcode();
146
case TABLESPACE_NOT_EXIST_ERROR:
147
return StorageErrorTableSpaceNotExist;
149
return StorageErrorTableExits;
153
return StorageErrorTableExits;
155
format = table->getCurrentFormat();
157
if (autoIncrementValue)
158
sequence = storageDatabase->findSequence(name, schemaName);
163
int StorageTableShare::upgrade(StorageConnection *storageConnection, const char* sql, int64 autoIncrementValue)
165
if (!(table = storageDatabase->upgradeTable(storageConnection, name, schemaName, sql, autoIncrementValue)))
166
return StorageErrorTableExits;
168
format = table->getCurrentFormat();
130
170
if (autoIncrementValue)
131
171
sequence = storageDatabase->findSequence(name, schemaName);
215
254
return storageDatabase->createIndex(storageConnection, table, name, sql);
257
int StorageTableShare::dropIndex(StorageConnection *storageConnection, const char* name, const char* sql)
262
return storageDatabase->dropIndex(storageConnection, table, name, sql);
218
265
int StorageTableShare::renameTable(StorageConnection *storageConnection, const char* newName)
220
267
char tableName[256];
237
284
StorageIndexDesc* StorageTableShare::getIndex(int indexCount, int indexId, StorageIndexDesc* indexDesc)
286
// Rebuild array if indexes have been added or dropped
290
// TODO: This does not work. It should be done at the time of index creation
292
if (indexes && (numberIndexes != indexCount))
294
Sync sync(syncObject, "StorageTableShare::getIndex");
295
sync.lock(Exclusive);
296
StorageIndexDesc **oldIndexes = indexes;
297
StorageIndexDesc **newIndexes = new StorageIndexDesc*[indexCount];
298
memset(newIndexes, 0, indexCount * sizeof(StorageIndexDesc*));
300
for (int n = 0; n < numberIndexes; ++n)
301
newIndexes[n] = indexes[n];
303
indexes = newIndexes;
304
numberIndexes = indexCount;
305
delete [] oldIndexes;
241
311
indexes = new StorageIndexDesc*[indexCount];