Update of /cvsroot/monetdb/sql/src/test/Skyserver
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv14926

Modified Files:
        Skyserver_functions.sql 
Log Message:
Add missing functions...


Index: Skyserver_functions.sql
===================================================================
RCS file: /cvsroot/monetdb/sql/src/test/Skyserver/Skyserver_functions.sql,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- Skyserver_functions.sql     27 Jan 2008 15:06:20 -0000      1.19
+++ Skyserver_functions.sql     11 Mar 2008 19:37:42 -0000      1.20
@@ -1568,6 +1568,154 @@
 
 -------------------------DOCUMENTATION------------------------
 
+CREATE FUNCTION fDocColumnsWithRank(tabname varchar(400))
+RETURNS TABLE (
+       enum    varchar(64),
+       nme             varchar(64),
+       type            varchar(32),
+       length  int,
+       unit            varchar(64),
+       ucd             varchar(64),
+       description     varchar(2048),
+       rank            int
+)
+BEGIN
+    RETURN TABLE(
+    select  enum, nme, type, length, unit, ucd, description, rank 
+    from ( SELECT      
+       --distinct convert(sysnme,c.nme) as nme,
+                       c.nme as nme,
+                       t.nme as type,
+                       coalesce(d.length, c.length) as length,
+                       c.colid as ColNumber,
+                       m.unit,
+                       m.enum,
+                       m.ucd,
+                       m.description,
+                       m.rank
+               FROM    sysobjects o,
+                       sysusers u,
+                       spt_datatype_info d,
+                       systypes t,
+                       syscolumns c,
+                       DBColumns m
+               WHERE o.nme = tabname
+                   AND o.uid = u.uid
+                   AND c.id = o.id
+                   AND t.xtype = c.xtype
+                   AND d.ss_dtype = c.xtype
+ --                AND coalesce(d."AUTO_INCREMENT",0) = 
+--                     coalesce(ColumnProperty (c.id, c.nme, 'IsIdentity'),0)
+                   AND (m.tablename = tabname 
+                       OR (m.tablename IN 
+                               (select distinct b.parent from DBViewCols a, 
DBViewCols b 
+                               where a.viewname = tabname AND a.parent = 
b.viewname)
+                               ) 
+                       OR (m.tablename IN 
+                               (select distinct parent 
+                               from DBViewCols where viewname = tabname )
+                       )
+                   )
+                   AND m.name  = c.nme
+               ) as "Column"
+       order by ColNumber);
+END;
+
+CREATE FUNCTION fDocColumns(tabname varchar(400))
+RETURNS TABLE (
+       enum    varchar(64),
+       nme             varchar(64),
+       type            varchar(32),
+       length  int,
+       unit            varchar(64),
+       ucd             varchar(64),
+       description     varchar(2048)
+)
+BEGIN
+    RETURN TABLE(
+    select  enum, nme, type, length, unit, ucd, description
+    from ( SELECT      
+       --distinct convert(sysnme,c.nme) as nme,
+                       c.nme as nme,
+                       t.nme as type,
+                       coalesce(d.length, c.length) as length,
+                       c.colid as ColNumber,
+                       m.unit,
+                       m.enum,
+                       m.ucd,
+                       m.description
+               FROM    sysobjects o,
+                       sysusers u,
+                       spt_datatype_info d,
+                       systypes t,
+                       syscolumns c,
+                       DBColumns m
+               WHERE o.nme = tabname
+                   AND o.uid = u.uid
+                   AND c.id = o.id
+                   AND t.xtype = c.xtype
+                   AND d.ss_dtype = c.xtype
+ --                AND coalesce(d."AUTO_INCREMENT",0) = 
+--                     coalesce(ColumnProperty (c.id, c.nme, 'IsIdentity'),0)
+                   AND (m.tablename = tabname 
+                       OR (m.tablename IN 
+                               (select distinct b.parent from DBViewCols a, 
DBViewCols b 
+                               where a.viewname = tabname AND a.parent = 
b.viewname)
+                               ) 
+                       OR (m.tablename IN 
+                               (select distinct parent 
+                               from DBViewCols where viewname = tabname )
+                       )
+                   )
+                   AND m.name  = c.nme
+               ) as "Column"
+       order by ColNumber);
+END;
+
+CREATE FUNCTION fDocFunctionParams (FunctionName varchar(400))
+RETURNS TABLE (
+       nme             varchar(64),
+       type            varchar(32),
+       length  int,
+       inout           varchar(8),
+       pnum            int
+)
+BEGIN
+    RETURN TABLE(
+    SELECT  nme, type, length, 
+       (case output when 'yes' then 'output' else 'input' end) as inout,
+       pnum
+    FROM ( 
+       SELECT  
+       --distinct convert(sysnme,c.nme) as nme,
+                       c.nme as nme,
+               t.nme as type,
+               coalesce(d.length, c.length) as length, 
+               case (substring(c.nme,1,1)) 
+                       when '' then 'yes' else 'no' end as input,   
+               case isoutparam  
+                       when 1 then 'yes' else 
+                           case substring(c.nme,1,1)  
+                               when '' then 'no' else 'yes' end
+                       end as output,
+               c.colid as pnum 
+               FROM    sysobjects o,
+                       sysusers u,
+                       spt_datatype_info d,
+                       systypes t,
+                       syscolumns c
+               WHERE o.nme =FunctionName
+                 AND o.uid = u.uid
+                 AND c.id = o.id
+                 AND t.xtype = c.xtype
+                 AND d.ss_dtype = c.xtype
+       --        AND coalesce(d."AUTO_INCREMENT",0) = 
+       --              coalesce(ColumnProperty (c.id, c.nme, 'IsIdentity'),0)
+               ) as Param
+       order by output, pnum asc);
+END;
+
+
 
 ----------------------------------OTHERS------------------------------------
 
@@ -1602,3 +1750,269 @@
        RETURN (select sum(count)+count(*) from "Diagnostics");
 END;
 
+
+CREATE FUNCTION fSpecDescription(specId bigint)
+RETURNS varchar(1000)
+BEGIN
+       DECLARE itClass bigint, itZStatus bigint, itZWarning bigint ;
+       --
+       SET itClass  = (SELECT specClass FROM SpecObjAll WHERE 
specObjId=specId);
+       SET itZStatus = (SELECT zStatus   FROM SpecObjAll WHERE 
specObjId=specId);
+       SET itZWarning  = (SELECT zWarning  FROM SpecObjAll WHERE 
specObjId=specId);
+       RETURN  (select fSpecClassN(itClass)) ||'| '
+               ||(select fSpecZStatusN(itZStatus))||'|'
+               ||(select fSpecZWarningN(itZWarning))||'|';
+END;
+
+
+--CREATE FUNCTION fEnum(
+--     val binary(8), 
+--     type varchar(32), 
+--     length int)
+--RETURNS varchar(64)
+--BEGIN
+--    DECLARE vstr varchar(64),
+--     vbin4 binary(4),
+--     vint int;
+--   SET vbin4 = CAST(value as binary(4));
+--    SET vint  = cAST(value as int);
+    -- 
+--    IF type<>'binary'
+--     THEN SET vstr = CAST(vint as varchar(64));
+--    ELSE 
+--        IF length = 8
+--        THEN EXEC master..xp_varbintohexstr val, vstr OUTPUT;        
+--        ELSE  
+--         EXEC master..xp_varbintohexstr vbin4, vstr OUTPUT;
+          -- also handle the tinyint and smallint cases
+--            IF length = 2
+--               THEN SET vstr = CAST(vstr as varchar(6));
+--            ELSE 
+--                IF length=1
+--                 THEN SET vstr = CAST(vstr as varchar(4));
+--             END IF;
+--            END IF;
+--        END IF;
+--    END IF;
+--    RETURN vstr;
+--END;
+
+CREATE FUNCTION fFirstFieldBit()
+RETURNS BIGINT
+BEGIN
+    RETURN cast(0x0000000010000000 as bigint);
+END;
+
+--CREATE FUNCTION fObjID(objID bigint)
+--RETURNS BIGINT
+--BEGIN
+--    DECLARE firstfieldbit bigint;
+--    SET firstfieldbit = 0x0000000010000000;
+--    SET objID = objID & ~firstfieldbit;
+--    IF (select count_big(*) from PhotoTag WITH (nolock) where objID = objID) 
> 0
+--        THEN RETURN objID;
+--     ELSE(
+--             SET objID = objID + firstfieldbit;
+--             IF (select count_big(*) from PhotoTag WITH (nolock) where objID 
= objID) > 0
+--                     THEN RETURN objID;
+--             END IF;
+--     );
+--    END IF;
+--    RETURN cast(0 as bigint);
+--END;
+
+--CREATE FUNCTION fPrimaryObjID(objID bigint)
+--RETURNS BIGINT
+--BEGIN
+--    DECLARE firstfieldbit bigint;
+--    SET firstfieldbit = 0x0000000010000000;
+--    SET objID = objID & ~firstfieldbit;
+--    IF (select count_big(*) from PhotoPrimary WITH (nolock) where objID = 
objID) > 0
+--        THEN RETURN objID;
+--     ELSE (
+--             SET objID = objID + firstfieldbit;
+--                     IF (select count_big(*) from PhotoPrimary WITH (nolock) 
where objID = objID) > 0
+--                     THEN RETURN objID;
+--             END IF;
+--     );
+--    END IF;
+--    RETURN cast(0 as bigint);
+--END;
+
+--CREATE FUNCTION  fDatediffSec(strt date, now1 date) 
+--RETURNS float
+--BEGIN
+--  RETURN(datediff(millisecond, strt, now1)/1000.0);
+--END;                         -- End fDatediffSec()
+
+CREATE FUNCTION fRegionFuzz(d float, buffer float) 
+RETURNS float
+BEGIN 
+       DECLARE fuzzR float;
+       SET fuzzR = RADIANS(buffer/60.00000000);
+       -----------------------------------------
+       -- convert it to a normal form (blank separated trailing blank, upper 
case)
+       -----------------------------------------
+       IF d >  1 
+               THEN SET d = 1;
+       END IF;
+       IF d < -1 
+               THEN SET d = -1;
+       END IF;
+       CASE WHEN ACOS(d) + fuzzR <PI() 
+               THEN SET d = COS(ACOS(d)+fuzzR);
+               ELSE SET d = -1 ;
+       END CASE;
+       RETURN d;
+END;
+
+-----Missing Ones-----
+
+CREATE FUNCTION fRegionsContainingPointXYZ(x float, y float, z float, types 
VARCHAR(1000), buffer float)
+RETURNS TABLE( RegionID bigint, type varchar(16))
+BEGIN
+       ----------------------------------------------------
+       DECLARE TABLE region(
+               regionid bigint,
+               type varchar(16)
+       );
+       --
+               RETURN TABLE (SELECT R.regionID, R.type
+                    FROM  region as R);
+END;
+
+--CREATE FUNCTION fRegionsContainingPointXYZ(x float, y float, z float, types 
VARCHAR(1000), buffer float)
+--RETURNS TABLE(       RegionID bigint, type varchar(16))
+--BEGIN
+       ----------------------------------------------------
+--     DECLARE TABLE typesTable(
+--             type varchar(16) 
+--     );
+--     DECLARE TABLE region(
+--             regionid bigint,
+--             type varchar(16)
+--     );
+       ----------------------------------------------------
+--     SET types = REPLACE(types,',',' ');
+--     INSERT into typesTable (type)
+--         SELECT * FROM fTokenStringToTable(types);
+--     DECLARE rowcount int;
+--     SELECT count(*) into rowcount from fTokenStringToTable(types);
+--     IF (rowcount = 0) 
+--             THEN RETURN TABLE (SELECT R.regionID, R.type
+--                    FROM  region as R);
+--     END IF;
+       --
+--     INSERT into region
+--     SELECT regionid, min(type)
+--     FROM (
+--         select regionid, convexId, patch, type 
+--         from RegionConvex 
+--         where type in (select type from typesTable)
+--           and dbo.fDistanceArcminXYZ(x,y,z,x,y,z) <radius+buffer
+ --          and 
2*DEGREES(ASIN(sqrt(power(x-x,2)+power(y-y,2)+power(z-z,2))/2)) 
<(radius+buffer)/60
+--         ) o
+--     GROUP BY regionid;
+       ----------------------------------------------------
+--     IF buffer = 0.0
+--         THEN
+           -------------------------------------------------
+--             RETURN (
+--                 SELECT R.regionID, R.type
+--                 FROM  region as R 
+--                 WHERE EXISTS (
+--                     select convexid from Halfspace
+--                     where regionid=R.regionid
+--                     and convexid not in (
+--                         select convexid from HalfSpace h
+--                         where regionid=R.regionid
+--                         and x*h.x+y*h.y+z*h.z<h.c
+--                         )
+--                     ));
+           -------------------------------------------------
+--     END IF;
+           
+           -------------------------------------------------
+--     RETURN (
+--         SELECT R.regionID, R.type
+--         FROM  region as R 
+--         WHERE EXISTS (
+--             select convexid from Halfspace
+--             where regionid=R.regionid
+--             and convexid not in (
+--                 select convexid from HalfSpace h
+--                 where regionid=R.regionid
+--                 and x*h.x+y*h.y+z*h.z<fRegionFuzz(h.c,buffer)
+--                 )
+--             ));
+           -------------------------------------------------
+--END;
+
+CREATE FUNCTION fRegionsContainingPointEq( ra float, deci float, types 
varchar(1000), buffer float)
+RETURNS TABLE( regionid bigint, type varchar(16))
+BEGIN
+       --------------------------------
+       -- transform to xyz coordinates
+       --------------------------------
+       DECLARE x float, y float, z float;
+       SET x  = COS(RADIANS(deci))*COS(RADIANS(ra));
+       SET y  = COS(RADIANS(deci))*SIN(RADIANS(ra));
+       SET z  = SIN(RADIANS(deci));
+       -- call the xyz function
+       Return TABLE(
+           SELECT RegionID, type FROM 
fRegionsContainingPointXYZ(x,y,z,types,buffer) o);
+END
+
+;
+
+CREATE FUNCTION fFootprintEq(ra float, deci float, radius float)
+RETURNS TABLE ("type" varchar(16))
+BEGIN
+       RETURN TABLE (SELECT distinct type
+         FROM fRegionsContainingPointEq(ra, 
deci,'CHUNK,PRIMARY,TILE,SECTOR',radius) n);
+END;
+
+CREATE FUNCTION fGetUrlFitsCFrame(fiel bigint, filter varchar(4))
+RETURNS varchar(128)
+BEGIN
+       DECLARE link varchar(128), runn varchar(8), rerunn varchar(8),
+               camcoll varchar(8), fieldd varchar(8), run6 varchar(10);
+       SET link = (select value from SiteConstants where name='DataServerURL');
+       SET link = link || 'imaging/';
+       SELECT cast(run as varchar(8)) into runn
+           FROM Field WHERE fieldId=fiel;
+       SELECT cast(rerun as varchar(8)) into rerunn
+           FROM Field WHERE fieldId=fiel;
+       SELECT cast(camcol as varchar(8)) into camcoll
+           FROM Field WHERE fieldId=fiel;
+       SELECT cast(field as varchar(8)) into fieldd
+           FROM Field WHERE fieldId=fiel;
+       SET run6   = substring('000000',1,6-length(runn)) + runn;
+       SET fieldd = substring('0000',1,4-length(fieldd)) + fieldd;
+       RETURN   link || runn || '/' || rerunn || '/corr/' || camcoll || 
'/fpC-' || run6 || '-' || filter || camcoll || '-' || fieldd ||'.fit.gz';
+END;
+
+CREATE FUNCTION fGetUrlFitsMask(fielId bigint, filter varchar(4))
+RETURNS varchar(128)
+BEGIN
+       DECLARE link varchar(128), runn varchar(8), rerunn varchar(8),
+               camcoll varchar(8), fieldd varchar(8), run6 varchar(10);
+       select value into link from SiteConstants where name='DataServerURL';
+       SET link = link || 'imaging/';
+       SELECT  cast(run as varchar(8)) into runn
+           FROM Field
+           WHERE fieldId=fielId;
+       Select cast(rerun as varchar(8)) into rerunn
+           FROM Field
+           WHERE fieldId=fielId;
+       SELECT cast(camcol as varchar(8)) into camcoll
+           FROM Field
+           WHERE fieldId=fielId;
+       SELECT cast(field as varchar(8)) into fieldd
+           FROM Field
+           WHERE fieldId=fielId;
+       SET run6   = substring('000000',1,6-length(runn)) || runn;
+       SET fieldd = substring('0000',1,4-length(fieldd)) || fieldd;
+       RETURN   link || runn || '/' || rerunn || 
'/objcs/'||camcoll||'/fpM-'||run6||'-'||filter||camcoll||'-'||fieldd||'.fit.gz';
+END;
+


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins

Reply via email to