Bug 12372

Summary: Make koha-mysql handle arbitrary mysql arguments
Product: Koha Reporter: Barton Chittenden <barton>
Component: Command-line UtilitiesAssignee: Barton Chittenden <barton>
Status: CLOSED FIXED QA Contact: Testopia <testopia>
Severity: enhancement    
Priority: P5 - low CC: ian.bays, jonathan.druart, tomascohen
Version: Main   
Hardware: All   
OS: All   
Change sponsored?: --- Patch complexity: ---
Documentation contact: Documentation submission:
Text to go in the release notes:
Version(s) released in:
Bug Depends on:    
Bug Blocks: 14443, 14714    
Attachments: Bug 12372: koha-mysql: process any mysql args
Bug 12372: koha-mysql: process any mysql args
Bug 12372: koha-mysql: process any mysql args
Standardized argument parsing for koha-mysql.
Bug 12372: (QA followup) Standardized argument parsing for koha-mysql.
Updated man pages for koha-mysql
Updated man pages for koha-mysql
Bug 12372: koha-mysql: process any mysql args
Bug 12372: (QA followup) Standardized argument parsing for koha-mysql.
Updated man pages for koha-mysql
Bug 12372: koha-mysql: process any mysql args
Bug 12372: (QA followup) Standardized argument parsing for koha-mysql.
Updated man pages for koha-mysql

Description Barton Chittenden 2014-06-05 15:30:57 UTC
The call to 'mysql' in /home/koha/kohaclone/debian/scripts/koha-mysql looks like this:

mysql --host="$mysqlhost" --user="$mysqluser" --password="$mysqlpass" \
    "$mysqldb"

If $name were shifted off the argument stack, rather than simply assigned from $1, we could then pass the rest of the arguments directly to mysql:

mysql --host="$mysqlhost" --user="$mysqluser" --password="$mysqlpass" \
    "$mysqldb" "$@"

This would make the koha-mysql command far more flexible at the command line, for instance

koha-mysql mybranch --vertical

or

koha-mysql mybranch --html

or

koha-mysql mybranch --table

would all be possible.
Comment 1 Ian Bays 2015-01-10 21:43:44 UTC
Just to add support for this request as simple things like using -N to suppress column headings is not possible once at the mysql prompt.
Comment 2 Barton Chittenden 2015-06-18 16:39:31 UTC Comment hidden (obsolete)
Comment 3 Barton Chittenden 2015-06-18 17:15:32 UTC Comment hidden (obsolete)
Comment 4 Ian Bays 2015-06-19 14:05:46 UTC Comment hidden (obsolete)
Comment 5 Jonathan Druart 2015-06-23 10:08:01 UTC
I am not an expert at all of the debian scripts, but it seems that in others, there are 2 errors raised if the usage is incorrect:


I would suggest to
  die "Missing instance name..."
if the number of arg is not correct and
  warn "Unknown instance $name."
if is_instance returns 0.

Ccing Tomas to be sure I am not wrong.
Comment 6 Tomás Cohen Arazi 2015-06-23 13:06:15 UTC
(In reply to Jonathan Druart from comment #5)
> I am not an expert at all of the debian scripts, but it seems that in
> others, there are 2 errors raised if the usage is incorrect:
> 
> 
> I would suggest to
>   die "Missing instance name..."
> if the number of arg is not correct and
>   warn "Unknown instance $name."
> if is_instance returns 0.
> 
> Ccing Tomas to be sure I am not wrong.

Yeah, Barton, please replicate the structure from scripts like koha-enable while you are on it. Thanks
Comment 7 Barton Chittenden 2015-06-23 14:05:13 UTC Comment hidden (obsolete)
Comment 8 Barton Chittenden 2015-06-23 14:10:33 UTC Comment hidden (obsolete)
Comment 9 Barton Chittenden 2015-06-23 14:24:53 UTC
(In reply to Jonathan Druart from comment #5)
> I am not an expert at all of the debian scripts, but it seems that in
> others, there are 2 errors raised if the usage is incorrect:
> 
> 
> I would suggest to
>   die "Missing instance name..."
> if the number of arg is not correct and
>   warn "Unknown instance $name."
> if is_instance returns 0.
> 
> Ccing Tomas to be sure I am not wrong.

Ok, I've followed the convention set by koha-enable as closely as possible. In the context of the script, it didn't make sense to have the "Unknown instance" message be a warning. We're only processing a single instance, and if we don't die when we get a bad instance name, we'll get all of the calls to xmlstartlet and the call to mysql throwing confusing messages to stderr, and the script will fail anyway.
Comment 10 Barton Chittenden 2015-06-23 16:00:36 UTC
Comment on attachment 40526 [details] [review]
Standardized argument parsing for koha-mysql.

This should have been obsoleted by the following patch.
Comment 11 Barton Chittenden 2015-06-23 16:02:23 UTC
Comment on attachment 40379 [details] [review]
Bug 12372: koha-mysql: process any mysql args

Was accidentally obsoleted -- reversing.
Comment 12 Barton Chittenden 2015-06-23 16:38:13 UTC
Update koha-mysql man page: bug 14443
Comment 13 Barton Chittenden 2015-07-12 20:58:11 UTC
TODO:

Update

debian/docs/koha-mysql.xml:

The synopsis should change to

    koha-mysql INSTANCE-NAME [ mysql arguments ]

Also, the '-e' option is now available, so the example usage may change to

    koha-mysql {instancename} -e "Some SQL query"

It would also be useful to provide an explicit example of a mysql argument whose functionality was previously entirely unavailable, e.g.

    koha-mysql {instancename} --skip-column-names

'See Also' should mention mysql.
Comment 14 Barton Chittenden 2015-07-12 21:00:09 UTC
*** Bug 14443 has been marked as a duplicate of this bug. ***
Comment 15 Barton Chittenden 2015-07-30 22:24:42 UTC Comment hidden (obsolete)
Comment 16 Barton Chittenden 2015-07-30 22:28:07 UTC
Updated man page:

KOHA-MYSQL(8)

NAME
       koha-mysql - Provide a mysql shell set up for the specified Koha instance.

SYNOPSIS
       koha-mysql {instancename} [mysql option...]

DESCRIPTION
       Provide a mysql shell set up for the specified Koha instance.

EXAMPLE USAGE
       Run interactive mysql shell for speicified Koha instance
           koha-mysql {instancename}

       Run a query given as an argument without launching mysql shell
           koha-mysql {instancename} -e "SOME SQL QUERY"

       Run a query, skip column names on output
           koha-mysql {instancename} -e "SOME SQL QUERY" --skip-column-names

       Load a database dump (e.g. one produced by mysqldump) into the database of the given instance
           koha-mysql {instancename} < /path/to/mysqldump.sql

SEE ALSO
       mysql (1), koha-dump-defaults(8), koha-reset-passwd(8), koha-upgrade-schema(8)
Comment 17 Liz Rea 2015-07-31 04:04:42 UTC Comment hidden (obsolete)
Comment 18 Liz Rea 2015-07-31 04:07:27 UTC Comment hidden (obsolete)
Comment 19 Liz Rea 2015-07-31 04:07:45 UTC Comment hidden (obsolete)
Comment 20 Liz Rea 2015-07-31 04:08:01 UTC Comment hidden (obsolete)
Comment 21 Jonathan Druart 2015-08-05 08:10:22 UTC
Created attachment 41366 [details] [review]
Bug 12372: koha-mysql: process any mysql args

Signed-off-by: Ian Bays <ian.bays@ptfs-europe.com>
Signed-off-by: Liz Rea <liz@catalyst.net.nz>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Comment 22 Jonathan Druart 2015-08-05 08:10:28 UTC
Created attachment 41367 [details] [review]
Bug 12372: (QA followup) Standardized argument parsing for koha-mysql.

http://bugs.koha-community.org/show_bug.cgi?id=12372
Signed-off-by: Liz Rea <liz@catalyst.net.nz>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Comment 23 Jonathan Druart 2015-08-05 08:10:34 UTC
Created attachment 41368 [details] [review]
Updated man pages for koha-mysql

http://bugs.koha-community.org/show_bug.cgi?id=12372
Signed-off-by: Liz Rea <liz@catalyst.net.nz>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Comment 24 Tomás Cohen Arazi 2015-08-24 18:59:54 UTC
Patch pushed to master.

Thanks Barton!