LCOV - code coverage report
Current view: top level - src/backend/utils/adt - geo_selfuncs.c (source / functions) Coverage Total Hit
Test: Code coverage Lines: 100.0 % 12 12
Test Date: 2026-01-26 10:56:24 Functions: 100.0 % 6 6
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /*-------------------------------------------------------------------------
       2              :  *
       3              :  * geo_selfuncs.c
       4              :  *        Selectivity routines registered in the operator catalog in the
       5              :  *        "oprrest" and "oprjoin" attributes.
       6              :  *
       7              :  * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
       8              :  * Portions Copyright (c) 1994, Regents of the University of California
       9              :  *
      10              :  *
      11              :  * IDENTIFICATION
      12              :  *        src/backend/utils/adt/geo_selfuncs.c
      13              :  *
      14              :  *      XXX These are totally bogus.  Perhaps someone will make them do
      15              :  *      something reasonable, someday.
      16              :  *
      17              :  *-------------------------------------------------------------------------
      18              :  */
      19              : #include "postgres.h"
      20              : 
      21              : #include "utils/fmgrprotos.h"
      22              : 
      23              : 
      24              : /*
      25              :  *      Selectivity functions for geometric operators.  These are bogus -- unless
      26              :  *      we know the actual key distribution in the index, we can't make a good
      27              :  *      prediction of the selectivity of these operators.
      28              :  *
      29              :  *      Note: the values used here may look unreasonably small.  Perhaps they
      30              :  *      are.  For now, we want to make sure that the optimizer will make use
      31              :  *      of a geometric index if one is available, so the selectivity had better
      32              :  *      be fairly small.
      33              :  *
      34              :  *      In general, GiST needs to search multiple subtrees in order to guarantee
      35              :  *      that all occurrences of the same key have been found.  Because of this,
      36              :  *      the estimated cost for scanning the index ought to be higher than the
      37              :  *      output selectivity would indicate.  gistcostestimate(), over in selfuncs.c,
      38              :  *      ought to be adjusted accordingly --- but until we can generate somewhat
      39              :  *      realistic numbers here, it hardly matters...
      40              :  */
      41              : 
      42              : 
      43              : /*
      44              :  * Selectivity for operators that depend on area, such as "overlap".
      45              :  */
      46              : 
      47              : Datum
      48           34 : areasel(PG_FUNCTION_ARGS)
      49              : {
      50           34 :         PG_RETURN_FLOAT8(0.005);
      51              : }
      52              : 
      53              : Datum
      54           11 : areajoinsel(PG_FUNCTION_ARGS)
      55              : {
      56           11 :         PG_RETURN_FLOAT8(0.005);
      57              : }
      58              : 
      59              : /*
      60              :  *      positionsel
      61              :  *
      62              :  * How likely is a box to be strictly left of (right of, above, below)
      63              :  * a given box?
      64              :  */
      65              : 
      66              : Datum
      67          129 : positionsel(PG_FUNCTION_ARGS)
      68              : {
      69          129 :         PG_RETURN_FLOAT8(0.1);
      70              : }
      71              : 
      72              : Datum
      73           19 : positionjoinsel(PG_FUNCTION_ARGS)
      74              : {
      75           19 :         PG_RETURN_FLOAT8(0.1);
      76              : }
      77              : 
      78              : /*
      79              :  *      contsel -- How likely is a box to contain (be contained by) a given box?
      80              :  *
      81              :  * This is a tighter constraint than "overlap", so produce a smaller
      82              :  * estimate than areasel does.
      83              :  */
      84              : 
      85              : Datum
      86          110 : contsel(PG_FUNCTION_ARGS)
      87              : {
      88          110 :         PG_RETURN_FLOAT8(0.001);
      89              : }
      90              : 
      91              : Datum
      92            5 : contjoinsel(PG_FUNCTION_ARGS)
      93              : {
      94            5 :         PG_RETURN_FLOAT8(0.001);
      95              : }
        

Generated by: LCOV version 2.3.2-1