? ? ? Failure

User tests: Successful: Unsuccessful:

avatar twister65
twister65
22 Dec 2018

Retrieving PR #14272 (and #10991) to fix the PostgreSQL exporter and importer bugs.
This PR can be tested with any database driver supported by Joomla.
This is about exporting and importing any database with a command-line interface (it can be placed in cronjob to schedule the database backup).

Summary of Changes

  • Fix folder path.
  • Fix postgresql issues :
    • Fix the default value of the table.
    • Gets, sets the last_value and is_called sequence attributes.
    • Fix key query.
    • Fix text default value.
    • Apply changes to unit tests.
    • Fix the execution of queries (xmlToCreate) with the pgsql (PDO) driver.
    • Add unique constraints.
    • Convert PostgreSQL BLOB data (bytea).

Testing Instructions

  • Select a database driver and save it in System -> Global Configuration -> Server ->Database Type
  • Go to the cli folder of your website.
  • Export all tables and data to the folder :
    php exporter.php --all --folder <folder_path>
  • Delete and create an empty database with the same name.
  • Overwriting the database can also be done. Verify that changes are applied.
  • Import all from folder:
    php importer.php --all --folder <folder_path>

You can also :

  • Export all tables and data in zip file :
    php exporter.php --all --mode zip
  • Export a table :
    php exporter.php --table <table_name>
  • Export a table as a .zip file :
    php exporter.php --table <table_name> --mode zip
  • Import a table :
    php importer.php --table <table_name>

Expected result

Export/import tables with structure (keys, constraints, sequences) and data.

Actual result

Does not export/import views, stored procedures and triggers (optional for the Joomla database).

avatar twister65 twister65 - open - 22 Dec 2018
avatar twister65 twister65 - change - 22 Dec 2018
Status New Pending
avatar joomla-cms-bot joomla-cms-bot - change - 22 Dec 2018
Category Postgresql Libraries
avatar twister65 twister65 - change - 23 Dec 2018
Labels Added: ?
avatar joomla-cms-bot joomla-cms-bot - change - 23 Dec 2018
Category Postgresql Libraries CLI Postgresql Libraries MS SQL Unit Tests
avatar twister65 twister65 - change - 23 Dec 2018
Title
Fix PostgreSQL exporter / importer
[jdatabase] - importer exporter (PostgreSQL fix)
avatar twister65 twister65 - edited - 23 Dec 2018
avatar twister65 twister65 - change - 23 Dec 2018
The description was changed
avatar twister65 twister65 - edited - 23 Dec 2018
avatar twister65 twister65 - change - 23 Dec 2018
The description was changed
avatar twister65 twister65 - edited - 23 Dec 2018
avatar twister65 twister65 - change - 23 Dec 2018
Labels Added: ?
avatar twister65 twister65 - change - 23 Dec 2018
The description was changed
avatar twister65 twister65 - edited - 23 Dec 2018
avatar twister65 twister65 - change - 23 Dec 2018
The description was changed
avatar twister65 twister65 - edited - 23 Dec 2018
avatar twister65 twister65 - change - 23 Dec 2018
The description was changed
avatar twister65 twister65 - edited - 23 Dec 2018
avatar twister65 twister65 - change - 24 Dec 2018
The description was changed
avatar twister65 twister65 - edited - 24 Dec 2018
avatar twister65 twister65 - change - 28 Dec 2018
The description was changed
avatar twister65 twister65 - edited - 28 Dec 2018
avatar twister65 twister65 - change - 29 Dec 2018
The description was changed
avatar twister65 twister65 - edited - 29 Dec 2018
avatar twister65 twister65 - change - 30 Dec 2018
The description was changed
avatar twister65 twister65 - edited - 30 Dec 2018
avatar twister65 twister65 - change - 31 Dec 2018
The description was changed
avatar twister65 twister65 - edited - 31 Dec 2018
avatar twister65
twister65 - comment - 1 Jan 2019

PostgreSQL automatically creates a unique index when a unique constraint or primary key is defined for a table. We need to modify table by adding a unique constraint on a column, instead of creating a unique index.
This query creates unique index:

return (string) $field['Query'];

Here, a unique constraint is defined for a table:
return 'ALTER TABLE ' . $this->db->quoteName($table) . ' ADD ' . $this->getKeySql($keys);

avatar twister65 twister65 - change - 2 Jan 2019
The description was changed
avatar twister65 twister65 - edited - 2 Jan 2019
avatar twister65 twister65 - change - 5 Jan 2019
The description was changed
avatar twister65 twister65 - edited - 5 Jan 2019
avatar twister65 twister65 - change - 6 Jan 2019
The description was changed
avatar twister65 twister65 - edited - 6 Jan 2019
avatar alikon
alikon - comment - 8 Jan 2019

is this ready to test ?

p.s
btw awesome work ?

avatar twister65
twister65 - comment - 8 Jan 2019

Yes it is.
Thanks.

avatar twister65
twister65 - comment - 13 Jan 2019

The test can be performed with the postgresql PDO or "native" driver.
I suppose that the test with the mysql driver has already been successfully passed in PR #14272, @BombatiK should test again (the folder path has been fixed), and has not yet been tested with sqlsrv.

avatar twister65 twister65 - change - 13 Jan 2019
Title
[jdatabase] - importer exporter (PostgreSQL fix)
[jdatabase] - importer exporter (#14272 recovery)
avatar twister65 twister65 - edited - 13 Jan 2019
avatar twister65 twister65 - change - 13 Jan 2019
The description was changed
avatar twister65 twister65 - edited - 13 Jan 2019
avatar alikon
alikon - comment - 11 Mar 2019

not so sure if this work can really have a chance to be merged on 3.X branch, i will hope so
i would like to hear some words from @joomla/maintainers

avatar franz-wohlkoenig franz-wohlkoenig - change - 19 Apr 2019
Title
[jdatabase] - importer exporter (#14272 recovery)
[jdatabase] - importer exporter
avatar franz-wohlkoenig franz-wohlkoenig - edited - 19 Apr 2019
avatar franz-wohlkoenig franz-wohlkoenig - change - 19 Apr 2019
Title
[jdatabase] - importer exporter
jdatabase importer exporter
avatar franz-wohlkoenig franz-wohlkoenig - edited - 19 Apr 2019
avatar franz-wohlkoenig
franz-wohlkoenig - comment - 24 Apr 2019

@HLeithner comment on above Question by @alikon please?

avatar HLeithner
HLeithner - comment - 25 Apr 2019

I'm sorry but this is a new feature and has to go into j4

avatar franz-wohlkoenig
franz-wohlkoenig - comment - 25 Apr 2019

@twister65 can you rebase this PR on J4?

avatar twister65
twister65 - comment - 25 Apr 2019

Yes, I can rebase this PR in the Joomla Framework Database Package:
https://github.com/joomla-framework/database

avatar franz-wohlkoenig
franz-wohlkoenig - comment - 27 Apr 2019

Closed as rebased on J4.

avatar franz-wohlkoenig franz-wohlkoenig - close - 27 Apr 2019
avatar franz-wohlkoenig franz-wohlkoenig - change - 27 Apr 2019
Status Pending Closed
Closed_Date 0000-00-00 00:00:00 2019-04-27 04:41:30
Closed_By franz-wohlkoenig
Labels Added: ?
Removed: J3 Issue

Add a Comment

Login with GitHub to post a comment