@@ -621,4 +621,304 @@ END;
621621
622622$BODY$
623623LANGUAGE plpgsql VOLATILE
624- COST 100 ;
624+ COST 100 ;
625+
626+ /* 24.xxx SQL scripts */
627+
628+ CREATE OR REPLACE FUNCTION etltest .etltest
629+ (IN transformrunid integer
630+ , IN containerid entityid DEFAULT NULL ::character varying
631+ , INOUT rowsinserted integer DEFAULT 0
632+ , INOUT rowsdeleted integer DEFAULT 0
633+ , INOUT rowsmodified integer DEFAULT 0
634+ , INOUT returnmsg character varying DEFAULT ' default message' ::character varying
635+ , IN debug character varying DEFAULT ' ' ::character varying
636+ , IN filterrunid integer DEFAULT NULL ::integer
637+ , INOUT filterstarttimestamp timestamp without time zone DEFAULT NULL ::timestamp without time zone
638+ , INOUT filterendtimestamp timestamp without time zone DEFAULT NULL ::timestamp without time zone
639+ , INOUT previousfilterrunid integer DEFAULT (- 1 )
640+ , INOUT previousfilterstarttimestamp timestamp without time zone DEFAULT NULL ::timestamp without time zone
641+ , INOUT previousfilterendtimestamp timestamp without time zone DEFAULT NULL ::timestamp without time zone
642+ -- , INOUT procVersion decimal DEFAULT 0
643+ , IN testmode integer DEFAULT (- 1 )
644+ , INOUT testinoutparam character varying DEFAULT ' ' ::character varying
645+ , INOUT runcount integer DEFAULT 1
646+ , OUT return_status integer )
647+ RETURNS record AS
648+ $BODY$
649+
650+ /*
651+ Test modes
652+ 1 normal operation
653+ 2 return code > 0
654+ 3 raise error
655+ 4 input/output parameter persistence
656+ 5 override of persisted input/output parameter
657+ 6 Run filter strategy, require filterRunId. Test persistence.
658+ 7 Modified since filter strategy, no source, require filterStartTimeStamp & filterEndTimeStamp,
659+ populated from output of previous run
660+ 8 Modified since filter strategy with source, require filterStartTimeStamp & filterEndTimeStamp
661+ populated from the filter strategy IncrementalStartTime & IncrementalEndTime
662+ 9 Sleep for 2 minutes before finishing
663+
664+ */
665+ BEGIN
666+
667+ IF testMode IS NULL
668+ THEN
669+ returnMsg := ' No testMode set' ;
670+ return_status := 1 ;
671+ RETURN;
672+ END IF;
673+
674+ IF runCount IS NULL
675+ THEN
676+ runCount := 1 ;
677+ ELSE
678+ runCount := runCount + 1 ;
679+ END IF;
680+
681+ IF testMode = 1
682+ THEN
683+ RAISE NOTICE ' %' , ' Test print statement logging' ;
684+ rowsInserted := 1 ;
685+ rowsDeleted := 2 ;
686+ rowsModified := 4 ;
687+ returnMsg := ' Test returnMsg logging' ;
688+ return_status := 0 ;
689+ RETURN;
690+ END IF;
691+
692+ IF testMode = 2 THEN return_status := 1 ; RETURN; END IF;
693+
694+ IF testMode = 3
695+ THEN
696+ returnMsg := ' Intentional SQL Exception From Inside Proc' ;
697+ RAISE EXCEPTION ' %' , returnMsg;
698+ END IF;
699+
700+ IF testMode = 4 AND testInOutParam != ' after' AND runCount > 1
701+ THEN
702+ returnMsg := ' Expected value "after" for testInOutParam on run count = ' || runCount || ' , but was ' || testInOutParam;
703+ return_status := 1 ;
704+ RETURN;
705+ END IF;
706+
707+ IF testMode = 5 AND testInOutParam != ' before' AND runCount > 1
708+ THEN
709+ returnMsg := ' Expected value "before" for testInOutParam on run count = ' || runCount || ' , but was ' || testInOutParam;
710+ return_status := 1 ;
711+ RETURN;
712+ END IF;
713+
714+ IF testMode = 6
715+ THEN
716+ IF filterRunId IS NULL
717+ THEN
718+ returnMsg := ' Required filterRunId value not supplied' ;
719+ return_status := 1 ;
720+ RETURN;
721+ END IF;
722+ IF runCount > 1 AND (previousFilterRunId IS NULL OR previousFilterRunId >= filterRunId)
723+ THEN
724+ returnMsg := ' Required filterRunId was not persisted from previous run.' ;
725+ return_status := 1 ;
726+ RETURN;
727+ END IF;
728+ previousFilterRunId := filterRunId;
729+ END IF;
730+
731+ IF testMode = 7
732+ THEN
733+ IF runCount > 1 AND (filterStartTimeStamp IS NULL AND filterEndTimeStamp IS NULL )
734+ THEN
735+ returnMsg := ' Required filterStartTimeStamp or filterEndTimeStamp were not persisted from previous run.' ;
736+ return_status := 1 ;
737+ RETURN;
738+ END IF;
739+ filterStartTimeStamp := localtimestamp;
740+ filterEndTimeStamp := localtimestamp;
741+ END IF;
742+
743+ IF testMode = 8
744+ THEN
745+ IF runCount > 1 AND ((previousFilterStartTimeStamp IS NULL AND previousFilterEndTimeStamp IS NULL )
746+ OR (filterStartTimeStamp IS NULL AND filterEndTimeStamp IS NULL ))
747+ THEN
748+ returnMsg := ' Required filterStartTimeStamp or filterEndTimeStamp were not persisted from previous run.' ;
749+ return_status := 1 ;
750+ RETURN;
751+ END IF;
752+ previousFilterStartTimeStamp := coalesce(filterStartTimeStamp, localtimestamp);
753+ previousFilterEndTimeStamp := coalesce(filterEndTimeStamp, localtimestamp);
754+ END IF;
755+
756+ IF testMode = 9
757+ THEN
758+ -- Sleep for 2 minutes
759+ SELECT pg_sleep(120 );
760+ return_status := 1 ;
761+ RETURN;
762+ END IF;
763+
764+ -- set value for persistence tests
765+ IF testInOutParam != ' '
766+ THEN
767+ testInOutParam := ' after' ;
768+ END IF;
769+
770+ return_status := 0 ;
771+ RETURN;
772+
773+ END;
774+ $BODY$
775+ LANGUAGE plpgsql;
776+
777+ CREATE OR REPLACE FUNCTION etltest .etltest
778+ (IN transformrunid integer
779+ , IN containerid entityid DEFAULT NULL ::character varying
780+ , INOUT rowsinserted integer DEFAULT 0
781+ , INOUT rowsdeleted integer DEFAULT 0
782+ , INOUT rowsmodified integer DEFAULT 0
783+ , INOUT returnmsg character varying DEFAULT ' default message' ::character varying
784+ , IN debug character varying DEFAULT ' ' ::character varying
785+ , IN filterrunid integer DEFAULT NULL ::integer
786+ , INOUT filterstarttimestamp timestamp without time zone DEFAULT NULL ::timestamp without time zone
787+ , INOUT filterendtimestamp timestamp without time zone DEFAULT NULL ::timestamp without time zone
788+ , INOUT previousfilterrunid integer DEFAULT (- 1 )
789+ , INOUT previousfilterstarttimestamp timestamp without time zone DEFAULT NULL ::timestamp without time zone
790+ , INOUT previousfilterendtimestamp timestamp without time zone DEFAULT NULL ::timestamp without time zone
791+ -- , INOUT procVersion decimal DEFAULT 0
792+ , IN testmode integer DEFAULT (- 1 )
793+ , INOUT testinoutparam character varying DEFAULT ' ' ::character varying
794+ , INOUT runcount integer DEFAULT 1
795+ , OUT return_status integer )
796+ RETURNS record AS
797+ $BODY$
798+
799+ /*
800+ Test modes
801+ 1 normal operation
802+ 2 return code > 0
803+ 3 raise error
804+ 4 input/output parameter persistence
805+ 5 override of persisted input/output parameter
806+ 6 Run filter strategy, require filterRunId. Test persistence.
807+ 7 Modified since filter strategy, no source, require filterStartTimeStamp & filterEndTimeStamp,
808+ populated from output of previous run
809+ 8 Modified since filter strategy with source, require filterStartTimeStamp & filterEndTimeStamp
810+ populated from the filter strategy IncrementalStartTime & IncrementalEndTime
811+ 9 Sleep for 2 minutes before finishing
812+
813+ */
814+ BEGIN
815+
816+ IF testMode IS NULL
817+ THEN
818+ returnMsg := ' No testMode set' ;
819+ return_status := 1 ;
820+ RETURN;
821+ END IF;
822+
823+ IF runCount IS NULL
824+ THEN
825+ runCount := 1 ;
826+ ELSE
827+ runCount := runCount + 1 ;
828+ END IF;
829+
830+ IF testMode = 1
831+ THEN
832+ RAISE NOTICE ' %' , ' Test print statement logging' ;
833+ rowsInserted := 1 ;
834+ rowsDeleted := 2 ;
835+ rowsModified := 4 ;
836+ returnMsg := ' Test returnMsg logging' ;
837+ return_status := 0 ;
838+ RETURN;
839+ END IF;
840+
841+ IF testMode = 2 THEN return_status := 1 ; RETURN; END IF;
842+
843+ IF testMode = 3
844+ THEN
845+ returnMsg := ' Intentional SQL Exception From Inside Proc' ;
846+ RAISE EXCEPTION ' %' , returnMsg;
847+ END IF;
848+
849+ IF testMode = 4 AND testInOutParam != ' after' AND runCount > 1
850+ THEN
851+ returnMsg := ' Expected value "after" for testInOutParam on run count = ' || runCount || ' , but was ' || testInOutParam;
852+ return_status := 1 ;
853+ RETURN;
854+ END IF;
855+
856+ IF testMode = 5 AND testInOutParam != ' before' AND runCount > 1
857+ THEN
858+ returnMsg := ' Expected value "before" for testInOutParam on run count = ' || runCount || ' , but was ' || testInOutParam;
859+ return_status := 1 ;
860+ RETURN;
861+ END IF;
862+
863+ IF testMode = 6
864+ THEN
865+ IF filterRunId IS NULL
866+ THEN
867+ returnMsg := ' Required filterRunId value not supplied' ;
868+ return_status := 1 ;
869+ RETURN;
870+ END IF;
871+ IF runCount > 1 AND (previousFilterRunId IS NULL OR previousFilterRunId >= filterRunId)
872+ THEN
873+ returnMsg := ' Required filterRunId was not persisted from previous run.' ;
874+ return_status := 1 ;
875+ RETURN;
876+ END IF;
877+ previousFilterRunId := filterRunId;
878+ END IF;
879+
880+ IF testMode = 7
881+ THEN
882+ IF runCount > 1 AND (filterStartTimeStamp IS NULL AND filterEndTimeStamp IS NULL )
883+ THEN
884+ returnMsg := ' Required filterStartTimeStamp or filterEndTimeStamp were not persisted from previous run.' ;
885+ return_status := 1 ;
886+ RETURN;
887+ END IF;
888+ filterStartTimeStamp := localtimestamp;
889+ filterEndTimeStamp := localtimestamp;
890+ END IF;
891+
892+ IF testMode = 8
893+ THEN
894+ IF runCount > 1 AND ((previousFilterStartTimeStamp IS NULL AND previousFilterEndTimeStamp IS NULL )
895+ OR (filterStartTimeStamp IS NULL AND filterEndTimeStamp IS NULL ))
896+ THEN
897+ returnMsg := ' Required filterStartTimeStamp or filterEndTimeStamp were not persisted from previous run.' ;
898+ return_status := 1 ;
899+ RETURN;
900+ END IF;
901+ previousFilterStartTimeStamp := coalesce(filterStartTimeStamp, localtimestamp);
902+ previousFilterEndTimeStamp := coalesce(filterEndTimeStamp, localtimestamp);
903+ END IF;
904+
905+ IF testMode = 9
906+ THEN
907+ -- Sleep for 30 seconds minutes
908+ SELECT pg_sleep(30 );
909+ return_status := 1 ;
910+ RETURN;
911+ END IF;
912+
913+ -- set value for persistence tests
914+ IF testInOutParam != ' '
915+ THEN
916+ testInOutParam := ' after' ;
917+ END IF;
918+
919+ return_status := 0 ;
920+ RETURN;
921+
922+ END;
923+ $BODY$
924+ LANGUAGE plpgsql;
0 commit comments