Uploaded image for project: 'Moodle'
  1. Moodle
  2. MDL-12023

Fixes for upgrade issues (from 1.6 to 1.8 on Postgres 8.1)

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.8.4, 1.9
    • Fix Version/s: 1.6.6, 1.7.4, 1.8.4, 1.9, 2.0
    • Component/s: Database SQL/XMLDB
    • Labels:
      None
    • Environment:
      Linux 2.6.22, Ubuntu 7.10, Postgres 8.1
    • Database:
      PostgreSQL
    • Affected Branches:
      MOODLE_18_STABLE, MOODLE_19_STABLE
    • Fixed Branches:
      MOODLE_16_STABLE, MOODLE_17_STABLE, MOODLE_18_STABLE, MOODLE_19_STABLE, MOODLE_20_STABLE

      Description

      While doing an upgrade from 1.6.? to MOODLE_18_STABLE for a client, I had to remove a few calls to rebuild_course_cache() which were interfering with the upgrade process:

      • 16_to_18_upgrade_on_postgres.patch

      Then, I compared the database schemas of a fresh MOODLE_18_STABLE install with the upgraded database and fixed the following discrepancies:

      • mod-exercise_add_late_field.patch: add the 'late' field which was missing from exercise_submissions
      • mod-scorm_version_field.patch: add the 'version' field which was missing from scorm
      • question-type-rqp_missing_servers_table.patch: adds the missing 'question_rqp_servers' table

      These patches are against:

      • MOODLE_18_STABLE
      • MOODLE_19_STABLE
      • CVSHEAD

      except for the rqp question type one since it's no longer part of the core. I have committed a fix for that one in contrib HEAD.

      After making these changes, I was able to upgrade this install of Moodle 1.6 to 1.8 without any errors or differences in the schema.

      Francois

        Gliffy Diagrams

          Attachments

          1. 16_to_18_upgrade_log.html
            711 kB
          2. 16_to_18_upgrade_on_postgres_16STABLE.patch
            0.0 kB
          3. 16_to_18_upgrade_on_postgres_16STABLE.patch
            1 kB
          4. 16_to_18_upgrade_on_postgres_17STABLE.patch
            0.4 kB
          5. 16_to_18_upgrade_on_postgres_17STABLE.patch
            2 kB
          6. 16_to_18_upgrade_on_postgres_18STABLE.patch
            0.4 kB
          7. 16_to_18_upgrade_on_postgres_18STABLE.patch
            2 kB
          8. 16_to_18_upgrade_on_postgres_19STABLE.patch
            0.4 kB
          9. 16_to_18_upgrade_on_postgres_19STABLE.patch
            2 kB
          10. 16_to_18_upgrade_on_postgres_CVSHEAD.patch
            0.4 kB
          11. 16_to_18_upgrade_on_postgres_CVSHEAD.patch
            2 kB
          12. mod-exercise_add_late_field_16STABLE.patch
            2 kB
          13. mod-exercise_add_late_field_17STABLE.patch
            2 kB
          14. mod-exercise_add_late_field_18STABLE.patch
            2 kB
          15. mod-exercise_add_late_field_18STABLE.patch
            2 kB
          16. mod-exercise_add_late_field_19STABLE.patch
            2 kB
          17. mod-exercise_add_late_field_19STABLE.patch
            2 kB
          18. mod-exercise_add_late_field_19STABLE.patch
            2 kB
          19. mod-exercise_add_late_field_CVSHEAD.patch
            2 kB
          20. mod-exercise_add_late_field_CVSHEAD.patch
            2 kB
          21. mod-scorm_version_field_16STABLE.patch
            0.5 kB
          22. mod-scorm_version_field_16STABLE.patch
            0.5 kB
          23. mod-scorm_version_field_18STABLE.patch
            1 kB
          24. mod-scorm_version_field_19STABLE.patch
            1 kB
          25. mod-scorm_version_field_19STABLE.patch
            1 kB
          26. mod-scorm_version_field_CVSHEAD.patch
            1 kB
          27. mod-scorm_version_field_CVSHEAD.patch
            1 kB
          28. question-type-rqp_missing_servers_table_16STABLE.patch
            2 kB
          29. question-type-rqp_missing_servers_table_17STABLE.patch
            2 kB
          30. question-type-rqp_missing_servers_table_18STABLE.patch
            2 kB

            Activity

            Hide
            francois Francois Marier added a comment -

            This should probably not be tagged as "Major". Sorry about that.

            Show
            francois Francois Marier added a comment - This should probably not be tagged as "Major". Sorry about that.
            Hide
            francois Francois Marier added a comment -

            To answer your question from Skype:

            > Eloy Lafuente: Does Postgres support "backticks" ? Just saw some in the very first lines of
            > mod/exercise/lib/postgres.php when reviewing http://tracker.moodle.org/browse/MDL-12023

            I've run the following test on Postgres 8.1:

            <?php
            require_once('config.php');
            require_login();
            execute_sql(" ALTER TABLE `{$CFG->prefix}exercise_submissions` ADD `late` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0'");
            print "\nLast DB error: ".$db->ErrorMsg()."\n";
            ?>

            and got:

            Last DB error: ERROR: syntax error at or near "`" LINE 1: ALTER TABLE `mdl_exercise_submissions` ADD `late` TINYINT(3)... ^

            Which is likely the reason it had been removed from the branch I am using here at Catalyst.

            Show
            francois Francois Marier added a comment - To answer your question from Skype: > Eloy Lafuente: Does Postgres support "backticks" ? Just saw some in the very first lines of > mod/exercise/lib/postgres.php when reviewing http://tracker.moodle.org/browse/MDL-12023 I've run the following test on Postgres 8.1: <?php require_once('config.php'); require_login(); execute_sql(" ALTER TABLE `{$CFG->prefix}exercise_submissions` ADD `late` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0'"); print "\nLast DB error: ".$db->ErrorMsg()."\n"; ?> and got: Last DB error: ERROR: syntax error at or near "`" LINE 1: ALTER TABLE `mdl_exercise_submissions` ADD `late` TINYINT(3)... ^ Which is likely the reason it had been removed from the branch I am using here at Catalyst.
            Hide
            francois Francois Marier added a comment -

            New versions of these patches which keep the module versions in sync between 1.9 and HEAD

            Show
            francois Francois Marier added a comment - New versions of these patches which keep the module versions in sync between 1.9 and HEAD
            Hide
            stronk7 Eloy Lafuente (stronk7) added a comment -

            Oki. About patches 1-5 some questions:

            1) Why do you take out some rebuild_course_cache() calls? Is that really necessary (I can see the point about not having too much sense to execute them repeatedly if such data isn't needed by the upgrade script itself). Have you left at least one call enabled?

            2) In the 18STABLE version.... there is one "extra" change about one create table statement. Why? If has sense, shouldn't it be in all versions?

            Will review the next, in some hours... thanks!

            Show
            stronk7 Eloy Lafuente (stronk7) added a comment - Oki. About patches 1-5 some questions: 1) Why do you take out some rebuild_course_cache() calls? Is that really necessary (I can see the point about not having too much sense to execute them repeatedly if such data isn't needed by the upgrade script itself). Have you left at least one call enabled? 2) In the 18STABLE version.... there is one "extra" change about one create table statement. Why? If has sense, shouldn't it be in all versions? Will review the next, in some hours... thanks!
            Hide
            francois Francois Marier added a comment -

            Thanks for reviewing these ones Eloy, I wasn't sure exactly about the two things that you pointed out and was hoping to discuss them a bit here

            I made these changes in order to be able to go through the upgrade successfully. I don't remember exactly what the errors were but I think it had something to do with role assignments being done without the role tables being there yet.

            I will do another test upgrade to see if I can get the exact error message for you.

            Show
            francois Francois Marier added a comment - Thanks for reviewing these ones Eloy, I wasn't sure exactly about the two things that you pointed out and was hoping to discuss them a bit here I made these changes in order to be able to go through the upgrade successfully. I don't remember exactly what the errors were but I think it had something to do with role assignments being done without the role tables being there yet. I will do another test upgrade to see if I can get the exact error message for you.
            Hide
            francois Francois Marier added a comment -

            By the way, I'll commit the postgres DB fixes to exercise, scorm and rqp today once Penny has reviewed them.

            Show
            francois Francois Marier added a comment - By the way, I'll commit the postgres DB fixes to exercise, scorm and rqp today once Penny has reviewed them.
            Hide
            francois Francois Marier added a comment -

            Updated patch for mod/scorm on 1.6.

            Note that on 1.6 and 1.7, the postgres upgrade script is fine.

            Show
            francois Francois Marier added a comment - Updated patch for mod/scorm on 1.6. Note that on 1.6 and 1.7, the postgres upgrade script is fine.
            Hide
            stronk7 Eloy Lafuente (stronk7) added a comment -

            Great no problem at all!

            Just be careful with version files (I think it's easy to move the versions to the same value because there weren't more changes between them). I've quick-reviewed the DB changes (attachments nº6 and so on) and look correct.

            Just have some doubts about the 2 points exposed above (the need to keep at least ONE rebuild_course_cache() call and the create table change).

            Anyway, I assign this bug to you... (I'll remain as watcher).

            Happy commits with Penny (and don't forget tagging!)

            Great work, thanks! Ciao

            Show
            stronk7 Eloy Lafuente (stronk7) added a comment - Great no problem at all! Just be careful with version files (I think it's easy to move the versions to the same value because there weren't more changes between them). I've quick-reviewed the DB changes (attachments nº6 and so on) and look correct. Just have some doubts about the 2 points exposed above (the need to keep at least ONE rebuild_course_cache() call and the create table change). Anyway, I assign this bug to you... (I'll remain as watcher). Happy commits with Penny (and don't forget tagging!) Great work, thanks! Ciao
            Hide
            francois Francois Marier added a comment -

            Get rid of backticks in the Postgres upgrade file

            Show
            francois Francois Marier added a comment - Get rid of backticks in the Postgres upgrade file
            Hide
            francois Francois Marier added a comment -

            All patches except 1-5 were committed with Penny.

            Show
            francois Francois Marier added a comment - All patches except 1-5 were committed with Penny.
            Hide
            francois Francois Marier added a comment -

            Alright, after doing more tests on this Postgres upgrade from 1.6 to 1.8, it turns out that the only necessary change in those 16_to_18_upgrade patches is the removal of "rebuild_course_cache()" in lib/db/upgrade.php.

            How should we fix this?

            Show
            francois Francois Marier added a comment - Alright, after doing more tests on this Postgres upgrade from 1.6 to 1.8, it turns out that the only necessary change in those 16_to_18_upgrade patches is the removal of "rebuild_course_cache()" in lib/db/upgrade.php. How should we fix this?
            Hide
            skodak Petr Skoda added a comment -

            Adding Tim, ML says it is the bug related to quiz commit you asked about today...

            Show
            skodak Petr Skoda added a comment - Adding Tim, ML says it is the bug related to quiz commit you asked about today...
            Hide
            dougiamas Martin Dougiamas added a comment -

            No no no no no Francois you can't make database changes in the stable branches!

            http://moodle.cvs.sourceforge.net/moodle/moodle/mod/scorm/db/upgrade.php

            Have you done this anywhere else?

            Show
            dougiamas Martin Dougiamas added a comment - No no no no no Francois you can't make database changes in the stable branches! http://moodle.cvs.sourceforge.net/moodle/moodle/mod/scorm/db/upgrade.php Have you done this anywhere else?
            Hide
            dougiamas Martin Dougiamas added a comment -

            My apologies, I over reacted there. Generally you should not, but I agree that in this case it is OK and works fine.

            Show
            dougiamas Martin Dougiamas added a comment - My apologies, I over reacted there. Generally you should not, but I agree that in this case it is OK and works fine.
            Hide
            francois Francois Marier added a comment -

            The rebuild_course_cache() errors have been moved to MDL-12160

            Show
            francois Francois Marier added a comment - The rebuild_course_cache() errors have been moved to MDL-12160

              People

              • Votes:
                1 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:
                  Fix Release Date:
                  11/Jan/08