Can you look in the mp_schemascripthistory table, there should be a row for 2.2.3.0 with an error in it. I need the error message to help figure out the problem.
This script worked on my installation so I'm suspecting a problem with different collation or charset.
The script is adding a column named guid to the mp_moduledefinitions table, then it tries to update the guids for existing features with code like this:
_controlsrc := ''Modules/Links.ascx'';
_guid := ''74bdbcc2-0e79-47ff-bcd4-a159270bf36e'';
UPDATE mp_moduledefinitions SET guid = _guid WHERE controlsrc = _controlsrc;
and so on for other features.
Another possible cause of the error is if you have some custom modules installed, I don't know a way to populate the guid column easily for those. In MS SQL I can do it with newid() function which generates a guid but in pgsql there is no such function.
So if you have custom features the script might be erroring on this line:
ALTER TABLE mp_moduledefinitions ALTER COLUMN guid SET NOT NULL;
You could try commenting out that line and this line:
ALTER TABLE mp_moduledefinitionsettings ALTER COLUMN featureguid SET NOT NULL;
Then delete the row with the error from mp_schemascripthistory, it will not run the script again if it has a row with the same version.
Then it would be desireable after the script runs to populate the guid field where they are empty for your custom features as well as the featureguid field in mp_moduledefinitionsettings, then run the script fragments that you commented out to make the columns not allow null.
The purpose of these new guid fields is to make the installation more configurable and also to be able to add settings to existing features during upgrades. The existing integer ids aren't reliable to be the same on all installations, but by using specific guids we will have a clean way to find the existing feature.