}
if( $self->circ ) {
+ $self->generate_fines_finish;
$self->checkin_handle_circ;
return if $self->bail_out;
$self->checkin_changed(1);
BEFORE INSERT OR UPDATE ON config.db_patch_dependencies
FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates');
-INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0536', :eg_version); -- miker for tsbere
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0537', :eg_version); -- miker
CREATE TABLE config.bib_source (
id SERIAL PRIMARY KEY,
my $db_patch_num;
my $patch_name;
my $patch_from;
+my $patch_wrap;
my @deprecates;
my @supersedes;
'num=i' => \$db_patch_num,
'name=s' => \$patch_name,
'from=s' => \$patch_from,
+ 'wrap=s' => \$patch_wrap,
'deprecates=i' => \@deprecates,
'supersedes=i' => \@supersedes,
) or exit_usage();
}
my $patch_init_contents;
-$patch_init_contents = `git diff $patch_from -- ./[0-9][0-9][0-9].*.sql | sed -e '/^[^+\@-]/d' -e '/^\\(--- a\\|+++ b\\)/d' -e 's/^+//'` if ($patch_from ne '');
+$patch_init_contents = `git diff $patch_from -- ./[0-9][0-9][0-9].*.sql | sed -e '/^[^+\@-]/d' -e '/^\\(--- a\\|+++ b\\)/d' -e 's/^+//'` if ($patch_from ne '' && ! defined $patch_wrap);
+$patch_init_contents = `cat $patch_wrap` if (defined $patch_wrap && $patch_wrap ne '');
print OUT <<_FOOTER_;
-- check whether patch can be applied
-SELECT evergreen.update_deps_block_check('$db_patch_num', :eg_version);
+SELECT evergreen.upgrade_deps_block_check('$db_patch_num', :eg_version);
-- FIXME: add/check SQL statements to perform the upgrade
$patch_init_contents
--deprecates patch(es) deprecated by this update
--supersedes patch(es) superseded by this update
--from git refspec to compare against
+ --wrap existing file to wrap (overrides --from)
_HELP_
exit 0;
}
BEGIN;
+INSERT INTO config.upgrade_log (version) VALUES ('0527');
+
ALTER TABLE config.circ_matrix_weights ADD COLUMN marc_bib_level NUMERIC(6,2) NOT NULL DEFAULT 0.0;
UPDATE config.circ_matrix_weights
BEGIN;
-- check whether patch can be applied
-SELECT evergreen.update_deps_block_check('0536', :eg_version);
+INSERT INTO config.upgrade_log (version) VALUES ('0536');
INSERT INTO config.org_unit_setting_type ( name, label, description, datatype) VALUES ( 'circ.staff_client.actor_on_checkout', 'Load patron from Checkout', 'When scanning barcodes into Checkout auto-detect if a new patron barcode is scanned and auto-load the new patron.', 'bool');
--- /dev/null
+BEGIN;
+
+INSERT INTO config.upgrade_log (version) VALUES ('0537'); --miker
+
+DROP FUNCTION evergreen.upgrade_deps_block_check(text,text);
+DROP FUNCTION evergreen.upgrade_verify_no_dep_conflicts(text);
+DROP FUNCTION evergreen.upgrade_list_applied_deprecated(text);
+DROP FUNCTION evergreen.upgrade_list_applied_superseded(text);
+
+-- List applied db patches that deprecates (and block the application of) my_db_patch
+CREATE FUNCTION evergreen.upgrade_list_applied_deprecated ( my_db_patch TEXT ) RETURNS SETOF TEXT AS $$
+ SELECT db_patch
+ FROM config.db_patch_dependencies
+ WHERE ARRAY[$1]::TEXT[] && deprecates
+$$ LANGUAGE SQL;
+
+-- List applied db patches that supersedes (and block the application of) my_db_patch
+CREATE FUNCTION evergreen.upgrade_list_applied_superseded ( my_db_patch TEXT ) RETURNS SETOF TEXT AS $$
+ SELECT db_patch
+ FROM config.db_patch_dependencies
+ WHERE ARRAY[$1]::TEXT[] && supersedes
+$$ LANGUAGE SQL;
+
+-- Make sure that no deprecated or superseded db patches are currently applied
+CREATE FUNCTION evergreen.upgrade_verify_no_dep_conflicts ( my_db_patch TEXT ) RETURNS BOOL AS $$
+ SELECT COUNT(*) = 0
+ FROM (SELECT * FROM evergreen.upgrade_list_applied_deprecates( $1 )
+ UNION
+ SELECT * FROM evergreen.upgrade_list_applied_supersedes( $1 )
+ UNION
+ SELECT * FROM evergreen.upgrade_list_applied_deprecated( $1 )
+ UNION
+ SELECT * FROM evergreen.upgrade_list_applied_superseded( $1 ))x
+$$ LANGUAGE SQL;
+
+-- Raise an exception if there are, in fact, dep/sup confilct
+CREATE FUNCTION evergreen.upgrade_deps_block_check ( my_db_patch TEXT, my_applied_to TEXT ) RETURNS BOOL AS $$
+BEGIN
+ IF NOT evergreen.upgrade_verify_no_dep_conflicts( my_db_patch ) THEN
+ RAISE EXCEPTION '
+Upgrade script % can not be applied:
+ applied deprecated scripts %
+ applied superseded scripts %
+ deprecated by %
+ superseded by %',
+ my_db_patch,
+ ARRAY_ACCUM(evergreen.upgrade_list_applied_deprecates(my_db_patch)),
+ ARRAY_ACCUM(evergreen.upgrade_list_applied_supersedes(my_db_patch)),
+ evergreen.upgrade_list_applied_deprecated(my_db_patch),
+ evergreen.upgrade_list_applied_superseded(my_db_patch);
+ END IF;
+
+ INSERT INTO config.upgrade_log (version, applied_to) VALUES (my_db_patch, my_applied_to);
+ RETURN TRUE;
+END;
+$$ LANGUAGE PLPGSQL;
+
+COMMIT;