Index: openacs-4/bin/pg_7.2to7.3_upgrade_helper.pl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/bin/Attic/pg_7.2to7.3_upgrade_helper.pl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/bin/pg_7.2to7.3_upgrade_helper.pl 2 Nov 2003 03:05:16 -0000 1.1 @@ -0,0 +1,81 @@ +#!/usr/bin/perl + +# usage: ./dump_parser.pl origdump newdump /your/oacs/dir +# +# this parses a postgres dump file coming from pg 7.2.x +# it then looks for function names that has 31 char length, which are +# likely truncated function names. It then digs into the +# OpenACS home dir to look for the untruncated function name +# and substitutes the value and makes a new dump file. +# the new dump file can be used to restore on pg 7.3.x +# +# requires: perl, grep and find +# +# slapped together by Jun Yamog +# +# THIS IS NOT 100%, BUT SHOULD HELP A LOT. + +# I have also seen that this following views are also truncated +# +# ad_template_sample_users_sequence +# acs_privilege_descendant_map_view + +# this are the create statements on a dump file, i have not checked if other +# object types are affected. The script only goes through functions +# +#CREATE CONSTRAINT +#CREATE FUNCTION +#CREATE INDEX +#CREATE RULE +#CREATE SEQUENCE +#CREATE TABLE +#CREATE TRIGGER +#CREATE TRUSTED +#CREATE UNIQUE +#CREATE VIEW +# +# Take note that views that made use of truncated names, but be recreated +# to use the untruncated names +# +# look at this thread for further info +# +# http://openacs.org/forums/message-view?message_id=109337 + +$input_dump = $ARGV[0]; +$output_dump = $ARGV[1]; +$oacs_home = $ARGV[2]; + +open(INPUT_DUMP, $input_dump); +open(OUTPUT_DUMP, ">$output_dump"); + +@output_dump = ""; + +while () { + # check to see if line is a CREATE FUNCTION + if ($_ =~ /^CREATE FUNCTION "(.*)"/) { + #check to see if the function is at 31 char + $function_name = $1; + if (length($function_name)>=31) { + print("==================================================================\n"); + print("looking for function $function_name in oacs\n"); + # lets grep on the oacs files to get the real name + $grep_result = `find $oacs_home -name "*.sql" | xargs grep -ri "function $function_name"`; + print("grep result: $grep_result \n"); + if ($grep_result =~ /function (${function_name}\w*)/i) { + # if we get the real name lets substitute it + $real_function_name = $1; + print("replacing $function_name with $real_function_name \n\n\n"); + $_ =~ s/$function_name/$real_function_name/; + } else { + print("WARNING: unable to find the real function name of $function_name \n\n\n"); + } + } + } + push(@output_dump, $_); +} + +print OUTPUT_DUMP (@output_dump); + +close(INPUT_DUMP); +close(OUTPUT_DUMP); +