From: Alan H. <min...@us...> - 2004-08-31 21:23:23
|
Update of /cvsroot/gallery/gallery2/modules/core/classes/GalleryStorage/DatabaseStorage/schema/platform/oracle In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18637/modules/core/classes/GalleryStorage/DatabaseStorage/schema/platform/oracle Added Files: CreateBitOr.sql Log Message: moved BIT_OR function from configureStore() method to CreateBitOr.sql file. --- NEW FILE: CreateBitOr.sql --- -- Create BIT_OR aggregate function (requires Oracle 9i or higher) create or replace type BIT_OR_IMPL as object ( val NUMBER, static function ODCIAggregateInitialize(sctx IN OUT BIT_OR_IMPL) return number, member function ODCIAggregateIterate(self IN OUT BIT_OR_IMPL, value IN number) return number, member function ODCIAggregateTerminate(self IN OUT BIT_OR_IMPL, returnValue OUT number, flags IN number) return number, member function ODCIAggregateMerge(self IN OUT BIT_OR_IMPL, ctx2 IN BIT_OR_IMPL) return number ); create or replace type body BIT_OR_IMPL is static function ODCIAggregateInitialize(sctx IN OUT BIT_OR_IMPL) return number is begin sctx := BIT_OR_IMPL(0); return ODCIConst.Success; end; member function ODCIAggregateIterate(self IN OUT BIT_OR_IMPL, value IN number) return number is begin self.val := (self.val + value) - BitAND(self.val, value); return ODCIConst.Success; end; member function ODCIAggregateTerminate(self IN OUT BIT_OR_IMPL, returnValue OUT number, flags IN number) return number is begin returnValue := self.val; return ODCIConst.Success; end; member function ODCIAggregateMerge(self IN OUT BIT_OR_IMPL, ctx2 IN BIT_OR_IMPL) return number is begin self.val := (self.val + ctx2.val) - BitAND(self.val, ctx2.val); return ODCIConst.Success; end; end; create or replace function BIT_OR(input number) return number parallel_enable aggregate using BIT_OR_IMPL; |