Fix quoting of objects names for external utilities. Fixes #1603, fixes #1220, fixes #1221

This commit is contained in:
Khushboo Vashi 2016-10-21 14:57:19 +01:00 committed by Dave Page
parent aef508ff91
commit 5a1795e4a0
7 changed files with 28 additions and 26 deletions

View File

@ -276,7 +276,7 @@ def create_backup_job(sid):
server.username, server.username,
'--no-password', '--no-password',
'--database', '--database',
driver.qtIdent(conn, server.maintenance_db) server.maintenance_db
] ]
if 'role' in data and data['role']: if 'role' in data and data['role']:
args.append('--role') args.append('--role')
@ -428,14 +428,14 @@ def create_backup_objects_job(sid):
set_value('no_of_jobs', '--jobs', True) set_value('no_of_jobs', '--jobs', True)
for s in data['schemas']: for s in data['schemas']:
args.extend(['--schema', driver.qtIdent(conn, s)]) args.extend(['--schema', s])
for s, t in data['tables']: for s, t in data['tables']:
args.extend([ args.extend([
'--table', driver.qtIdent(conn, s, t) '--table', driver.qtIdent(conn, s, t)
]) ])
args.append(driver.qtIdent(conn, data['database'])) args.append(data['database'])
try: try:
p = BatchProcess( p = BatchProcess(

View File

@ -747,20 +747,20 @@ TODO LIST FOR BACKUP:
var treeInfo = node.getTreeNodeHierarchy.apply(node, [i]); var treeInfo = node.getTreeNodeHierarchy.apply(node, [i]);
// Set current database into model // Set current database into model
this.view.model.set('database', treeInfo.database.label); this.view.model.set('database', treeInfo.database._label);
// We will remove once object tree is implemented // We will remove once object tree is implemented
// If selected node is Schema then add it in model // If selected node is Schema then add it in model
if(d._type == 'schema') { if(d._type == 'schema') {
var schemas = []; var schemas = [];
schemas.push(d.label); schemas.push(d._label);
this.view.model.set('schemas', schemas); this.view.model.set('schemas', schemas);
} }
// If selected node is Table then add it in model along with // If selected node is Table then add it in model along with
// its schema // its schema
if(d._type == 'table') { if(d._type == 'table') {
this.view.model.set( this.view.model.set(
'tables', [[treeInfo.schema.label, d.label]] 'tables', [[treeInfo.schema._label, d._label]]
); );
} }

View File

@ -206,8 +206,11 @@ def create_import_export_job(sid):
storage_dir = storage_dir.replace('/', '\\') storage_dir = storage_dir.replace('/', '\\')
data['filename'] = data['filename'].replace('\\', '\\\\') data['filename'] = data['filename'].replace('\\', '\\\\')
data['filename'] = os.path.join(storage_dir, data['filename'].lstrip('/')) data['filename'] = os.path.join(storage_dir, data['filename'].lstrip('/'))
else: elif storage_dir:
data['filename'] = os.path.join(storage_dir, data['filename'].lstrip('/')) data['filename'] = os.path.join(storage_dir, data['filename'].lstrip('/'))
else:
data['filename'] = data['filename']
else: else:
return make_json_response( return make_json_response(
data={'status': False, 'info': 'Please specify a valid file'} data={'status': False, 'info': 'Please specify a valid file'}
@ -254,8 +257,7 @@ def create_import_export_job(sid):
args = [ args = [
'--host', server.host, '--port', str(server.port), '--host', server.host, '--port', str(server.port),
'--username', server.username, '--dbname', '--username', server.username, '--dbname', data['database'],
driver.qtIdent(conn, data['database']),
'--command', query '--command', query
] ]

View File

@ -400,9 +400,9 @@ define(
treeInfo = n.getTreeNodeHierarchy.apply(n, [i]) treeInfo = n.getTreeNodeHierarchy.apply(n, [i])
this.view.model.set({ this.view.model.set({
'database': treeInfo.database.label, 'database': treeInfo.database._label,
'schema': treeInfo.schema.label, 'schema': treeInfo.schema._label,
'table': treeInfo.table.label 'table': treeInfo.table._label
}); });
var self = this, var self = this,
baseUrl = "{{ url_for('import_export.index') }}" + baseUrl = "{{ url_for('import_export.index') }}" +

View File

@ -217,7 +217,7 @@ def create_maintenance_job(sid, did):
args = [ args = [
'--host', server.host, '--port', str(server.port), '--host', server.host, '--port', str(server.port),
'--username', server.username, '--dbname', '--username', server.username, '--dbname',
driver.qtIdent(conn, data['database']), data['database'],
'--command', query '--command', query
] ]

View File

@ -295,21 +295,21 @@ define(
var treeInfo = node.getTreeNodeHierarchy.apply(node, [i]); var treeInfo = node.getTreeNodeHierarchy.apply(node, [i]);
if (treeInfo.schema != undefined) { if (treeInfo.schema != undefined) {
schema = treeInfo.schema.label; schema = treeInfo.schema._label;
} }
if (treeInfo.table != undefined) { if (treeInfo.table != undefined) {
table = treeInfo.table.label; table = treeInfo.table._label;
} }
if (treeInfo.primary_key != undefined) { if (treeInfo.primary_key != undefined) {
primary_key = treeInfo.primary_key.label; primary_key = treeInfo.primary_key._label;
} else if (treeInfo.unique_constraint != undefined) { } else if (treeInfo.unique_constraint != undefined) {
unique_constraint = treeInfo.unique_constraint.label; unique_constraint = treeInfo.unique_constraint._label;
} else if (treeInfo.index != undefined) { } else if (treeInfo.index != undefined) {
index = treeInfo.index.label; index = treeInfo.index._label;
} }
this.view.model.set({'database': treeInfo.database.label, this.view.model.set({'database': treeInfo.database._label,
'schema': schema, 'schema': schema,
'table': table, 'table': table,
'primary_key': primary_key, 'primary_key': primary_key,

View File

@ -472,26 +472,26 @@ define([
var info = node.getTreeNodeHierarchy.apply(node, [i]), var info = node.getTreeNodeHierarchy.apply(node, [i]),
m = this.view.model; m = this.view.model;
// Set current node info into model // Set current node info into model
m.set('database', info.database.label); m.set('database', info.database._label);
if (!m.get('custom')) { if (!m.get('custom')) {
switch (d._type) { switch (d._type) {
case 'schema': case 'schema':
m.set('schemas', d.label); m.set('schemas', d._label);
break; break;
case 'table': case 'table':
m.set('tables', [info.schema.label, d.label]); m.set('tables', [info.schema._label, d._label]);
break; break;
case 'function': case 'function':
m.set('functions', [info.schema.label, d.label]); m.set('functions', [info.schema._label, d._label]);
break; break;
case 'index': case 'index':
m.set('indexes', [info.schema.label, d.label]); m.set('indexes', [info.schema._label, d._label]);
break; break;
case 'trigger': case 'trigger':
m.set('triggers', [info.schema.label, d.label]); m.set('triggers', [info.schema._label, d._label]);
break; break;
case 'trigger_func': case 'trigger_func':
m.set('trigger_funcs', [info.schema.label, d.label]); m.set('trigger_funcs', [info.schema._label, d._label]);
break; break;
} }
} else { } else {