File: q3c--1.8.0--2.0.0.sql

package info (click to toggle)
postgresql-q3c 2.0.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,548 kB
  • sloc: sql: 27,430; ansic: 3,908; python: 110; perl: 104; makefile: 101; sh: 17
file content (99 lines) | stat: -rw-r--r-- 3,945 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
\echo Use "CREATE EXTENSION q3c" to load this file. \quit


DROP FUNCTION q3c_sindist_pm(
       ra1 double precision, dec1 double precision,
       pmra1 double precision, pmdec1 double precision,
       epoch1 double precision, ra2 double precision, dec2 double precision,
       epoch2 double precision);

-- Importantly this is not strict 
DROP FUNCTION q3c_dist_pm(
       ra1 double precision, dec1 double precision,
       pmra1 double precision, pmdec1 double precision,
       epoch1 double precision, ra2 double precision, dec2 double precision,
       epoch2 double precision);

DROP FUNCTION q3c_nearby_pm_it(
       ra1 double precision, dec1 double precision, 
       pmra1 double precision, pmdec1 double precision,  
       maxepoch_delta double precision, rad double precision, flag integer);

DROP FUNCTION q3c_join_pm(
       left_ra double precision,  -- 1
       left_dec double precision,  -- 2
       left_pmra double precision, -- 3
       left_pmdec double precision, -- 4
       left_epoch  double precision, -- 5
       right_ra double precision, -- 6
       right_dec double precision, -- 7
       right_epoch double precision, -- 8
       max_epoch_delta double precision, --9 
       radius double precision -- 10
        );


CREATE OR REPLACE FUNCTION q3c_sindist_pm(
       ra1 double precision, dec1 double precision,
       pmra1 double precision, pmdec1 double precision,
       cosdec_flag integer,
       epoch1 double precision, ra2 double precision, dec2 double precision,
       epoch2 double precision)
        RETURNS double precision
        AS 'MODULE_PATHNAME', 'pgq3c_sindist_pm'
        LANGUAGE C IMMUTABLE COST 100;

-- Importantly this is not strict 
CREATE OR REPLACE FUNCTION q3c_dist_pm(
       ra1 double precision, dec1 double precision,
       pmra1 double precision, pmdec1 double precision,
       cosdec_flag int,
       epoch1 double precision, ra2 double precision, dec2 double precision,
       epoch2 double precision)
        RETURNS double precision
        AS 'MODULE_PATHNAME', 'pgq3c_dist_pm'
        LANGUAGE C IMMUTABLE COST 100;
-- Importantly this is not strict 

CREATE OR REPLACE FUNCTION q3c_nearby_pm_it(
       ra1 double precision, dec1 double precision, 
       pmra1 double precision, pmdec1 double precision,
       cosdec_flag int,
       maxepoch_delta double precision, rad double precision, flag integer)
        RETURNS bigint
        AS 'MODULE_PATHNAME', 'pgq3c_nearby_pm_it'
        LANGUAGE C IMMUTABLE COST 100; 
-- Importantly this is NOT as strict function because we accept nulls as pms

CREATE OR REPLACE FUNCTION q3c_join_pm(
       left_ra double precision,  -- 1
       left_dec double precision,  -- 2
       left_pmra double precision, -- 3
       left_pmdec double precision, -- 4
       cosdec_flag int, --5
       left_epoch  double precision, -- 6
       right_ra double precision, -- 7
       right_dec double precision, -- 8
       right_epoch double precision, -- 9
       max_epoch_delta double precision, -- 10
       radius double precision -- 11
        )

        RETURNS boolean AS
'
SELECT (
       ((q3c_ang2ipix($7,$8) >= q3c_nearby_pm_it($1,$2,$3,$4,$5,$10,$11,0)) AND
       (q3c_ang2ipix($7,$8)  <= q3c_nearby_pm_it($1,$2,$3,$4,$5,$10,$11,1)))
    OR 
       ((q3c_ang2ipix($7,$8) >= q3c_nearby_pm_it($1,$2,$3,$4,$5,$10,$11,2)) AND
       (q3c_ang2ipix($7,$8)  <= q3c_nearby_pm_it($1,$2,$3,$4,$5,$10,$11,3)))
    OR 
       ((q3c_ang2ipix($7,$8) >= q3c_nearby_pm_it($1,$2,$3,$4,$5,$10,$11,4)) AND
       (q3c_ang2ipix($7,$8)  <= q3c_nearby_pm_it($1,$2,$3,$4,$5,$10,$11,5)))
    OR 
       ((q3c_ang2ipix($7,$8) >= q3c_nearby_pm_it($1,$2,$3,$4,$5,$10,$11,6)) AND
       (q3c_ang2ipix($7,$8)  <= q3c_nearby_pm_it($1,$2,$3,$4,$5,$10,$11,7)))) 
    AND q3c_sindist_pm($1,$2,$3,$4,$5,$6,$7,$8,$9)<POW(SIN(RADIANS($11)/2),2)
    AND ($10::double precision ==<<>>== ($1,$2,$6,$7)::q3c_type) 
' LANGUAGE SQL IMMUTABLE;
-- not strict