diff --git a/src/renderer/ipc-api/Application.js b/src/renderer/ipc-api/Application.js
index cfa09b41..75a91013 100644
--- a/src/renderer/ipc-api/Application.js
+++ b/src/renderer/ipc-api/Application.js
@@ -1,14 +1,14 @@
 'use strict';
 import { ipcRenderer } from 'electron';
-import { toRaw } from 'vue';
+import { unproxify } from '../libs/unproxify';
 
 export default class {
    static getKey (params) {
-      return ipcRenderer.sendSync('get-key', toRaw(params));
+      return ipcRenderer.sendSync('get-key', unproxify(params));
    }
 
    static showOpenDialog (options) {
-      return ipcRenderer.invoke('show-open-dialog', toRaw(options));
+      return ipcRenderer.invoke('show-open-dialog', unproxify(options));
    }
 
    static getDownloadPathDirectory () {
diff --git a/src/renderer/ipc-api/Connection.js b/src/renderer/ipc-api/Connection.js
index c6dcb2c9..004b2607 100644
--- a/src/renderer/ipc-api/Connection.js
+++ b/src/renderer/ipc-api/Connection.js
@@ -1,17 +1,17 @@
 'use strict';
 import { ipcRenderer } from 'electron';
-import { toRaw } from 'vue';
 import connStringConstruct from '../libs/connStringDecode';
+import { unproxify } from '../libs/unproxify';
 
 export default class {
    static makeTest (params) {
       params = connStringConstruct(params);
-      return ipcRenderer.invoke('test-connection', toRaw(params));
+      return ipcRenderer.invoke('test-connection', unproxify(params));
    }
 
    static connect (params) {
       params = connStringConstruct(params);
-      return ipcRenderer.invoke('connect', toRaw(params));
+      return ipcRenderer.invoke('connect', unproxify(params));
    }
 
    static checkConnection (uid) {
diff --git a/src/renderer/ipc-api/Functions.js b/src/renderer/ipc-api/Functions.js
index 6da9694d..6a26d425 100644
--- a/src/renderer/ipc-api/Functions.js
+++ b/src/renderer/ipc-api/Functions.js
@@ -1,29 +1,29 @@
 'use strict';
 import { ipcRenderer } from 'electron';
-import { toRaw } from 'vue';
+import { unproxify } from '../libs/unproxify';
 
 export default class {
    static getFunctionInformations (params) {
-      return ipcRenderer.invoke('get-function-informations', toRaw(params));
+      return ipcRenderer.invoke('get-function-informations', unproxify(params));
    }
 
    static dropFunction (params) {
-      return ipcRenderer.invoke('drop-function', toRaw(params));
+      return ipcRenderer.invoke('drop-function', unproxify(params));
    }
 
    static alterFunction (params) {
-      return ipcRenderer.invoke('alter-function', toRaw(params));
+      return ipcRenderer.invoke('alter-function', unproxify(params));
    }
 
    static alterTriggerFunction (params) {
-      return ipcRenderer.invoke('alter-trigger-function', toRaw(params));
+      return ipcRenderer.invoke('alter-trigger-function', unproxify(params));
    }
 
    static createFunction (params) {
-      return ipcRenderer.invoke('create-function', toRaw(params));
+      return ipcRenderer.invoke('create-function', unproxify(params));
    }
 
    static createTriggerFunction (params) {
-      return ipcRenderer.invoke('create-trigger-function', toRaw(params));
+      return ipcRenderer.invoke('create-trigger-function', unproxify(params));
    }
 }
diff --git a/src/renderer/ipc-api/Routines.js b/src/renderer/ipc-api/Routines.js
index bade6aa2..1b39609c 100644
--- a/src/renderer/ipc-api/Routines.js
+++ b/src/renderer/ipc-api/Routines.js
@@ -1,21 +1,21 @@
 'use strict';
 import { ipcRenderer } from 'electron';
-import { toRaw } from 'vue';
+import { unproxify } from '../libs/unproxify';
 
 export default class {
    static getRoutineInformations (params) {
-      return ipcRenderer.invoke('get-routine-informations', toRaw(params));
+      return ipcRenderer.invoke('get-routine-informations', unproxify(params));
    }
 
    static dropRoutine (params) {
-      return ipcRenderer.invoke('drop-routine', toRaw(params));
+      return ipcRenderer.invoke('drop-routine', unproxify(params));
    }
 
    static alterRoutine (params) {
-      return ipcRenderer.invoke('alter-routine', toRaw(params));
+      return ipcRenderer.invoke('alter-routine', unproxify(params));
    }
 
    static createRoutine (params) {
-      return ipcRenderer.invoke('create-routine', toRaw(params));
+      return ipcRenderer.invoke('create-routine', unproxify(params));
    }
 }
diff --git a/src/renderer/ipc-api/Schedulers.js b/src/renderer/ipc-api/Schedulers.js
index b517f028..32012b99 100644
--- a/src/renderer/ipc-api/Schedulers.js
+++ b/src/renderer/ipc-api/Schedulers.js
@@ -1,25 +1,24 @@
 'use strict';
 import { ipcRenderer } from 'electron';
-import { toRaw } from 'vue';
-
+import { unproxify } from '../libs/unproxify';
 export default class {
    static getSchedulerInformations (params) {
-      return ipcRenderer.invoke('get-scheduler-informations', toRaw(params));
+      return ipcRenderer.invoke('get-scheduler-informations', unproxify(params));
    }
 
    static dropScheduler (params) {
-      return ipcRenderer.invoke('drop-scheduler', toRaw(params));
+      return ipcRenderer.invoke('drop-scheduler', unproxify(params));
    }
 
    static alterScheduler (params) {
-      return ipcRenderer.invoke('alter-scheduler', toRaw(params));
+      return ipcRenderer.invoke('alter-scheduler', unproxify(params));
    }
 
    static createScheduler (params) {
-      return ipcRenderer.invoke('create-scheduler', toRaw(params));
+      return ipcRenderer.invoke('create-scheduler', unproxify(params));
    }
 
    static toggleScheduler (params) {
-      return ipcRenderer.invoke('toggle-scheduler', toRaw(params));
+      return ipcRenderer.invoke('toggle-scheduler', unproxify(params));
    }
 }
diff --git a/src/renderer/ipc-api/Schema.js b/src/renderer/ipc-api/Schema.js
index 314b1b29..d920cbf9 100644
--- a/src/renderer/ipc-api/Schema.js
+++ b/src/renderer/ipc-api/Schema.js
@@ -1,26 +1,26 @@
 'use strict';
 import { ipcRenderer } from 'electron';
-import { toRaw } from 'vue';
+import { unproxify } from '../libs/unproxify';
 
 export default class {
    static createSchema (params) {
-      return ipcRenderer.invoke('create-schema', toRaw(params));
+      return ipcRenderer.invoke('create-schema', unproxify(params));
    }
 
    static updateSchema (params) {
-      return ipcRenderer.invoke('update-schema', toRaw(params));
+      return ipcRenderer.invoke('update-schema', unproxify(params));
    }
 
    static getDatabaseCollation (params) {
-      return ipcRenderer.invoke('get-schema-collation', toRaw(params));
+      return ipcRenderer.invoke('get-schema-collation', unproxify(params));
    }
 
    static deleteSchema (params) {
-      return ipcRenderer.invoke('delete-schema', toRaw(params));
+      return ipcRenderer.invoke('delete-schema', unproxify(params));
    }
 
    static getStructure (params) {
-      return ipcRenderer.invoke('get-structure', toRaw(params));
+      return ipcRenderer.invoke('get-structure', unproxify(params, false));
    }
 
    static getCollations (uid) {
@@ -44,35 +44,35 @@ export default class {
    }
 
    static killProcess (params) {
-      return ipcRenderer.invoke('kill-process', toRaw(params));
+      return ipcRenderer.invoke('kill-process', unproxify(params));
    }
 
    static killTabQuery (params) {
-      return ipcRenderer.invoke('kill-tab-query', toRaw(params));
+      return ipcRenderer.invoke('kill-tab-query', unproxify(params));
    }
 
    static commitTab (params) {
-      return ipcRenderer.invoke('commit-tab', toRaw(params));
+      return ipcRenderer.invoke('commit-tab', unproxify(params));
    }
 
    static rollbackTab (params) {
-      return ipcRenderer.invoke('rollback-tab', toRaw(params));
+      return ipcRenderer.invoke('rollback-tab', unproxify(params));
    }
 
    static destroyConnectionToCommit (params) {
-      return ipcRenderer.invoke('destroy-connection-to-commit', toRaw(params));
+      return ipcRenderer.invoke('destroy-connection-to-commit', unproxify(params));
    }
 
    static useSchema (params) {
-      return ipcRenderer.invoke('use-schema', toRaw(params));
+      return ipcRenderer.invoke('use-schema', unproxify(params));
    }
 
    static rawQuery (params) {
-      return ipcRenderer.invoke('raw-query', toRaw(params));
+      return ipcRenderer.invoke('raw-query', unproxify(params));
    }
 
    static export (params) {
-      return ipcRenderer.invoke('export', toRaw(params));
+      return ipcRenderer.invoke('export', unproxify(params));
    }
 
    static abortExport () {
@@ -80,7 +80,7 @@ export default class {
    }
 
    static import (params) {
-      return ipcRenderer.invoke('import-sql', toRaw(params));
+      return ipcRenderer.invoke('import-sql', unproxify(params));
    }
 
    static abortImport () {
diff --git a/src/renderer/ipc-api/Tables.js b/src/renderer/ipc-api/Tables.js
index 0c9d53b9..9cee3cc0 100644
--- a/src/renderer/ipc-api/Tables.js
+++ b/src/renderer/ipc-api/Tables.js
@@ -1,69 +1,69 @@
 'use strict';
 import { ipcRenderer } from 'electron';
-import { toRaw } from 'vue';
+import { unproxify } from '../libs/unproxify';
 
 export default class {
    static getTableColumns (params) {
-      return ipcRenderer.invoke('get-table-columns', toRaw(params));
+      return ipcRenderer.invoke('get-table-columns', unproxify(params));
    }
 
    static getTableData (params) {
-      return ipcRenderer.invoke('get-table-data', toRaw(params));
+      return ipcRenderer.invoke('get-table-data', unproxify(params));
    }
 
    static getTableApproximateCount (params) {
-      return ipcRenderer.invoke('get-table-count', toRaw(params));
+      return ipcRenderer.invoke('get-table-count', unproxify(params));
    }
 
    static getTableOptions (params) {
-      return ipcRenderer.invoke('get-table-options', toRaw(params));
+      return ipcRenderer.invoke('get-table-options', unproxify(params));
    }
 
    static getTableIndexes (params) {
-      return ipcRenderer.invoke('get-table-indexes', toRaw(params));
+      return ipcRenderer.invoke('get-table-indexes', unproxify(params));
    }
 
    static getKeyUsage (params) {
-      return ipcRenderer.invoke('get-key-usage', toRaw(params));
+      return ipcRenderer.invoke('get-key-usage', unproxify(params));
    }
 
    static updateTableCell (params) {
-      return ipcRenderer.invoke('update-table-cell', toRaw(params));
+      return ipcRenderer.invoke('update-table-cell', unproxify(params));
    }
 
    static deleteTableRows (params) {
-      return ipcRenderer.invoke('delete-table-rows', toRaw(params));
+      return ipcRenderer.invoke('delete-table-rows', unproxify(params));
    }
 
    static insertTableRows (params) {
-      return ipcRenderer.invoke('insert-table-rows', toRaw(params));
+      return ipcRenderer.invoke('insert-table-rows', unproxify(params));
    }
 
    static insertTableFakeRows (params) {
-      return ipcRenderer.invoke('insert-table-fake-rows', toRaw(params));
+      return ipcRenderer.invoke('insert-table-fake-rows', unproxify(params));
    }
 
    static getForeignList (params) {
-      return ipcRenderer.invoke('get-foreign-list', toRaw(params));
+      return ipcRenderer.invoke('get-foreign-list', unproxify(params));
    }
 
    static createTable (params) {
-      return ipcRenderer.invoke('create-table', toRaw(params));
+      return ipcRenderer.invoke('create-table', unproxify(params));
    }
 
    static alterTable (params) {
-      return ipcRenderer.invoke('alter-table', toRaw(params));
+      return ipcRenderer.invoke('alter-table', unproxify(params));
    }
 
    static duplicateTable (params) {
-      return ipcRenderer.invoke('duplicate-table', toRaw(params));
+      return ipcRenderer.invoke('duplicate-table', unproxify(params));
    }
 
    static truncateTable (params) {
-      return ipcRenderer.invoke('truncate-table', toRaw(params));
+      return ipcRenderer.invoke('truncate-table', unproxify(params));
    }
 
    static dropTable (params) {
-      return ipcRenderer.invoke('drop-table', toRaw(params));
+      return ipcRenderer.invoke('drop-table', unproxify(params));
    }
 }
diff --git a/src/renderer/ipc-api/Triggers.js b/src/renderer/ipc-api/Triggers.js
index f46f2f95..f0833650 100644
--- a/src/renderer/ipc-api/Triggers.js
+++ b/src/renderer/ipc-api/Triggers.js
@@ -1,25 +1,25 @@
 'use strict';
 import { ipcRenderer } from 'electron';
-import { toRaw } from 'vue';
+import { unproxify } from '../libs/unproxify';
 
 export default class {
    static getTriggerInformations (params) {
-      return ipcRenderer.invoke('get-trigger-informations', toRaw(params));
+      return ipcRenderer.invoke('get-trigger-informations', unproxify(params));
    }
 
    static dropTrigger (params) {
-      return ipcRenderer.invoke('drop-trigger', toRaw(params));
+      return ipcRenderer.invoke('drop-trigger', unproxify(params));
    }
 
    static alterTrigger (params) {
-      return ipcRenderer.invoke('alter-trigger', toRaw(params));
+      return ipcRenderer.invoke('alter-trigger', unproxify(params));
    }
 
    static createTrigger (params) {
-      return ipcRenderer.invoke('create-trigger', toRaw(params));
+      return ipcRenderer.invoke('create-trigger', unproxify(params));
    }
 
    static toggleTrigger (params) {
-      return ipcRenderer.invoke('toggle-trigger', toRaw(params));
+      return ipcRenderer.invoke('toggle-trigger', unproxify(params));
    }
 }
diff --git a/src/renderer/ipc-api/Users.js b/src/renderer/ipc-api/Users.js
index b87765e5..8de46f33 100644
--- a/src/renderer/ipc-api/Users.js
+++ b/src/renderer/ipc-api/Users.js
@@ -1,9 +1,9 @@
 'use strict';
 import { ipcRenderer } from 'electron';
-import { toRaw } from 'vue';
+import { unproxify } from '../libs/unproxify';
 
 export default class {
    static getUsers (params) {
-      return ipcRenderer.invoke('get-users', toRaw(params));
+      return ipcRenderer.invoke('get-users', unproxify(params));
    }
 }
diff --git a/src/renderer/ipc-api/Views.js b/src/renderer/ipc-api/Views.js
index e8088c28..3cab89ae 100644
--- a/src/renderer/ipc-api/Views.js
+++ b/src/renderer/ipc-api/Views.js
@@ -1,21 +1,21 @@
 'use strict';
 import { ipcRenderer } from 'electron';
-import { toRaw } from 'vue';
+import { unproxify } from '../libs/unproxify';
 
 export default class {
    static getViewInformations (params) {
-      return ipcRenderer.invoke('get-view-informations', toRaw(params));
+      return ipcRenderer.invoke('get-view-informations', unproxify(params));
    }
 
    static dropView (params) {
-      return ipcRenderer.invoke('drop-view', toRaw(params));
+      return ipcRenderer.invoke('drop-view', unproxify(params));
    }
 
    static alterView (params) {
-      return ipcRenderer.invoke('alter-view', toRaw(params));
+      return ipcRenderer.invoke('alter-view', unproxify(params));
    }
 
    static createView (params) {
-      return ipcRenderer.invoke('create-view', toRaw(params));
+      return ipcRenderer.invoke('create-view', unproxify(params));
    }
 }
diff --git a/src/renderer/libs/unproxify.js b/src/renderer/libs/unproxify.js
new file mode 100644
index 00000000..10be84aa
--- /dev/null
+++ b/src/renderer/libs/unproxify.js
@@ -0,0 +1,21 @@
+import { toRaw } from 'vue';
+
+/**
+ * @param {*} val
+ * @param {Boolean} json converts the value in JSON object (default true)
+ */
+export function unproxify (val, json = true) {
+   if (json)// JSON conversion
+      return JSON.parse(JSON.stringify(val));
+   else if (Array.isArray(val))// If array
+      return toRaw(val);
+   else if (typeof val === 'object') { // If object
+      const result = {};
+      for (const key in val)
+         result[key] = toRaw(val[key]);
+
+      return result;
+   }
+   else
+      return toRaw(val);
+}