{"kind": "type", "slug": "point", "name": "point", "major": "18", "snapshot": {"casts": [{"castfunc": "box(point)", "castmethod": "f", "castsource": "point", "casttarget": "box", "castcontext": "a"}, {"castfunc": "point(lseg)", "castmethod": "f", "castsource": "lseg", "casttarget": "point", "castcontext": "e"}, {"castfunc": "point(box)", "castmethod": "f", "castsource": "box", "casttarget": "point", "castcontext": "e"}, {"castfunc": "point(polygon)", "castmethod": "f", "castsource": "polygon", "casttarget": "point", "castcontext": "e"}, {"castfunc": "point(circle)", "castmethod": "f", "castsource": "circle", "casttarget": "point", "castcontext": "e"}], "facts": [{"label": "Catalog name", "value": "pg_catalog.point"}, {"label": "Type OID", "value": "600"}, {"label": "Type kind", "value": "Base type"}, {"label": "Declared length", "value": "16 bytes"}, {"label": "Storage strategy", "value": "plain"}, {"label": "Input function", "value": "point_in"}, {"label": "Output function", "value": "point_out"}, {"label": "Documented declaration", "value": "point"}, {"label": "Storage Size", "value": "16 bytes"}, {"label": "Manual description", "value": "Point on a plane"}, {"label": "Representation", "value": "(x,y)"}], "ranges": [], "aliases": [], "catalog": {"oid": "600", "descr": "geometric point, format '(x,y)'", "typacl": "_null_", "typlen": "16", "typelem": "float8", "typname": "point", "typsend": "point_send", "typtype": "b", "typalign": "d", "typarray": "0", "typbyval": "f", "typdelim": "','", "typinput": "point_in", "typmodin": "-", "typndims": "0", "typowner": "POSTGRES", "typrelid": "0", "typmodout": "-", "typoutput": "point_out", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "point_recv", "typstorage": "p", "typbasetype": "0", "typcategory": "G", "typcollation": "0", "typisdefined": "t", "typnamespace": "pg_catalog", "typsubscript": "raw_array_subscript_handler", "typdefaultbin": "_null_", "array_type_oid": "1017", "typispreferred": "f", "array_type_name": "_point"}, "related": [{"url": "/wiki/catalog/pg_type/?v=18", "label": "pg_type catalog"}, {"url": "/wiki/catalog/pg_cast/?v=18", "label": "pg_cast catalog"}, {"url": "/wiki/catalog/pg_operator/?v=18", "label": "pg_operator catalog"}, {"url": "/wiki/catalog/pg_opclass/?v=18", "label": "pg_opclass catalog"}, {"url": "/wiki/type/arrays/?v=18", "label": "Arrays"}, {"url": "/wiki/indexam/gist/?v=18", "label": "gist index access method"}, {"url": "/wiki/indexam/spgist/?v=18", "label": "spgist index access method"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "revision": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f", "source_files": {"doc/src/sgml/datatype.sgml": "86328daa77e20d81d222376ec0306d9841a17104e436c08d138eb763aefb3700", "src/include/catalog/pg_am.h": "3426799df799f32163fcc0765f43dbdb5e88e626acf31284fef9fc6014b69d8e", "src/include/catalog/pg_am.dat": "b3cb86b102a42fb0024cbd99779c9897afb40d12a71f5cc5a0e5aee7ff2f9969", "src/include/catalog/pg_cast.h": "de585c7df687d698e7d1d100dce8a794ac9da52414ea48169191019178c8f053", "src/include/catalog/pg_proc.h": "f7d59f07c5b95e2f3c7141762a0f576e8a3af7581ba54c27537f4d500472bea5", "src/include/catalog/pg_type.h": "8fb198749fd82b6c1818a3c18455f226f66116fcfeb3d4959c65ce3fda22802e", "src/include/catalog/pg_range.h": "45546d952b5181f989bd9234721897fc2b37005c8e49ce2ddc156f26974c3ca4", "src/include/catalog/pg_cast.dat": "97911281ca2c81917394ccb2ec13367e37c6801fd461d5e1a3d2f28b911b46b2", "src/include/catalog/pg_proc.dat": "1f934ce80d460159dda137714374a35f9896315ea2476709cbb4da13b38ef95a", "src/include/catalog/pg_type.dat": "5f5887b75677cba2d4a1a0cfeb355df5ed91f85d385fac88bd8d7c605b3578f9", "src/include/catalog/pg_opclass.h": "9c218537806c8ef0398302faaca7f91315dfc1198c48706cebffb479b68defaf", "src/include/catalog/pg_range.dat": "5c2271f8e89e9378d1887204e5785060b77405b5f0ff3e6c719250c9c1dcfcc4", "src/include/catalog/pg_operator.h": "621b18cfffe102413d79b746ce7a10f77fc60fdd097bac34c22b31070d3ee3c4", "src/include/catalog/pg_opfamily.h": "e1f5fc8aebd3042df847455bf66bf755f768c2aa8a9b03d22f7ec8563eba59c0", "src/include/catalog/pg_opclass.dat": "4ee7d3619a6aa106e1c0db55de903931c7d11b1c60ba053a022519c55f8ee668", "src/include/catalog/pg_operator.dat": "5d35b9b2ef5f9797cc815263927ef8a12367fedace53e828b4e8b320e2a7f703", "src/include/catalog/pg_opfamily.dat": "3b694879027b858f2ecf1fa1152b7e30c6e15a216ba99c2384291c30e9d52311"}, "manual_sha256": {"arrays.html": "0e1d5c5a7b4a949d4439995f44f74ad4264e050d16eb9ad2a850fbaee04032df", "domains.html": "82d486973ccc35d14276627a67ac76b434452f23f9ed4d8aa3fbb01fdf285fc2", "datatype.html": "e581f67c74e42006289638c8659e9b338adbfd7f068bd8bf2b3be3880fcd2254", "rowtypes.html": "74f99e029c3a9edfd3e18810ba3c8cb66d3aada91eb67b86476560871e6617e9", "rangetypes.html": "e4960abc7ce8e51d794f94f1e57b099d30b7f75dd7f2b23a960eef91f6291c33", "datatype-bit.html": "c49124aad561636c18080b9e09572fde7785a6b9eae86f5a33283f0fd6774c37", "datatype-oid.html": "8b3360302225f08ae72716ce1804596de95b568e5d31f788cb4597427b28cc38", "datatype-xml.html": "061fc2295b7b69be704f0a741b8decd10ad721059f871fb0243c669bb54d7822", "datatype-enum.html": "cab38e53222e30cc94b24de4b33634fd22d7c93f58ebcf35f646c9b8da78fae8", "datatype-json.html": "650162a05b660146b500a205d523374d00aee117a6a6240d30262be51b6e33e5", "datatype-uuid.html": "292b307b3223c6182bdba687e7f69e6dca9038430143ad79d56327f6ed4c3246", "datatype-money.html": "8b29c14b90679683ac5c472b59a0a7e2853f32cc7db43fab417b2697a6879964", "functions-info.html": "78ac80bf81da2e4f4a33f3b850faa86f0f58ec54a083d6c31da557907de0df87", "catalog-pg-type.html": "ea9c9313bab8e92a7da18ebc50c7ff1f908dd80999a7e0ca3bbc82ba626c58d4", "datatype-binary.html": "0c03ec47b76e37888a3da7f5dcfd340128a5d356642a85185cc9ebe17856a904", "datatype-pg-lsn.html": "339172f5107cc7eb7139bec911277647219e92a532cebd0f3da0a5dacf8195af", "datatype-pseudo.html": "c7cf0b8214304bd8702c95f2142671ae5f0d631f83717f9c07d9e1f2579961b4", "datatype-boolean.html": "b633f663e6c8276e7056287640c413aa79dbc15d5353cee0d41653d58d376956", "datatype-numeric.html": "b74619f7ac2f1ca9f85c48073df78c33dd30e464e61baba6008634534edcb500", "sql-createdomain.html": "e94f927196de1b0ea1ce35cd4603c1f6f544439adcc0edf1c4222358e832245b", "datatype-datetime.html": "e366275d8b13845bfa4ef0d68faa093e5f3ecb708a1ec870cbcbf7e425b85699", "datatype-character.html": "c73eebe413ea709a7792e4cfc3cfe9fb68cb496ebe83c3ebaa9d09f8c40d0f73", "datatype-geometric.html": "0eb3053cfe7d6b0a4b5592c5d7af8d97cae527e87f063c5793413bcba5c14cd9", "datatype-net-types.html": "96846e641cc37727ddcd8b8a1aa0dbe33cd9787760a2b4efb0dcb9403d5be63f", "datatype-textsearch.html": "4b15e05be8b49a71b28aea22f2c46d0dbf639a91e7b4fe129a4c737c6daad47c"}, "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "/docs/18/datatype-geometric.html", "path": "datatype-geometric.html", "label": "PostgreSQL 18 English manual", "sha256": "0eb3053cfe7d6b0a4b5592c5d7af8d97cae527e87f063c5793413bcba5c14cd9"}, {"url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "Matching PostgreSQL source archive", "sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}], "coverage": "source inventory; exact declared input types for operator classes", "sections": [], "operators": [{"oid": "506", "descr": "deprecated, use |>> instead", "oprcom": "0", "oprcode": "point_above", "oprjoin": "positionjoinsel", "oprkind": "b", "oprleft": "point", "oprname": ">^", "oprrest": "positionsel", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "507", "descr": "is left of", "oprcom": "0", "oprcode": "point_left", "oprjoin": "positionjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<<", "oprrest": "positionsel", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "508", "descr": "is right of", "oprcom": "0", "oprcode": "point_right", "oprjoin": "positionjoinsel", "oprkind": "b", "oprleft": "point", "oprname": ">>", "oprrest": "positionsel", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "509", "descr": "deprecated, use <<| instead", "oprcom": "0", "oprcode": "point_below", "oprjoin": "positionjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<^", "oprrest": "positionsel", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "510", "descr": "same as", "oprcom": "~=(point,point)", "oprcode": "point_eq", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "~=", "oprrest": "eqsel", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "<>(point,point)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "511", "descr": "point inside box", "oprcom": "@>(box,point)", "oprcode": "on_pb", "oprjoin": "contjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<@", "oprrest": "contsel", "oprowner": "POSTGRES", "oprright": "box", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "433", "descr": "contains", "oprcom": "<@(point,box)", "oprcode": "box_contain_pt", "oprjoin": "contjoinsel", "oprkind": "b", "oprleft": "box", "oprname": "@>", "oprrest": "contsel", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "512", "descr": "point within closed path, or point on open path", "oprcom": "@>(path,point)", "oprcode": "on_ppath", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<@", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "path", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "517", "descr": "distance between", "oprcom": "<->(point,point)", "oprcode": "point_distance", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "613", "descr": "distance between", "oprcom": "<->(line,point)", "oprcode": "dist_pl", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "line", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "760", "descr": "distance between", "oprcom": "<->(point,line)", "oprcode": "dist_lp", "oprjoin": "-", "oprkind": "b", "oprleft": "line", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "614", "descr": "distance between", "oprcom": "<->(lseg,point)", "oprcode": "dist_ps", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "lseg", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "761", "descr": "distance between", "oprcom": "<->(point,lseg)", "oprcode": "dist_sp", "oprjoin": "-", "oprkind": "b", "oprleft": "lseg", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "615", "descr": "distance between", "oprcom": "<->(box,point)", "oprcode": "dist_pb", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "box", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "606", "descr": "distance between", "oprcom": "<->(point,box)", "oprcode": "dist_bp", "oprjoin": "-", "oprkind": "b", "oprleft": "box", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "618", "descr": "distance between", "oprcom": "<->(path,point)", "oprcode": "dist_ppath", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "path", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "784", "descr": "distance between", "oprcom": "<->(point,path)", "oprcode": "dist_pathp", "oprjoin": "-", "oprkind": "b", "oprleft": "path", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "713", "descr": "not equal", "oprcom": "<>(point,point)", "oprcode": "point_ne", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<>", "oprrest": "neqsel", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "~=(point,point)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "731", "descr": "add points (translate)", "oprcom": "+(point,point)", "oprcode": "point_add", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "+", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "732", "descr": "subtract points (translate)", "oprcom": "0", "oprcode": "point_sub", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "-", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "733", "descr": "multiply points (scale/rotate)", "oprcom": "*(point,point)", "oprcode": "point_mul", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "*", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "734", "descr": "divide points (scale/rotate)", "oprcom": "0", "oprcode": "point_div", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "/", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "736", "descr": "add (translate path)", "oprcom": "0", "oprcode": "path_add_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "path", "oprname": "+", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "path", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "737", "descr": "subtract (translate path)", "oprcom": "0", "oprcode": "path_sub_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "path", "oprname": "-", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "path", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "738", "descr": "multiply (rotate/scale path)", "oprcom": "0", "oprcode": "path_mul_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "path", "oprname": "*", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "path", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "739", "descr": "divide (rotate/scale path)", "oprcom": "0", "oprcode": "path_div_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "path", "oprname": "/", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "path", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "755", "descr": "contains", "oprcom": "<@(point,path)", "oprcode": "path_contain_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "path", "oprname": "@>", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "756", "descr": "is contained by", "oprcom": "@>(polygon,point)", "oprcode": "pt_contained_poly", "oprjoin": "contjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<@", "oprrest": "contsel", "oprowner": "POSTGRES", "oprright": "polygon", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "757", "descr": "contains", "oprcom": "<@(point,polygon)", "oprcode": "poly_contain_pt", "oprjoin": "contjoinsel", "oprkind": "b", "oprleft": "polygon", "oprname": "@>", "oprrest": "contsel", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "758", "descr": "is contained by", "oprcom": "@>(circle,point)", "oprcode": "pt_contained_circle", "oprjoin": "contjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<@", "oprrest": "contsel", "oprowner": "POSTGRES", "oprright": "circle", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "759", "descr": "contains", "oprcom": "<@(point,circle)", "oprcode": "circle_contain_pt", "oprjoin": "contjoinsel", "oprkind": "b", "oprleft": "circle", "oprname": "@>", "oprrest": "contsel", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "804", "descr": "add point to box (translate)", "oprcom": "0", "oprcode": "box_add", "oprjoin": "-", "oprkind": "b", "oprleft": "box", "oprname": "+", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "box", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "805", "descr": "subtract point from box (translate)", "oprcom": "0", "oprcode": "box_sub", "oprjoin": "-", "oprkind": "b", "oprleft": "box", "oprname": "-", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "box", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "806", "descr": "multiply box by point (scale)", "oprcom": "0", "oprcode": "box_mul", "oprjoin": "-", "oprkind": "b", "oprleft": "box", "oprname": "*", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "box", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "807", "descr": "divide box by point (scale)", "oprcom": "0", "oprcode": "box_div", "oprjoin": "-", "oprkind": "b", "oprleft": "box", "oprname": "/", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "box", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "808", "descr": "horizontally aligned", "oprcom": "?-(point,point)", "oprcode": "point_horiz", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "?-", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "809", "descr": "vertically aligned", "oprcom": "?|(point,point)", "oprcode": "point_vert", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "?|", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1516", "descr": "add", "oprcom": "0", "oprcode": "circle_add_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "circle", "oprname": "+", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "circle", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1517", "descr": "subtract", "oprcom": "0", "oprcode": "circle_sub_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "circle", "oprname": "-", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "circle", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1518", "descr": "multiply", "oprcom": "0", "oprcode": "circle_mul_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "circle", "oprname": "*", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "circle", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1519", "descr": "divide", "oprcom": "0", "oprcode": "circle_div_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "circle", "oprname": "/", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "circle", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1522", "descr": "distance between", "oprcom": "<->(circle,point)", "oprcode": "dist_pc", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "circle", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3291", "descr": "distance between", "oprcom": "<->(point,circle)", "oprcode": "dist_cpoint", "oprjoin": "-", "oprkind": "b", "oprleft": "circle", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3276", "descr": "distance between", "oprcom": "<->(polygon,point)", "oprcode": "dist_ppoly", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "polygon", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "3289", "descr": "distance between", "oprcom": "<->(point,polygon)", "oprcode": "dist_polyp", "oprjoin": "-", "oprkind": "b", "oprleft": "polygon", "oprname": "<->", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1546", "descr": "point on line", "oprcom": "0", "oprcode": "on_pl", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<@", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "line", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1547", "descr": "is contained by", "oprcom": "0", "oprcode": "on_ps", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<@", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "lseg", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1557", "descr": "closest point to A on B", "oprcom": "0", "oprcode": "close_pl", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "##", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "line", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1558", "descr": "closest point to A on B", "oprcom": "0", "oprcode": "close_ps", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "##", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "lseg", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "1559", "descr": "closest point to A on B", "oprcom": "0", "oprcode": "close_pb", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "##", "oprrest": "-", "oprowner": "POSTGRES", "oprright": "box", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "4161", "descr": "is above", "oprcom": "0", "oprcode": "point_above", "oprjoin": "positionjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "|>>", "oprrest": "positionsel", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}, {"oid": "4162", "descr": "is below", "oprcom": "0", "oprcode": "point_below", "oprjoin": "positionjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<<|", "oprrest": "positionsel", "oprowner": "POSTGRES", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f", "oprnamespace": "pg_catalog"}], "signature": "point", "description": ["geometric point on a plane"], "manual_html": "<div class=\"sect1\" id=\"DATATYPE-GEOMETRIC\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h2 class=\"title\">8.8. Geometric Types </h2>\n</div>\n</div>\n</div>\n\n<p>Geometric data types represent two-dimensional spatial objects. <a class=\"xref\" href=\"/docs/18/datatype-geometric.html#DATATYPE-GEO-TABLE\" title=\"Table 8.20. Geometric Types\">Table 8.20</a> shows the geometric types available in <span class=\"productname\">PostgreSQL</span>.</p>\n<div class=\"table\" id=\"DATATYPE-GEO-TABLE\">\n<p class=\"title\"><strong>Table 8.20. Geometric Types</strong></p>\n<div class=\"table-contents\">\n<table class=\"table\">\n\n\n\n\n\n\n<thead>\n<tr>\n<th>Name</th>\n<th>Storage Size</th>\n<th>Description</th>\n<th>Representation</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"type\">point</code></td>\n<td>16 bytes</td>\n<td>Point on a plane</td>\n<td>(x,y)</td>\n</tr>\n<tr>\n<td><code class=\"type\">line</code></td>\n<td>24 bytes</td>\n<td>Infinite line</td>\n<td>{A,B,C}</td>\n</tr>\n<tr>\n<td><code class=\"type\">lseg</code></td>\n<td>32 bytes</td>\n<td>Finite line segment</td>\n<td>[(x1,y1),(x2,y2)]</td>\n</tr>\n<tr>\n<td><code class=\"type\">box</code></td>\n<td>32 bytes</td>\n<td>Rectangular box</td>\n<td>(x1,y1),(x2,y2)</td>\n</tr>\n<tr>\n<td><code class=\"type\">path</code></td>\n<td>16+16n bytes</td>\n<td>Closed path (similar to polygon)</td>\n<td>((x1,y1),...)</td>\n</tr>\n<tr>\n<td><code class=\"type\">path</code></td>\n<td>16+16n bytes</td>\n<td>Open path</td>\n<td>[(x1,y1),...]</td>\n</tr>\n<tr>\n<td><code class=\"type\">polygon</code></td>\n<td>40+16n bytes</td>\n<td>Polygon (similar to closed path)</td>\n<td>((x1,y1),...)</td>\n</tr>\n<tr>\n<td><code class=\"type\">circle</code></td>\n<td>24 bytes</td>\n<td>Circle</td>\n<td>&lt;(x,y),r&gt; (center point and radius)</td>\n</tr>\n</tbody>\n</table>\n</div>\n</div><br class=\"table-break\">\n<p>In all these types, the individual coordinates are stored as <code class=\"type\">double precision</code> (<code class=\"type\">float8</code>) numbers.</p>\n<p>A rich set of functions and operators is available to perform various geometric operations such as scaling, translation, rotation, and determining intersections. They are explained in <a class=\"xref\" href=\"/docs/18/functions-geometry.html\" title=\"9.11. Geometric Functions and Operators\">Section 9.11</a>.</p>\n<div class=\"sect2\" id=\"DATATYPE-GEOMETRIC-POINTS\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.8.1. Points </h3>\n</div>\n</div>\n</div>\n<p>Points are the fundamental two-dimensional building block for geometric types. Values of type <code class=\"type\">point</code> are specified using either of the following syntaxes:</p>\n<pre class=\"synopsis\">( <em class=\"replaceable\"><code>x</code></em> , <em class=\"replaceable\"><code>y</code></em> )\n  <em class=\"replaceable\"><code>x</code></em> , <em class=\"replaceable\"><code>y</code></em>\n</pre>\n<p>where <em class=\"replaceable\"><code>x</code></em> and <em class=\"replaceable\"><code>y</code></em> are the respective coordinates, as floating-point numbers.</p>\n<p>Points are output using the first syntax.</p>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-LINE\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.8.2. Lines </h3>\n</div>\n</div>\n</div>\n<p>Lines are represented by the linear equation <em class=\"replaceable\"><code>A</code></em>x + <em class=\"replaceable\"><code>B</code></em>y + <em class=\"replaceable\"><code>C</code></em> = 0, where <em class=\"replaceable\"><code>A</code></em> and <em class=\"replaceable\"><code>B</code></em> are not both zero. Values of type <code class=\"type\">line</code> are input and output in the following form:</p>\n<pre class=\"synopsis\">{ <em class=\"replaceable\"><code>A</code></em>, <em class=\"replaceable\"><code>B</code></em>, <em class=\"replaceable\"><code>C</code></em> }\n</pre>\n<p>Alternatively, any of the following forms can be used for input:</p>\n<pre class=\"synopsis\">[ ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ( <em class=\"replaceable\"><code>x2</code></em> , <em class=\"replaceable\"><code>y2</code></em> ) ]\n( ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ( <em class=\"replaceable\"><code>x2</code></em> , <em class=\"replaceable\"><code>y2</code></em> ) )\n  ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ( <em class=\"replaceable\"><code>x2</code></em> , <em class=\"replaceable\"><code>y2</code></em> )\n    <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em>   ,   <em class=\"replaceable\"><code>x2</code></em> , <em class=\"replaceable\"><code>y2</code></em>\n</pre>\n<p>where <code class=\"literal\">(<em class=\"replaceable\"><code>x1</code></em>,<em class=\"replaceable\"><code>y1</code></em>)</code> and <code class=\"literal\">(<em class=\"replaceable\"><code>x2</code></em>,<em class=\"replaceable\"><code>y2</code></em>)</code> are two different points on the line.</p>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-LSEG\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.8.3. Line Segments </h3>\n</div>\n</div>\n</div>\n<p>Line segments are represented by pairs of points that are the endpoints of the segment. Values of type <code class=\"type\">lseg</code> are specified using any of the following syntaxes:</p>\n<pre class=\"synopsis\">[ ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ( <em class=\"replaceable\"><code>x2</code></em> , <em class=\"replaceable\"><code>y2</code></em> ) ]\n( ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ( <em class=\"replaceable\"><code>x2</code></em> , <em class=\"replaceable\"><code>y2</code></em> ) )\n  ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ( <em class=\"replaceable\"><code>x2</code></em> , <em class=\"replaceable\"><code>y2</code></em> )\n    <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em>   ,   <em class=\"replaceable\"><code>x2</code></em> , <em class=\"replaceable\"><code>y2</code></em>\n</pre>\n<p>where <code class=\"literal\">(<em class=\"replaceable\"><code>x1</code></em>,<em class=\"replaceable\"><code>y1</code></em>)</code> and <code class=\"literal\">(<em class=\"replaceable\"><code>x2</code></em>,<em class=\"replaceable\"><code>y2</code></em>)</code> are the end points of the line segment.</p>\n<p>Line segments are output using the first syntax.</p>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-GEOMETRIC-BOXES\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.8.4. Boxes </h3>\n</div>\n</div>\n</div>\n<p>Boxes are represented by pairs of points that are opposite corners of the box. Values of type <code class=\"type\">box</code> are specified using any of the following syntaxes:</p>\n<pre class=\"synopsis\">( ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ( <em class=\"replaceable\"><code>x2</code></em> , <em class=\"replaceable\"><code>y2</code></em> ) )\n  ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ( <em class=\"replaceable\"><code>x2</code></em> , <em class=\"replaceable\"><code>y2</code></em> )\n    <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em>   ,   <em class=\"replaceable\"><code>x2</code></em> , <em class=\"replaceable\"><code>y2</code></em>\n</pre>\n<p>where <code class=\"literal\">(<em class=\"replaceable\"><code>x1</code></em>,<em class=\"replaceable\"><code>y1</code></em>)</code> and <code class=\"literal\">(<em class=\"replaceable\"><code>x2</code></em>,<em class=\"replaceable\"><code>y2</code></em>)</code> are any two opposite corners of the box.</p>\n<p>Boxes are output using the second syntax.</p>\n<p>Any two opposite corners can be supplied on input, but the values will be reordered as needed to store the upper right and lower left corners, in that order.</p>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-GEOMETRIC-PATHS\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.8.5. Paths </h3>\n</div>\n</div>\n</div>\n<p>Paths are represented by lists of connected points. Paths can be <em class=\"firstterm\">open</em>, where the first and last points in the list are considered not connected, or <em class=\"firstterm\">closed</em>, where the first and last points are considered connected.</p>\n<p>Values of type <code class=\"type\">path</code> are specified using any of the following syntaxes:</p>\n<pre class=\"synopsis\">[ ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ... , ( <em class=\"replaceable\"><code>xn</code></em> , <em class=\"replaceable\"><code>yn</code></em> ) ]\n( ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ... , ( <em class=\"replaceable\"><code>xn</code></em> , <em class=\"replaceable\"><code>yn</code></em> ) )\n  ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ... , ( <em class=\"replaceable\"><code>xn</code></em> , <em class=\"replaceable\"><code>yn</code></em> )\n  ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em>   , ... ,   <em class=\"replaceable\"><code>xn</code></em> , <em class=\"replaceable\"><code>yn</code></em> )\n    <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em>   , ... ,   <em class=\"replaceable\"><code>xn</code></em> , <em class=\"replaceable\"><code>yn</code></em>\n</pre>\n<p>where the points are the end points of the line segments comprising the path. Square brackets (<code class=\"literal\">[]</code>) indicate an open path, while parentheses (<code class=\"literal\">()</code>) indicate a closed path. When the outermost parentheses are omitted, as in the third through fifth syntaxes, a closed path is assumed.</p>\n<p>Paths are output using the first or second syntax, as appropriate.</p>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-POLYGON\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.8.6. Polygons </h3>\n</div>\n</div>\n</div>\n<p>Polygons are represented by lists of points (the vertices of the polygon). Polygons are very similar to closed paths; the essential semantic difference is that a polygon is considered to include the area within it, while a path is not.</p>\n<p>An important implementation difference between polygons and paths is that the stored representation of a polygon includes its smallest bounding box. This speeds up certain search operations, although computing the bounding box adds overhead while constructing new polygons.</p>\n<p>Values of type <code class=\"type\">polygon</code> are specified using any of the following syntaxes:</p>\n<pre class=\"synopsis\">( ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ... , ( <em class=\"replaceable\"><code>xn</code></em> , <em class=\"replaceable\"><code>yn</code></em> ) )\n  ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em> ) , ... , ( <em class=\"replaceable\"><code>xn</code></em> , <em class=\"replaceable\"><code>yn</code></em> )\n  ( <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em>   , ... ,   <em class=\"replaceable\"><code>xn</code></em> , <em class=\"replaceable\"><code>yn</code></em> )\n    <em class=\"replaceable\"><code>x1</code></em> , <em class=\"replaceable\"><code>y1</code></em>   , ... ,   <em class=\"replaceable\"><code>xn</code></em> , <em class=\"replaceable\"><code>yn</code></em>\n</pre>\n<p>where the points are the end points of the line segments comprising the boundary of the polygon.</p>\n<p>Polygons are output using the first syntax.</p>\n</div>\n<div class=\"sect2\" id=\"DATATYPE-CIRCLE\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">8.8.7. Circles </h3>\n</div>\n</div>\n</div>\n<p>Circles are represented by a center point and radius. Values of type <code class=\"type\">circle</code> are specified using any of the following syntaxes:</p>\n<pre class=\"synopsis\">&lt; ( <em class=\"replaceable\"><code>x</code></em> , <em class=\"replaceable\"><code>y</code></em> ) , <em class=\"replaceable\"><code>r</code></em> &gt;\n( ( <em class=\"replaceable\"><code>x</code></em> , <em class=\"replaceable\"><code>y</code></em> ) , <em class=\"replaceable\"><code>r</code></em> )\n  ( <em class=\"replaceable\"><code>x</code></em> , <em class=\"replaceable\"><code>y</code></em> ) , <em class=\"replaceable\"><code>r</code></em>\n    <em class=\"replaceable\"><code>x</code></em> , <em class=\"replaceable\"><code>y</code></em>   , <em class=\"replaceable\"><code>r</code></em>\n</pre>\n<p>where <code class=\"literal\">(<em class=\"replaceable\"><code>x</code></em>,<em class=\"replaceable\"><code>y</code></em>)</code> is the center point and <em class=\"replaceable\"><code>r</code></em> is the radius of the circle.</p>\n<p>Circles are output using the first syntax.</p>\n</div>\n</div>", "manual_path": "datatype-geometric.html", "comparison_data": {"casts": [{"castfunc": "box(point)", "castmethod": "f", "castsource": "point", "casttarget": "box", "castcontext": "a"}, {"castfunc": "point(box)", "castmethod": "f", "castsource": "box", "casttarget": "point", "castcontext": "e"}, {"castfunc": "point(circle)", "castmethod": "f", "castsource": "circle", "casttarget": "point", "castcontext": "e"}, {"castfunc": "point(lseg)", "castmethod": "f", "castsource": "lseg", "casttarget": "point", "castcontext": "e"}, {"castfunc": "point(polygon)", "castmethod": "f", "castsource": "polygon", "casttarget": "point", "castcontext": "e"}], "facts": [{"label": "Catalog name", "value": "pg_catalog.point"}, {"label": "Declared length", "value": "16 bytes"}, {"label": "Documented declaration", "value": "point"}, {"label": "Input function", "value": "point_in"}, {"label": "Output function", "value": "point_out"}, {"label": "Representation", "value": "(x,y)"}, {"label": "Storage Size", "value": "16 bytes"}, {"label": "Storage strategy", "value": "plain"}, {"label": "Type OID", "value": "600"}, {"label": "Type kind", "value": "Base type"}], "ranges": [], "aliases": [], "catalog": {"typacl": "_null_", "typlen": "16", "typelem": "float8", "typname": "point", "typsend": "point_send", "typtype": "b", "typalign": "d", "typarray": "_point", "typbyval": "f", "typdelim": ",", "typinput": "point_in", "typmodin": "-", "typndims": "0", "typrelid": "0", "typmodout": "-", "typoutput": "point_out", "typtypmod": "-1", "typanalyze": "-", "typdefault": "_null_", "typnotnull": "f", "typreceive": "point_recv", "typstorage": "p", "typbasetype": "0", "typcategory": "G", "typcollation": "0", "typisdefined": "t", "typsubscript": "raw_array_subscript_handler", "typdefaultbin": "_null_", "typispreferred": "f", "array_type_name": "_point"}, "operators": [{"oprcom": "0", "oprcode": "box_add", "oprjoin": "-", "oprkind": "b", "oprleft": "box", "oprname": "+", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "box", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<@(point,box)", "oprcode": "box_contain_pt", "oprjoin": "contjoinsel", "oprkind": "b", "oprleft": "box", "oprname": "@>", "oprrest": "contsel", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "box_div", "oprjoin": "-", "oprkind": "b", "oprleft": "box", "oprname": "/", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "box", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "box_mul", "oprjoin": "-", "oprkind": "b", "oprleft": "box", "oprname": "*", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "box", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "box_sub", "oprjoin": "-", "oprkind": "b", "oprleft": "box", "oprname": "-", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "box", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "circle_add_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "circle", "oprname": "+", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "circle", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<@(point,circle)", "oprcode": "circle_contain_pt", "oprjoin": "contjoinsel", "oprkind": "b", "oprleft": "circle", "oprname": "@>", "oprrest": "contsel", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "circle_div_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "circle", "oprname": "/", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "circle", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "circle_mul_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "circle", "oprname": "*", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "circle", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "circle_sub_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "circle", "oprname": "-", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "circle", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "close_pb", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "##", "oprrest": "-", "oprright": "box", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "close_pl", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "##", "oprrest": "-", "oprright": "line", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "close_ps", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "##", "oprrest": "-", "oprright": "lseg", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(point,box)", "oprcode": "dist_bp", "oprjoin": "-", "oprkind": "b", "oprleft": "box", "oprname": "<->", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(point,circle)", "oprcode": "dist_cpoint", "oprjoin": "-", "oprkind": "b", "oprleft": "circle", "oprname": "<->", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(point,line)", "oprcode": "dist_lp", "oprjoin": "-", "oprkind": "b", "oprleft": "line", "oprname": "<->", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(point,path)", "oprcode": "dist_pathp", "oprjoin": "-", "oprkind": "b", "oprleft": "path", "oprname": "<->", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(box,point)", "oprcode": "dist_pb", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprright": "box", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(circle,point)", "oprcode": "dist_pc", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprright": "circle", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(line,point)", "oprcode": "dist_pl", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprright": "line", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(point,polygon)", "oprcode": "dist_polyp", "oprjoin": "-", "oprkind": "b", "oprleft": "polygon", "oprname": "<->", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(path,point)", "oprcode": "dist_ppath", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprright": "path", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(polygon,point)", "oprcode": "dist_ppoly", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprright": "polygon", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(lseg,point)", "oprcode": "dist_ps", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprright": "lseg", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(point,lseg)", "oprcode": "dist_sp", "oprjoin": "-", "oprkind": "b", "oprleft": "lseg", "oprname": "<->", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "@>(box,point)", "oprcode": "on_pb", "oprjoin": "contjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<@", "oprrest": "contsel", "oprright": "box", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "on_pl", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<@", "oprrest": "-", "oprright": "line", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "@>(path,point)", "oprcode": "on_ppath", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<@", "oprrest": "-", "oprright": "path", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "on_ps", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<@", "oprrest": "-", "oprright": "lseg", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "path_add_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "path", "oprname": "+", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "path", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<@(point,path)", "oprcode": "path_contain_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "path", "oprname": "@>", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "path_div_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "path", "oprname": "/", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "path", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "path_mul_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "path", "oprname": "*", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "path", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "path_sub_pt", "oprjoin": "-", "oprkind": "b", "oprleft": "path", "oprname": "-", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "path", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "point_above", "oprjoin": "positionjoinsel", "oprkind": "b", "oprleft": "point", "oprname": ">^", "oprrest": "positionsel", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "point_above", "oprjoin": "positionjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "|>>", "oprrest": "positionsel", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "+(point,point)", "oprcode": "point_add", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "+", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "point_below", "oprjoin": "positionjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<<|", "oprrest": "positionsel", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "point_below", "oprjoin": "positionjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<^", "oprrest": "positionsel", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<->(point,point)", "oprcode": "point_distance", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "<->", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "float8", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "point_div", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "/", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "~=(point,point)", "oprcode": "point_eq", "oprjoin": "eqjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "~=", "oprrest": "eqsel", "oprright": "point", "oprnegate": "<>(point,point)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "?-(point,point)", "oprcode": "point_horiz", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "?-", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "point_left", "oprjoin": "positionjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<<", "oprrest": "positionsel", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "*(point,point)", "oprcode": "point_mul", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "*", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<>(point,point)", "oprcode": "point_ne", "oprjoin": "neqjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<>", "oprrest": "neqsel", "oprright": "point", "oprnegate": "~=(point,point)", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "point_right", "oprjoin": "positionjoinsel", "oprkind": "b", "oprleft": "point", "oprname": ">>", "oprrest": "positionsel", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "0", "oprcode": "point_sub", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "-", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "point", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "?|(point,point)", "oprcode": "point_vert", "oprjoin": "-", "oprkind": "b", "oprleft": "point", "oprname": "?|", "oprrest": "-", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "<@(point,polygon)", "oprcode": "poly_contain_pt", "oprjoin": "contjoinsel", "oprkind": "b", "oprleft": "polygon", "oprname": "@>", "oprrest": "contsel", "oprright": "point", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "@>(circle,point)", "oprcode": "pt_contained_circle", "oprjoin": "contjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<@", "oprrest": "contsel", "oprright": "circle", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}, {"oprcom": "@>(polygon,point)", "oprcode": "pt_contained_poly", "oprjoin": "contjoinsel", "oprkind": "b", "oprleft": "point", "oprname": "<@", "oprrest": "contsel", "oprright": "polygon", "oprnegate": "0", "oprresult": "bool", "oprcanhash": "f", "oprcanmerge": "f"}], "operator_classes": [{"opcname": "kd_point_ops", "opcfamily": "spgist/kd_point_ops", "opcintype": "point", "opcmethod": "spgist", "opcdefault": "f", "opckeytype": "0"}, {"opcname": "point_ops", "opcfamily": "gist/point_ops", "opcintype": "point", "opcmethod": "gist", "opcdefault": "t", "opckeytype": "box"}, {"opcname": "quad_point_ops", "opcfamily": "spgist/quad_point_ops", "opcintype": "point", "opcmethod": "spgist", "opcdefault": "t", "opckeytype": "0"}]}, "comparison_hash": "b7519eec938265eb8ef2bcf03468b020b64dde620162932dadddfdacaf151056", "operator_classes": [{"opcname": "point_ops", "opcowner": "POSTGRES", "opcfamily": "gist/point_ops", "opcintype": "point", "opcmethod": "gist", "opcdefault": "t", "opckeytype": "box", "opcnamespace": "pg_catalog"}, {"opcname": "quad_point_ops", "opcowner": "POSTGRES", "opcfamily": "spgist/quad_point_ops", "opcintype": "point", "opcmethod": "spgist", "opcdefault": "t", "opckeytype": "0", "opcnamespace": "pg_catalog"}, {"opcname": "kd_point_ops", "opcowner": "POSTGRES", "opcfamily": "spgist/kd_point_ops", "opcintype": "point", "opcmethod": "spgist", "opcdefault": "f", "opckeytype": "0", "opcnamespace": "pg_catalog"}], "manual_documentation": "dedicated family chapter"}, "from": "17", "comparison": {"available": true, "changes": [], "prose_changed": true}}