Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Additional spoly constructors? #95

Closed
@esabol

Description

@esabol

The spoly_deg() function can construct a spoly from an array of float8:

CREATE FUNCTION spoly_deg(float8[])
   RETURNS spoly
   AS 'MODULE_PATHNAME', 'spherepoly_deg'
   LANGUAGE 'c'
   IMMUTABLE STRICT;

(Aside: Why is this function not PARALLEL SAFE? Should it be?)

But there's no corresponding spoly constructor that takes an array of float8 in radians:

testdb=> SELECT spoly(ARRAY[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]);
ERROR:  function spoly(numeric[]) does not exist
LINE 1: SELECT spoly(ARRAY[1.0, 2.0, 3.0, 4.0, 5.0, 6.0]);
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

I don't want to use a temporary table to construct a spoly in my PLpgsql functions. It's horribly inefficient and doesn't scale when operating over very large tables. So that means I have to either convert my coordinates to degrees (only for spherepoly_deg() to convert them back to radians) in order to avoid that or construct a string to contain the array of coordinates and use the spoly constructor on the string.

Also, I think it would be nice if there was a constructor that takes an array of spoint as well, so that you can do this:

SELECT spoly([spoint(1.0, 2.0), spoint(3.0, 4.0), spoint(5.0, 6.0)]);

Should that be possible? What do you think?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions