292
bool DrizzleDumpTableMySQL::populateFkeys()
294
drizzle_result_st *result;
297
DrizzleDumpForeignKey *fkey;
300
std::cerr << _("-- Retrieving foreign keys for ") << tableName << "..." << std::endl;
302
query= "select rc.constraint_name, rc.referenced_table_name, group_concat(distinct concat('`',kc.column_name,'`')), rc.update_rule, rc.delete_rule, rc.match_option, group_concat(distinct concat('`',kt.column_name,'`')) from information_schema.referential_constraints rc join information_schema.key_column_usage kt on (rc.constraint_schema = kt.constraint_schema and rc.constraint_name = kt.constraint_name) join information_schema.key_column_usage kc on (rc.constraint_schema = kc.constraint_schema and rc.referenced_table_name = kc.table_name and rc.unique_constraint_name = kc.constraint_name) where rc.constraint_schema='";
303
query.append(database->databaseName);
304
query.append("' and rc.table_name='");
305
query.append(tableName);
306
query.append("' group by rc.constraint_name");
308
result= dcon->query(query);
313
while ((row= drizzle_row_next(result)))
315
fkey= new DrizzleDumpForeignKey(row[0], dcon);
316
fkey->parentColumns= row[6];
317
fkey->childTable= row[1];
318
fkey->childColumns= row[2];
319
fkey->updateRule= (strcmp(row[3], "RESTRICT") != 0) ? row[3] : "";
320
fkey->deleteRule= (strcmp(row[4], "RESTRICT") != 0) ? row[4] : "";
321
fkey->matchOption= (strcmp(row[5], "NONE") != 0) ? row[5] : "";
323
fkeys.push_back(fkey);
325
dcon->freeResult(result);
291
329
void DrizzleDumpFieldMySQL::setType(const char* raw_type, const char* raw_collation)
293
331
std::string old_type(raw_type);