Package: dbconfig-common
Version: 1.8.45
Severity: wishlist
Tags: patch

Sometimes, I feel more flexibility is needed concerning:
- the order of execution of scripts/data
- the order of execution of elements therein

I.e. for now it is hardcoded that scripts are run first and then data
snippets are applied. What if I need to do the inverse?

Furthermure, for an upgrade to one version I can only specify one file
that would have to contain all the snippets. I'd opt for a conf.d-style
approach.

For the first wish, I wouldn't know right know how to fix.

For the second wish I am attaching an idea of a patch for the script files.

Oh maybe one could even generalize this $(find) to go over all the files
in the data/scripts directories, sort them and then execute/apply them
one after the other in whatever order they occur. That would solve both
problems and one could even
- apply data
- run a script
- apply more data
- run more scripts
- ...
(Might be less transparent though.)

Regards,
JM
--- /usr/share/dbconfig-common/dpkg/postinst.orig       2010-03-19 
03:45:42.000000000 +0000
+++ /usr/share/dbconfig-common/dpkg/postinst    2010-03-19 03:57:09.000000000 
+0000
@@ -282,19 +282,19 @@
        vers="$1"
        sqlfile="$dbc_share/data/$dbc_basepackage/upgrade/$dbc_dbtype/$vers"
        
admsqlfile="$dbc_share/data/$dbc_basepackage/upgrade-dbadmin/$dbc_dbtype/$vers"
-       
scriptfile="$dbc_share/scripts/$dbc_basepackage/upgrade/$dbc_dbtype/$vers"
+       scriptfilepath="$dbc_share/scripts/$dbc_basepackage/upgrade/$dbc_dbtype"


        # now go through script updates
-       if [ -f "$scriptfile" ]; then
-               dbc_logline "applying upgrade script for $dbc_oldversion -> 
$vers"
+       for scriptfile in $(find "$scriptfilepath" -name "$vers*" -type f | 
sort); do
+               dbc_logline "applying upgrade script for $dbc_oldversion -> 
$vers: ${scriptfile#$scriptfilepath/}"
                # XXX $*
                if ! sh -c "$scriptfile $*"; then
                        dbc_error="$scriptfile exited with non-zero status"
                        dbc_upgrade_error "processing $scriptfile"
                        [ "$dbc_tried_again" ] && return 0
                fi
-       fi
+       done

        _dbc_asuser=""
        if [ -f "$admsqlfile" ]; then

Reply via email to