SET statement_timeout = 0; SET lock_timeout = 0; SET idle_in_transaction_session_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = on; SELECT pg_catalog.set_config('search_path', '', false); SET check_function_bodies = false; SET xmloption = content; SET client_min_messages = warning; SET row_security = off; COMMENT ON SCHEMA "public" IS 'standard public schema'; CREATE EXTENSION IF NOT EXISTS "pg_graphql" WITH SCHEMA "graphql"; CREATE EXTENSION IF NOT EXISTS "pg_stat_statements" WITH SCHEMA "extensions"; CREATE EXTENSION IF NOT EXISTS "pgcrypto" WITH SCHEMA "extensions"; CREATE EXTENSION IF NOT EXISTS "postgis" WITH SCHEMA "public"; CREATE EXTENSION IF NOT EXISTS "supabase_vault" WITH SCHEMA "vault"; CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA "extensions"; CREATE TYPE "public"."approle" AS ENUM ( 'platform_admin', 'client_admin', 'contractor_admin', 'sales_manager', 'project_manager', 'dispatcher', 'field_agent', 'sales_agent' ); ALTER TYPE "public"."approle" OWNER TO "postgres"; CREATE TYPE "public"."assignmentaction" AS ENUM ( 'assigned', 'accepted', 'rejected', 'dropped', 'reassigned', 'unassigned' ); ALTER TYPE "public"."assignmentaction" OWNER TO "postgres"; CREATE TYPE "public"."auditaction" AS ENUM ( 'create', 'read', 'update', 'delete', 'login', 'logout', 'login_failed', 'export', 'import', 'approve', 'reject', 'assign', 'unassign', 'archive', 'restore' ); ALTER TYPE "public"."auditaction" OWNER TO "postgres"; CREATE TYPE "public"."compensationtype" AS ENUM ( 'flat_rate', 'commission', 'hybrid', 'hourly', 'custom' ); ALTER TYPE "public"."compensationtype" OWNER TO "postgres"; CREATE TYPE "public"."contractorinvoicestatus" AS ENUM ( 'draft', 'sent', 'paid', 'partially_paid', 'overdue', 'disputed', 'cancelled', 'on_hold' ); ALTER TYPE "public"."contractorinvoicestatus" OWNER TO "postgres"; CREATE TYPE "public"."equipmentstatus" AS ENUM ( 'received', 'in_stock', 'issued', 'in_use', 'installed', 'returned', 'lost', 'damaged', 'disposed' ); ALTER TYPE "public"."equipmentstatus" OWNER TO "postgres"; CREATE TYPE "public"."financialentitytype" AS ENUM ( 'project', 'ticket_expense', 'user_payroll', 'inventory_purchase', 'contractor_invoice', 'advance_payment', 'petty_cash', 'other' ); ALTER TYPE "public"."financialentitytype" OWNER TO "postgres"; CREATE TYPE "public"."financialtransactionstatus" AS ENUM ( 'pending', 'approved', 'processing', 'paid', 'failed', 'rejected', 'cancelled', 'refunded' ); ALTER TYPE "public"."financialtransactionstatus" OWNER TO "postgres"; CREATE TYPE "public"."inventoryitemtype" AS ENUM ( 'tool', 'equipment', 'consumable', 'ppe' ); ALTER TYPE "public"."inventoryitemtype" OWNER TO "postgres"; CREATE TYPE "public"."invitation_method" AS ENUM ( 'whatsapp', 'email', 'both' ); ALTER TYPE "public"."invitation_method" OWNER TO "postgres"; CREATE TYPE "public"."invitation_status" AS ENUM ( 'pending', 'accepted', 'expired', 'cancelled' ); ALTER TYPE "public"."invitation_status" OWNER TO "postgres"; CREATE TYPE "public"."notificationchannel" AS ENUM ( 'email', 'sms', 'whatsapp', 'in_app', 'push' ); ALTER TYPE "public"."notificationchannel" OWNER TO "postgres"; CREATE TYPE "public"."notificationstatus" AS ENUM ( 'pending', 'sent', 'delivered', 'failed', 'read' ); ALTER TYPE "public"."notificationstatus" OWNER TO "postgres"; CREATE TYPE "public"."organizationtype" AS ENUM ( 'client', 'contractor' ); ALTER TYPE "public"."organizationtype" OWNER TO "postgres"; CREATE TYPE "public"."payoutmethod" AS ENUM ( 'mobile_money', 'bank_transfer', 'cash', 'other' ); ALTER TYPE "public"."payoutmethod" OWNER TO "postgres"; CREATE TYPE "public"."platformbillingfrequency" AS ENUM ( 'monthly', 'quarterly', 'semi_annual', 'annual', 'one_time' ); ALTER TYPE "public"."platformbillingfrequency" OWNER TO "postgres"; CREATE TYPE "public"."platforminvoicestatus" AS ENUM ( 'draft', 'sent', 'paid', 'partially_paid', 'overdue', 'cancelled', 'refunded' ); ALTER TYPE "public"."platforminvoicestatus" OWNER TO "postgres"; CREATE TYPE "public"."platformmetrictype" AS ENUM ( 'tickets_created', 'tickets_completed', 'users_active', 'storage_gb', 'api_calls', 'sms_sent', 'documents_uploaded', 'projects_active' ); ALTER TYPE "public"."platformmetrictype" OWNER TO "postgres"; CREATE TYPE "public"."platformsubscriptionstatus" AS ENUM ( 'trial', 'active', 'past_due', 'cancelled', 'suspended', 'expired' ); ALTER TYPE "public"."platformsubscriptionstatus" OWNER TO "postgres"; CREATE TYPE "public"."projectstatus" AS ENUM ( 'planning', 'active', 'on_hold', 'completed', 'cancelled' ); ALTER TYPE "public"."projectstatus" OWNER TO "postgres"; CREATE TYPE "public"."servicetype" AS ENUM ( 'ftth', 'fttb', 'fixed_wireless', 'dsl', 'adsl', 'cable', 'other' ); ALTER TYPE "public"."servicetype" OWNER TO "postgres"; CREATE TYPE "public"."subscriptionstatus" AS ENUM ( 'pending_activation', 'active', 'suspended', 'cancelled', 'terminated' ); ALTER TYPE "public"."subscriptionstatus" OWNER TO "postgres"; CREATE TYPE "public"."taskstatus" AS ENUM ( 'pending', 'assigned', 'in_progress', 'completed', 'cancelled', 'blocked' ); ALTER TYPE "public"."taskstatus" OWNER TO "postgres"; CREATE TYPE "public"."ticketpriority" AS ENUM ( 'low', 'normal', 'high', 'urgent' ); ALTER TYPE "public"."ticketpriority" OWNER TO "postgres"; CREATE TYPE "public"."ticketsource" AS ENUM ( 'sales_order', 'incident', 'task' ); ALTER TYPE "public"."ticketsource" OWNER TO "postgres"; CREATE TYPE "public"."ticketstatus" AS ENUM ( 'open', 'assigned', 'in_progress', 'pending_review', 'completed', 'cancelled' ); ALTER TYPE "public"."ticketstatus" OWNER TO "postgres"; CREATE TYPE "public"."tickettype" AS ENUM ( 'installation', 'support', 'infrastructure' ); ALTER TYPE "public"."tickettype" OWNER TO "postgres"; CREATE TYPE "public"."timesheetstatus" AS ENUM ( 'present', 'absent', 'on_leave', 'sick_leave', 'half_day' ); ALTER TYPE "public"."timesheetstatus" OWNER TO "postgres"; CREATE TYPE "public"."transactiontype" AS ENUM ( 'inflow', 'outflow' ); ALTER TYPE "public"."transactiontype" OWNER TO "postgres"; CREATE TYPE "public"."userstatus" AS ENUM ( 'invited', 'pending_setup', 'active', 'suspended' ); ALTER TYPE "public"."userstatus" OWNER TO "postgres"; CREATE OR REPLACE FUNCTION "public"."create_default_user_preferences"() RETURNS "trigger" LANGUAGE "plpgsql" AS $$ BEGIN INSERT INTO user_preferences (user_id) VALUES (NEW.id) ON CONFLICT (user_id) DO NOTHING; RETURN NEW; END; $$; ALTER FUNCTION "public"."create_default_user_preferences"() OWNER TO "postgres"; CREATE OR REPLACE FUNCTION "public"."expire_old_invitations"() RETURNS "void" LANGUAGE "plpgsql" AS $$ BEGIN UPDATE user_invitations SET status = 'expired', updated_at = timezone('utc'::text, now()) WHERE status = 'pending' AND expires_at < timezone('utc'::text, now()); END; $$; ALTER FUNCTION "public"."expire_old_invitations"() OWNER TO "postgres"; COMMENT ON FUNCTION "public"."expire_old_invitations"() IS 'Marks expired invitations as expired. Should be run periodically via cron job.'; CREATE OR REPLACE FUNCTION "public"."get_user_client_id"() RETURNS "uuid" LANGUAGE "sql" SECURITY DEFINER AS $$ SELECT client_id FROM Users WHERE id = auth.uid() AND deleted_at IS NULL; $$; ALTER FUNCTION "public"."get_user_client_id"() OWNER TO "postgres"; CREATE OR REPLACE FUNCTION "public"."get_user_contractor_id"() RETURNS "uuid" LANGUAGE "sql" SECURITY DEFINER AS $$ SELECT contractor_id FROM Users WHERE id = auth.uid() AND deleted_at IS NULL; $$; ALTER FUNCTION "public"."get_user_contractor_id"() OWNER TO "postgres"; CREATE OR REPLACE FUNCTION "public"."get_user_role"() RETURNS "public"."approle" LANGUAGE "sql" SECURITY DEFINER AS $$ SELECT role FROM Users WHERE id = auth.uid() AND deleted_at IS NULL; $$; ALTER FUNCTION "public"."get_user_role"() OWNER TO "postgres"; CREATE OR REPLACE FUNCTION "public"."manage_ticket_lifecycle"() RETURNS "trigger" LANGUAGE "plpgsql" AS $$ DECLARE v_current_time TIMESTAMP WITH TIME ZONE; BEGIN v_current_time := timezone('utc'::text, now()); IF (TG_OP = 'INSERT' OR NEW.due_date IS NULL) AND NEW.due_date IS NULL THEN CASE NEW.priority WHEN 'urgent' THEN NEW.due_date := NEW.created_at + INTERVAL '24 hours'; WHEN 'high' THEN NEW.due_date := NEW.created_at + INTERVAL '48 hours'; WHEN 'normal' THEN NEW.due_date := NEW.created_at + INTERVAL '72 hours'; WHEN 'low' THEN NEW.due_date := NEW.created_at + INTERVAL '7 days'; ELSE NEW.due_date := NEW.created_at + INTERVAL '72 hours'; END CASE; END IF; IF NEW.sla_target_date IS NULL AND NEW.due_date IS NOT NULL THEN NEW.sla_target_date := NEW.due_date; END IF; IF NEW.status NOT IN ('completed', 'cancelled') AND NEW.deleted_at IS NULL THEN IF NEW.source IS NOT NULL AND NEW.source_id IS NOT NULL AND NEW.ticket_type IS NOT NULL THEN NEW.dedup_key := MD5( NEW.source::TEXT || '::' || NEW.source_id::TEXT || '::' || NEW.ticket_type::TEXT ); END IF; ELSE NEW.dedup_key := NULL; END IF; IF NEW.status = 'completed' AND NEW.completed_at IS NOT NULL AND NEW.sla_target_date IS NOT NULL THEN IF NEW.completed_at > NEW.sla_target_date THEN NEW.sla_violated := TRUE; END IF; END IF; IF NEW.status NOT IN ('completed', 'cancelled') AND NEW.sla_target_date IS NOT NULL THEN IF v_current_time > NEW.sla_target_date THEN NEW.sla_violated := TRUE; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION "public"."manage_ticket_lifecycle"() OWNER TO "postgres"; CREATE OR REPLACE FUNCTION "public"."update_invitation_updated_at"() RETURNS "trigger" LANGUAGE "plpgsql" AS $$ BEGIN NEW.updated_at = timezone('utc'::text, now()); RETURN NEW; END; $$; ALTER FUNCTION "public"."update_invitation_updated_at"() OWNER TO "postgres"; SET default_tablespace = ''; SET default_table_access_method = "heap"; CREATE TABLE IF NOT EXISTS "public"."audit_logs" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "user_id" "uuid", "user_email" "text", "user_role" "public"."approle", "action" "public"."auditaction" NOT NULL, "entity_type" "text" NOT NULL, "entity_id" "uuid", "description" "text" NOT NULL, "changes" "jsonb" DEFAULT '{}'::"jsonb", "ip_address" "inet", "user_agent" "text", "request_id" "text", "latitude" double precision, "longitude" double precision, "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."audit_logs" OWNER TO "postgres"; COMMENT ON TABLE "public"."audit_logs" IS 'Comprehensive audit trail of all user actions for compliance and security.'; CREATE TABLE IF NOT EXISTS "public"."billing_plans" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "plan_name" "text" NOT NULL, "plan_code" "text" NOT NULL, "description" "text", "billing_frequency" "public"."platformbillingfrequency" NOT NULL, "price" numeric(12,2) NOT NULL, "currency" "text" DEFAULT 'USD'::"text", "features" "jsonb" DEFAULT '{}'::"jsonb", "trial_days" integer DEFAULT 0, "is_active" boolean DEFAULT true, "is_public" boolean DEFAULT true, "display_order" integer DEFAULT 0, "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_positive_price" CHECK (("price" >= (0)::numeric)), CONSTRAINT "chk_positive_trial" CHECK (("trial_days" >= 0)) ); ALTER TABLE "public"."billing_plans" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."clients" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "name" "text" NOT NULL, "description" "text", "industry" "text", "main_email" "text", "main_phone" "text", "website" "text", "is_active" boolean DEFAULT true, "default_sla_days" integer, "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."clients" OWNER TO "postgres"; COMMENT ON TABLE "public"."clients" IS 'Organizations that hire contractors for field service work (telecom operators, utilities, etc.)'; CREATE TABLE IF NOT EXISTS "public"."contractor_invoices" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "contractor_id" "uuid" NOT NULL, "client_id" "uuid" NOT NULL, "project_id" "uuid", "invoice_number" "text" NOT NULL, "invoice_title" "text", "billing_period_start" "date" NOT NULL, "billing_period_end" "date" NOT NULL, "subtotal" numeric(12,2) NOT NULL, "tax_rate" numeric(5,2) DEFAULT 0, "tax_amount" numeric(12,2) DEFAULT 0, "discount_amount" numeric(12,2) DEFAULT 0, "total_amount" numeric(12,2) NOT NULL, "amount_paid" numeric(12,2) DEFAULT 0, "amount_due" numeric(12,2) GENERATED ALWAYS AS (("total_amount" - "amount_paid")) STORED, "currency" "text" DEFAULT 'KES'::"text", "line_items" "jsonb" DEFAULT '[]'::"jsonb", "status" "public"."contractorinvoicestatus" DEFAULT 'draft'::"public"."contractorinvoicestatus", "issue_date" "date" NOT NULL, "due_date" "date" NOT NULL, "sent_date" "date", "paid_date" "date", "payment_method" "text", "payment_reference" "text", "payment_notes" "text", "notes" "text", "terms_and_conditions" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_by_user_id" "uuid", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, "version" integer DEFAULT 1 NOT NULL, "previous_version_id" "uuid", "is_latest_version" boolean DEFAULT true NOT NULL, "revision_notes" "text", CONSTRAINT "chk_positive_amounts" CHECK ((("subtotal" >= (0)::numeric) AND ("tax_amount" >= (0)::numeric) AND ("discount_amount" >= (0)::numeric) AND ("total_amount" >= (0)::numeric) AND ("amount_paid" >= (0)::numeric) AND ("amount_paid" <= "total_amount"))), CONSTRAINT "chk_valid_dates" CHECK ((("due_date" >= "issue_date") AND (("sent_date" IS NULL) OR ("sent_date" >= "issue_date")) AND (("paid_date" IS NULL) OR ("paid_date" >= "issue_date")))) ); ALTER TABLE "public"."contractor_invoices" OWNER TO "postgres"; COMMENT ON COLUMN "public"."contractor_invoices"."version" IS 'Version number for this invoice. Increments with each revision.'; COMMENT ON COLUMN "public"."contractor_invoices"."previous_version_id" IS 'Reference to the previous version of this invoice (for version history chain).'; COMMENT ON COLUMN "public"."contractor_invoices"."is_latest_version" IS 'TRUE if this is the current active version. Only one version should be latest.'; COMMENT ON COLUMN "public"."contractor_invoices"."revision_notes" IS 'Notes explaining what changed in this version (for audit trail).'; CREATE TABLE IF NOT EXISTS "public"."contractors" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "name" "text" NOT NULL, "description" "text", "website" "text", "main_email" "text", "main_phone" "text", "is_active" boolean DEFAULT true, "competencies" "jsonb" DEFAULT '{}'::"jsonb", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, "onboarding_status" "text", "onboarding_completed_at" timestamp with time zone ); ALTER TABLE "public"."contractors" OWNER TO "postgres"; COMMENT ON TABLE "public"."contractors" IS 'Organizations that execute field service work for clients'; CREATE TABLE IF NOT EXISTS "public"."customer_communications" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "customer_id" "uuid" NOT NULL, "ticket_id" "uuid", "communication_type" "text" NOT NULL, "direction" "text" NOT NULL, "outcome" "text", "summary" "text", "notes" "text", "user_id" "uuid", "contacted_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "requires_followup" boolean DEFAULT false, "followup_date" timestamp with time zone, "followup_notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_communication_direction" CHECK (("direction" = ANY (ARRAY['inbound'::"text", 'outbound'::"text"]))) ); ALTER TABLE "public"."customer_communications" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."customers" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "client_id" "uuid" NOT NULL, "customer_name" "text" NOT NULL, "id_number" "text", "business_name" "text", "phone_primary" "text" NOT NULL, "phone_alternative" "text", "email" "text", "project_region_id" "uuid", "primary_address_line1" "text", "primary_address_line2" "text", "primary_maps_link" "text", "primary_latitude" double precision, "primary_longitude" double precision, "is_active" boolean DEFAULT true, "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."customers" OWNER TO "postgres"; COMMENT ON TABLE "public"."customers" IS 'End-users who purchase telecom services from clients.'; CREATE TABLE IF NOT EXISTS "public"."documents" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "entity_type" "text" NOT NULL, "entity_id" "uuid" NOT NULL, "file_name" "text" NOT NULL, "file_type" "text", "file_size" bigint, "file_url" "text" NOT NULL, "document_type" "text", "document_category" "text", "version" integer DEFAULT 1, "is_latest_version" boolean DEFAULT true, "previous_version_id" "uuid", "description" "text", "tags" "jsonb" DEFAULT '[]'::"jsonb", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "uploaded_by_user_id" "uuid", "is_public" boolean DEFAULT false, "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, "storage_provider" "text" DEFAULT 'supabase'::"text", CONSTRAINT "documents_storage_provider_check" CHECK (("storage_provider" = ANY (ARRAY['cloudinary'::"text", 'supabase'::"text", 'local'::"text"]))) ); ALTER TABLE "public"."documents" OWNER TO "postgres"; COMMENT ON TABLE "public"."documents" IS 'File metadata storage with versioning support. Polymorphic entity ownership.'; CREATE TABLE IF NOT EXISTS "public"."incidents" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "customer_id" "uuid" NOT NULL, "subscription_id" "uuid", "project_id" "uuid", "incident_type" "text" NOT NULL, "issue_description" "text" NOT NULL, "priority" "text" DEFAULT 'normal'::"text", "project_region_id" "uuid", "status" "text" DEFAULT 'open'::"text", "is_ticket_created" boolean DEFAULT false, "resolved_at" timestamp with time zone, "resolution_description" "text", "cancellation_reason" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."incidents" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."inventory_assignments" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "project_inventory_distribution_id" "uuid" NOT NULL, "user_id" "uuid" NOT NULL, "ticket_id" "uuid", "unit_identifier" "text" NOT NULL, "unit_contents" "jsonb", "issued_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "issued_by_user_id" "uuid", "returned_at" timestamp with time zone, "return_condition" "text", "returned_to_user_id" "uuid", "return_notes" "text", "is_returned" boolean DEFAULT false, "installed_at" timestamp with time zone, "consumed_at" timestamp with time zone, "status" "public"."equipmentstatus" DEFAULT 'issued'::"public"."equipmentstatus", "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "version" integer DEFAULT 1 NOT NULL, "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."inventory_assignments" OWNER TO "postgres"; COMMENT ON TABLE "public"."inventory_assignments" IS 'Individual units/boxes issued to workers. Tracks returns for tools.'; COMMENT ON COLUMN "public"."inventory_assignments"."returned_at" IS 'When equipment/tool was returned (NULL if not yet returned)'; COMMENT ON COLUMN "public"."inventory_assignments"."return_condition" IS 'Condition of equipment/tool upon return: good, damaged, lost, worn'; COMMENT ON COLUMN "public"."inventory_assignments"."returned_to_user_id" IS 'User who received the returned equipment/tool (regional manager/dispatcher)'; COMMENT ON COLUMN "public"."inventory_assignments"."is_returned" IS 'TRUE if equipment/tool has been returned. Quick flag for querying unreturned items.'; CREATE TABLE IF NOT EXISTS "public"."invoices" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "organization_subscription_id" "uuid" NOT NULL, "invoice_number" "text" NOT NULL, "billing_period_start" "date" NOT NULL, "billing_period_end" "date" NOT NULL, "subtotal" numeric(12,2) NOT NULL, "tax_amount" numeric(12,2) DEFAULT 0, "discount_amount" numeric(12,2) DEFAULT 0, "total_amount" numeric(12,2) NOT NULL, "amount_paid" numeric(12,2) DEFAULT 0, "amount_due" numeric(12,2) GENERATED ALWAYS AS (("total_amount" - "amount_paid")) STORED, "currency" "text" DEFAULT 'USD'::"text", "line_items" "jsonb", "status" "public"."platforminvoicestatus" DEFAULT 'draft'::"public"."platforminvoicestatus", "issue_date" "date" NOT NULL, "due_date" "date" NOT NULL, "paid_date" "date", "payment_method" "text", "payment_reference" "text", "payment_notes" "text", "notes" "text", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_positive_amounts" CHECK ((("subtotal" >= (0)::numeric) AND ("tax_amount" >= (0)::numeric) AND ("discount_amount" >= (0)::numeric) AND ("total_amount" >= (0)::numeric) AND ("amount_paid" >= (0)::numeric))), CONSTRAINT "chk_valid_invoice_dates" CHECK ((("billing_period_end" >= "billing_period_start") AND ("due_date" >= "issue_date"))) ); ALTER TABLE "public"."invoices" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."notifications" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "user_id" "uuid" NOT NULL, "source_type" "text" NOT NULL, "source_id" "uuid", "title" "text" NOT NULL, "message" "text" NOT NULL, "notification_type" "text", "channel" "public"."notificationchannel" NOT NULL, "status" "public"."notificationstatus" DEFAULT 'pending'::"public"."notificationstatus", "sent_at" timestamp with time zone, "delivered_at" timestamp with time zone, "read_at" timestamp with time zone, "failed_at" timestamp with time zone, "failure_reason" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."notifications" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."organization_subscriptions" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "organization_type" "public"."organizationtype" NOT NULL, "organization_id" "uuid" NOT NULL, "billing_plan_id" "uuid" NOT NULL, "status" "public"."platformsubscriptionstatus" DEFAULT 'trial'::"public"."platformsubscriptionstatus", "start_date" "date" NOT NULL, "end_date" "date", "next_billing_date" "date", "trial_end_date" "date", "auto_renew" boolean DEFAULT true, "billing_email" "text", "billing_contact_name" "text", "billing_contact_phone" "text", "cancelled_at" timestamp with time zone, "cancelled_by_user_id" "uuid", "cancellation_reason" "text", "notes" "text", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_valid_dates" CHECK (((("end_date" IS NULL) OR ("end_date" >= "start_date")) AND (("next_billing_date" IS NULL) OR ("next_billing_date" >= "start_date")) AND (("trial_end_date" IS NULL) OR ("trial_end_date" >= "start_date")))) ); ALTER TABLE "public"."organization_subscriptions" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."payment_logs" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "project_finance_id" "uuid", "gateway_provider" "text" NOT NULL, "gateway_transaction_id" "text", "gateway_reference" "text", "event_type" "text" NOT NULL, "event_status" "text" NOT NULL, "request_payload" "jsonb", "response_payload" "jsonb", "error_code" "text", "error_message" "text", "amount_requested" numeric(12,2), "amount_processed" numeric(12,2), "currency" "text" DEFAULT 'KES'::"text", "gateway_fee" numeric(12,2), "recipient_phone" "text", "recipient_account" "text", "recipient_name" "text", "sender_phone" "text", "sender_account" "text", "sender_name" "text", "direction" "text" NOT NULL, "initiated_at" timestamp with time zone, "completed_at" timestamp with time zone, "retry_count" integer DEFAULT 0, "parent_log_id" "uuid", "ip_address" "text", "user_agent" "text", "device_info" "jsonb", "initiated_by_user_id" "uuid", "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."payment_logs" OWNER TO "postgres"; COMMENT ON TABLE "public"."payment_logs" IS 'Audit trail for all payment gateway interactions (M-Pesa, bank APIs, etc.).'; CREATE TABLE IF NOT EXISTS "public"."project_finance" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "project_id" "uuid" NOT NULL, "transaction_type" "public"."transactiontype" NOT NULL, "entity_type" "public"."financialentitytype" NOT NULL, "entity_id" "uuid", "transaction_date" "date" NOT NULL, "category" "text" NOT NULL, "description" "text" NOT NULL, "reference_number" "text", "amount" numeric(12,2) NOT NULL, "currency" "text" DEFAULT 'KES'::"text", "paid_to_user_id" "uuid", "paid_to_organization" "text", "received_from_user_id" "uuid", "received_from_organization" "text", "status" "public"."financialtransactionstatus" DEFAULT 'pending'::"public"."financialtransactionstatus", "requires_approval" boolean DEFAULT true, "approved_by_user_id" "uuid", "approved_at" timestamp with time zone, "approval_notes" "text", "paid_by_user_id" "uuid", "paid_at" timestamp with time zone, "payment_method" "text", "payment_reference" "text", "payment_gateway_provider" "text", "payment_gateway_transaction_id" "text", "payment_gateway_response" "jsonb", "payment_initiated_at" timestamp with time zone, "payment_completed_at" timestamp with time zone, "rejected_by_user_id" "uuid", "rejected_at" timestamp with time zone, "rejection_reason" "text", "cancelled_by_user_id" "uuid", "cancelled_at" timestamp with time zone, "cancellation_reason" "text", "receipt_document_id" "uuid", "supporting_documents" "jsonb" DEFAULT '[]'::"jsonb", "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "version" integer DEFAULT 1 NOT NULL, "created_by_user_id" "uuid" NOT NULL, "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_paid_to_party" CHECK (((("transaction_type" = 'outflow'::"public"."transactiontype") AND (("paid_to_user_id" IS NOT NULL) OR ("paid_to_organization" IS NOT NULL))) OR (("transaction_type" = 'inflow'::"public"."transactiontype") AND (("received_from_user_id" IS NOT NULL) OR ("received_from_organization" IS NOT NULL))) OR (("transaction_type" = 'inflow'::"public"."transactiontype") AND ("paid_to_user_id" IS NULL) AND ("paid_to_organization" IS NULL)))), CONSTRAINT "chk_payment_dates" CHECK (((("paid_at" IS NULL) OR ("paid_at" >= "transaction_date")) AND (("approved_at" IS NULL) OR ("approved_at" >= "transaction_date")) AND (("payment_completed_at" IS NULL) OR ("payment_initiated_at" IS NULL) OR ("payment_completed_at" >= "payment_initiated_at")))), CONSTRAINT "chk_positive_amount" CHECK (("amount" > (0)::numeric)), CONSTRAINT "chk_valid_entity" CHECK (((("entity_type" = 'project'::"public"."financialentitytype") AND ("entity_id" IS NULL)) OR (("entity_type" <> 'project'::"public"."financialentitytype") AND ("entity_id" IS NOT NULL)))) ); ALTER TABLE "public"."project_finance" OWNER TO "postgres"; COMMENT ON TABLE "public"."project_finance" IS 'Centralized project cash flow tracking with polymorphic entity support.'; CREATE TABLE IF NOT EXISTS "public"."project_inventory" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "project_id" "uuid" NOT NULL, "item_type" "public"."inventoryitemtype" NOT NULL, "equipment_type" "text" NOT NULL, "equipment_name" "text" NOT NULL, "description" "text", "quantity_received" numeric(10,2) NOT NULL, "quantity_distributed" numeric(10,2) DEFAULT 0, "quantity_at_office" numeric(10,2) GENERATED ALWAYS AS (("quantity_received" - "quantity_distributed")) STORED, "unit" "text" DEFAULT 'pieces'::"text", "has_serial_numbers" boolean DEFAULT false, "serial_numbers" "jsonb", "received_date" "date" NOT NULL, "received_by_user_id" "uuid", "delivery_note_reference" "text", "unit_cost" numeric(12,2), "total_cost" numeric(12,2), "currency" "text" DEFAULT 'KES'::"text", "status" "public"."equipmentstatus" DEFAULT 'received'::"public"."equipmentstatus", "is_active" boolean DEFAULT true, "notes" "text", "version" integer DEFAULT 1 NOT NULL, "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_positive_costs" CHECK (((("unit_cost" IS NULL) OR ("unit_cost" >= (0)::numeric)) AND (("total_cost" IS NULL) OR ("total_cost" >= (0)::numeric)))), CONSTRAINT "chk_positive_quantities" CHECK ((("quantity_received" >= (0)::numeric) AND ("quantity_distributed" >= (0)::numeric))), CONSTRAINT "chk_valid_distributed" CHECK (("quantity_distributed" <= "quantity_received")) ); ALTER TABLE "public"."project_inventory" OWNER TO "postgres"; COMMENT ON TABLE "public"."project_inventory" IS 'Equipment and materials provided by clients for projects.'; CREATE TABLE IF NOT EXISTS "public"."project_inventory_distribution" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "project_inventory_id" "uuid" NOT NULL, "project_region_id" "uuid" NOT NULL, "quantity_allocated" numeric(10,2) NOT NULL, "quantity_issued" numeric(10,2) DEFAULT 0, "quantity_installed" numeric(10,2) DEFAULT 0, "quantity_returned" numeric(10,2) DEFAULT 0, "quantity_lost" numeric(10,2) DEFAULT 0, "quantity_damaged" numeric(10,2) DEFAULT 0, "quantity_available" numeric(10,2) GENERATED ALWAYS AS ((("quantity_allocated" - "quantity_issued") + "quantity_returned")) STORED, "allocated_date" "date" NOT NULL, "allocated_by_user_id" "uuid", "received_by_user_id" "uuid", "serial_numbers" "jsonb", "is_active" boolean DEFAULT true, "notes" "text", "version" integer DEFAULT 1 NOT NULL, "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_positive_distribution_quantities" CHECK ((("quantity_allocated" >= (0)::numeric) AND ("quantity_issued" >= (0)::numeric) AND ("quantity_installed" >= (0)::numeric) AND ("quantity_returned" >= (0)::numeric) AND ("quantity_lost" >= (0)::numeric) AND ("quantity_damaged" >= (0)::numeric))), CONSTRAINT "chk_valid_issued_distribution" CHECK (("quantity_issued" <= ("quantity_allocated" + "quantity_returned"))) ); ALTER TABLE "public"."project_inventory_distribution" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."project_regions" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "project_id" "uuid" NOT NULL, "region_name" "text" NOT NULL, "region_code" "text", "description" "text", "country" "text" DEFAULT 'Kenya'::"text", "region" "text", "city" "text", "address_line1" "text", "address_line2" "text", "maps_link" "text", "latitude" double precision, "longitude" double precision, "manager_id" "uuid", "is_active" boolean DEFAULT true, "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, "hub_contact_persons" "jsonb" DEFAULT '[]'::"jsonb" ); ALTER TABLE "public"."project_regions" OWNER TO "postgres"; COMMENT ON COLUMN "public"."project_regions"."hub_contact_persons" IS 'Array of authorized contact persons who can view hub inventory via public tracking. Each entry: {"name": "John Doe", "phone": "+254712345678", "email": "john@example.com", "role": "Hub Coordinator"}. These people can request OTP and view hub inventory without needing a user account.'; CREATE TABLE IF NOT EXISTS "public"."project_roles" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "project_id" "uuid" NOT NULL, "role_name" "text" NOT NULL, "compensation_type" "public"."compensationtype" NOT NULL, "flat_rate_amount" numeric(12,2), "commission_percentage" numeric(5,2), "base_amount" numeric(12,2), "bonus_percentage" numeric(5,2), "hourly_rate" numeric(12,2), "description" "text", "is_active" boolean DEFAULT true, "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_positive_project_roles" CHECK (((("flat_rate_amount" IS NULL) OR ("flat_rate_amount" >= (0)::numeric)) AND (("commission_percentage" IS NULL) OR (("commission_percentage" >= (0)::numeric) AND ("commission_percentage" <= (100)::numeric))) AND (("base_amount" IS NULL) OR ("base_amount" >= (0)::numeric)) AND (("bonus_percentage" IS NULL) OR (("bonus_percentage" >= (0)::numeric) AND ("bonus_percentage" <= (100)::numeric))) AND (("hourly_rate" IS NULL) OR ("hourly_rate" >= (0)::numeric)))) ); ALTER TABLE "public"."project_roles" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."project_subcontractors" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "project_id" "uuid" NOT NULL, "subcontractor_id" "uuid" NOT NULL, "scope_description" "text", "project_region_id" "uuid", "contract_start_date" "date", "contract_end_date" "date", "contract_value" numeric(12,2), "currency" "text" DEFAULT 'KES'::"text", "is_active" boolean DEFAULT true, "activated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deactivated_at" timestamp with time zone, "deactivated_by_user_id" "uuid", "deactivation_reason" "text", "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."project_subcontractors" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."project_team" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "project_id" "uuid" NOT NULL, "user_id" "uuid" NOT NULL, "project_role_id" "uuid", "project_subcontractor_id" "uuid", "is_assigned_slot" boolean DEFAULT true, "project_region_id" "uuid", "assigned_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "removed_at" timestamp with time zone, "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."project_team" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."projects" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "client_id" "uuid" NOT NULL, "contractor_id" "uuid" NOT NULL, "title" "text" NOT NULL, "description" "text", "project_type" "text", "service_type" "public"."servicetype", "primary_manager_id" "uuid", "status" "public"."projectstatus" DEFAULT 'planning'::"public"."projectstatus", "planned_start_date" "date", "planned_end_date" "date", "actual_start_date" "date", "actual_end_date" "date", "is_closed" boolean DEFAULT false, "closed_at" timestamp with time zone, "closed_by_user_id" "uuid", "platform_billing_plan" "text", "is_billable" boolean DEFAULT true, "budget" "jsonb" DEFAULT '{}'::"jsonb", "inventory_requirements" "jsonb" DEFAULT '{}'::"jsonb", "photo_requirements" "jsonb" DEFAULT '[]'::"jsonb", "activation_requirements" "jsonb" DEFAULT '[]'::"jsonb", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_project_dates" CHECK (((("planned_end_date" IS NULL) OR ("planned_start_date" IS NULL) OR ("planned_end_date" >= "planned_start_date")) AND (("actual_end_date" IS NULL) OR ("actual_start_date" IS NULL) OR ("actual_end_date" >= "actual_start_date")))) ); ALTER TABLE "public"."projects" OWNER TO "postgres"; COMMENT ON TABLE "public"."projects" IS 'Work agreements between clients and contractors. Contains project-level configuration.'; CREATE TABLE IF NOT EXISTS "public"."sales_orders" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "customer_id" "uuid" NOT NULL, "project_id" "uuid" NOT NULL, "order_number" "text", "service_request_number" "text", "sales_agent_id" "uuid", "agent_name" "text", "agent_number" "text", "customer_preferred_package" "text", "package_price" numeric(12,2), "project_region_id" "uuid", "installation_address_line1" "text", "installation_address_line2" "text", "installation_maps_link" "text", "installation_latitude" double precision, "installation_longitude" double precision, "is_installation_required" boolean DEFAULT true, "preferred_installation_date" "date", "preferred_visit_date" "date", "preferred_visit_time" "text", "received_date" "date", "received_time" time without time zone, "status" "text" DEFAULT 'pending'::"text", "is_processed" boolean DEFAULT false, "is_ticket_created" boolean DEFAULT false, "processed_at" timestamp with time zone, "processed_by_user_id" "uuid", "cancellation_reason" "text", "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "submitted_by_user_id" "uuid", "submitted_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_positive_price" CHECK ((("package_price" IS NULL) OR ("package_price" >= (0)::numeric))) ); ALTER TABLE "public"."sales_orders" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."subscriptions" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "customer_id" "uuid" NOT NULL, "sales_order_id" "uuid", "project_id" "uuid", "service_type" "public"."servicetype" NOT NULL, "package_name" "text", "monthly_fee" numeric(12,2), "project_region_id" "uuid", "service_address_line1" "text", "service_address_line2" "text", "service_maps_link" "text", "service_latitude" double precision, "service_longitude" double precision, "equipment_details" "jsonb" DEFAULT '{}'::"jsonb", "activation_details" "jsonb" DEFAULT '{}'::"jsonb", "payment_method" "public"."payoutmethod", "mobile_money_provider" "text", "payment_phone" "text", "payment_account_number" "text", "payment_account_name" "text", "status" "public"."subscriptionstatus" DEFAULT 'pending_activation'::"public"."subscriptionstatus", "activation_date" "date", "cancellation_date" "date", "suspension_date" "date", "termination_date" "date", "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "activated_by_user_id" "uuid", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_cancellation_after_activation" CHECK ((("cancellation_date" IS NULL) OR ("activation_date" IS NULL) OR ("cancellation_date" >= "activation_date"))), CONSTRAINT "chk_positive_fee" CHECK ((("monthly_fee" IS NULL) OR ("monthly_fee" >= (0)::numeric))) ); ALTER TABLE "public"."subscriptions" OWNER TO "postgres"; COMMENT ON TABLE "public"."subscriptions" IS 'Active telecom services. Created after successful installation.'; CREATE TABLE IF NOT EXISTS "public"."system_configuration" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "config_key" "text" NOT NULL, "config_group" "text" NOT NULL, "config_value" "text" NOT NULL, "value_type" "text" NOT NULL, "display_name" "text" NOT NULL, "description" "text", "default_value" "text", "validation_rules" "jsonb" DEFAULT '{}'::"jsonb", "allowed_values" "text"[], "is_public" boolean DEFAULT false, "requires_restart" boolean DEFAULT false, "is_encrypted" boolean DEFAULT false, "last_modified_by" "uuid", "last_modified_at" timestamp with time zone, "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_value_type" CHECK (("value_type" = ANY (ARRAY['string'::"text", 'number'::"text", 'boolean'::"text", 'json'::"text", 'encrypted'::"text"]))) ); ALTER TABLE "public"."system_configuration" OWNER TO "postgres"; COMMENT ON TABLE "public"."system_configuration" IS 'Platform-wide configurable settings that admins can change without code deployment.'; CREATE TABLE IF NOT EXISTS "public"."tasks" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "project_id" "uuid" NOT NULL, "task_title" "text" NOT NULL, "task_description" "text", "task_type" "text", "location_name" "text", "project_region_id" "uuid", "task_address_line1" "text", "task_address_line2" "text", "task_maps_link" "text", "task_latitude" double precision, "task_longitude" double precision, "status" "public"."taskstatus" DEFAULT 'pending'::"public"."taskstatus", "priority" "public"."ticketpriority" DEFAULT 'normal'::"public"."ticketpriority", "scheduled_date" "date", "started_at" timestamp with time zone, "completed_at" timestamp with time zone, "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_by_user_id" "uuid", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_task_dates" CHECK ((("completed_at" IS NULL) OR ("started_at" IS NULL) OR ("completed_at" >= "started_at"))) ); ALTER TABLE "public"."tasks" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."ticket_assignments" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "ticket_id" "uuid" NOT NULL, "user_id" "uuid" NOT NULL, "action" "public"."assignmentaction" NOT NULL, "assigned_by_user_id" "uuid", "is_self_assigned" boolean DEFAULT false, "execution_order" integer, "planned_start_time" timestamp with time zone, "assigned_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "responded_at" timestamp with time zone, "journey_started_at" timestamp with time zone, "arrived_at" timestamp with time zone, "ended_at" timestamp with time zone, "journey_start_latitude" double precision, "journey_start_longitude" double precision, "arrival_latitude" double precision, "arrival_longitude" double precision, "arrival_verified" boolean DEFAULT false, "journey_location_history" "jsonb" DEFAULT '[]'::"jsonb", "reason" "text", "notes" "text", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."ticket_assignments" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."ticket_comments" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "ticket_id" "uuid" NOT NULL, "user_id" "uuid", "comment_text" "text" NOT NULL, "is_internal" boolean DEFAULT true, "comment_type" "text" DEFAULT 'note'::"text", "parent_comment_id" "uuid", "mentioned_user_ids" "uuid"[], "attachment_document_ids" "uuid"[], "is_edited" boolean DEFAULT false, "edited_at" timestamp with time zone, "edited_by_user_id" "uuid", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_comment_not_empty" CHECK (("length"(TRIM(BOTH FROM "comment_text")) > 0)) ); ALTER TABLE "public"."ticket_comments" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."ticket_expenses" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "ticket_assignment_id" "uuid" NOT NULL, "ticket_id" "uuid" NOT NULL, "incurred_by_user_id" "uuid" NOT NULL, "category" "text" NOT NULL, "description" "text" NOT NULL, "quantity" numeric(10,2), "unit" "text", "unit_cost" numeric(12,2), "total_cost" numeric(12,2) NOT NULL, "receipt_document_id" "uuid", "location_verified" boolean DEFAULT false, "verification_notes" "text", "is_approved" boolean DEFAULT false, "approved_by_user_id" "uuid", "approved_at" timestamp with time zone, "rejection_reason" "text", "is_paid" boolean DEFAULT false, "paid_to_user_id" "uuid", "paid_at" timestamp with time zone, "payment_reference" "text", "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, "payment_recipient_type" "text", "payment_method" "text", "payment_details" "jsonb", CONSTRAINT "chk_payment_method" CHECK ((("payment_method" IS NULL) OR ("payment_method" = ANY (ARRAY['send_money'::"text", 'till_number'::"text", 'paybill'::"text", 'pochi_la_biashara'::"text", 'bank_transfer'::"text", 'cash'::"text"])))), CONSTRAINT "chk_payment_recipient_type" CHECK ((("payment_recipient_type" IS NULL) OR ("payment_recipient_type" = ANY (ARRAY['agent'::"text", 'vendor'::"text"])))), CONSTRAINT "chk_positive_expense" CHECK (("total_cost" >= (0)::numeric)), CONSTRAINT "chk_positive_quantity" CHECK ((("quantity" IS NULL) OR ("quantity" >= (0)::numeric))), CONSTRAINT "chk_positive_unit_cost" CHECK ((("unit_cost" IS NULL) OR ("unit_cost" >= (0)::numeric))) ); ALTER TABLE "public"."ticket_expenses" OWNER TO "postgres"; COMMENT ON COLUMN "public"."ticket_expenses"."payment_recipient_type" IS 'Who receives the payment: agent (reimbursement) or vendor (direct payment)'; COMMENT ON COLUMN "public"."ticket_expenses"."payment_method" IS 'Payment method: send_money, till_number, paybill, pochi_la_biashara, bank_transfer, cash'; COMMENT ON COLUMN "public"."ticket_expenses"."payment_details" IS 'Method-specific payment details (JSONB): - send_money: {phone_number, recipient_name} - till_number: {till_number, business_name} - paybill: {business_number, account_number, business_name} - pochi_la_biashara: {phone_number, business_name} - bank_transfer: {bank_name, account_number, account_name, branch} - cash: {recipient_name, id_number}'; CREATE TABLE IF NOT EXISTS "public"."ticket_images" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "ticket_id" "uuid" NOT NULL, "document_id" "uuid" NOT NULL, "image_type" "text" NOT NULL, "description" "text", "captured_at" timestamp with time zone, "captured_by_user_id" "uuid", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, "linked_entity_type" "text", "linked_entity_id" "uuid", CONSTRAINT "chk_entity_type_valid" CHECK ((("linked_entity_type" IS NULL) OR ("linked_entity_type" = ANY (ARRAY['progress_report'::"text", 'incident_report'::"text", 'quality_inspection'::"text", 'expense_receipt'::"text", 'warranty_claim'::"text", 'customer_complaint'::"text"])))), CONSTRAINT "chk_image_link_complete" CHECK (((("linked_entity_type" IS NULL) AND ("linked_entity_id" IS NULL)) OR (("linked_entity_type" IS NOT NULL) AND ("linked_entity_id" IS NOT NULL)))) ); ALTER TABLE "public"."ticket_images" OWNER TO "postgres"; COMMENT ON COLUMN "public"."ticket_images"."linked_entity_type" IS 'Type of entity this image is linked to (progress_report, incident_report, etc.)'; COMMENT ON COLUMN "public"."ticket_images"."linked_entity_id" IS 'ID of the linked entity (polymorphic reference)'; CREATE TABLE IF NOT EXISTS "public"."ticket_incident_reports" ( "id" "uuid" DEFAULT "extensions"."uuid_generate_v4"() NOT NULL, "ticket_id" "uuid" NOT NULL, "reported_by_user_id" "uuid" NOT NULL, "incident_type" "text" NOT NULL, "severity" "text" NOT NULL, "incident_description" "text" NOT NULL, "immediate_action_taken" "text", "people_affected" "text"[], "witnesses" "text"[], "incident_latitude" numeric(10,7), "incident_longitude" numeric(10,7), "requires_followup" boolean DEFAULT false NOT NULL, "followup_notes" "text", "resolved" boolean DEFAULT false NOT NULL, "resolved_at" timestamp with time zone, "resolved_by_user_id" "uuid", "incident_occurred_at" timestamp with time zone NOT NULL, "created_at" timestamp with time zone DEFAULT "now"() NOT NULL, "updated_at" timestamp with time zone DEFAULT "now"() NOT NULL, "deleted_at" timestamp with time zone, CONSTRAINT "chk_incident_severity_valid" CHECK (("severity" = ANY (ARRAY['minor'::"text", 'moderate'::"text", 'major'::"text", 'critical'::"text"]))), CONSTRAINT "chk_incident_type_valid" CHECK (("incident_type" = ANY (ARRAY['safety'::"text", 'equipment_damage'::"text", 'customer_property_damage'::"text", 'injury'::"text", 'theft'::"text", 'vandalism'::"text", 'other'::"text"]))) ); ALTER TABLE "public"."ticket_incident_reports" OWNER TO "postgres"; COMMENT ON TABLE "public"."ticket_incident_reports" IS 'Incident reports for tickets - track accidents, safety issues, damage, and other incidents'; COMMENT ON COLUMN "public"."ticket_incident_reports"."incident_type" IS 'Type of incident: safety, equipment_damage, customer_property_damage, injury, theft, vandalism, other'; COMMENT ON COLUMN "public"."ticket_incident_reports"."severity" IS 'Severity level: minor, moderate, major, critical'; COMMENT ON COLUMN "public"."ticket_incident_reports"."people_affected" IS 'Array of names/IDs of people affected by incident'; COMMENT ON COLUMN "public"."ticket_incident_reports"."witnesses" IS 'Array of names/IDs of witnesses'; COMMENT ON COLUMN "public"."ticket_incident_reports"."requires_followup" IS 'Whether incident requires follow-up action'; COMMENT ON COLUMN "public"."ticket_incident_reports"."resolved" IS 'Whether incident has been resolved'; CREATE TABLE IF NOT EXISTS "public"."ticket_progress_reports" ( "id" "uuid" DEFAULT "extensions"."uuid_generate_v4"() NOT NULL, "ticket_id" "uuid" NOT NULL, "reported_by_user_id" "uuid" NOT NULL, "work_completed_description" "text" NOT NULL, "work_remaining_description" "text", "issues_encountered" "text", "issues_resolved" "text", "next_steps" "text", "estimated_completion_date" "date", "team_size_on_site" integer, "hours_worked" numeric(5,2), "report_latitude" numeric(10,7), "report_longitude" numeric(10,7), "location_verified" boolean DEFAULT false NOT NULL, "weather_conditions" "text", "notes" "text", "created_at" timestamp with time zone DEFAULT "now"() NOT NULL, "updated_at" timestamp with time zone DEFAULT "now"() NOT NULL, "deleted_at" timestamp with time zone, CONSTRAINT "chk_progress_positive_hours" CHECK ((("hours_worked" IS NULL) OR ("hours_worked" >= (0)::numeric))), CONSTRAINT "chk_progress_positive_team_size" CHECK ((("team_size_on_site" IS NULL) OR ("team_size_on_site" > 0))) ); ALTER TABLE "public"."ticket_progress_reports" OWNER TO "postgres"; COMMENT ON TABLE "public"."ticket_progress_reports" IS 'Progress reports for task tickets - supervisors document work completed, issues, and next steps'; COMMENT ON COLUMN "public"."ticket_progress_reports"."work_completed_description" IS 'What work was completed (required field)'; COMMENT ON COLUMN "public"."ticket_progress_reports"."work_remaining_description" IS 'What work is still left to do'; COMMENT ON COLUMN "public"."ticket_progress_reports"."issues_encountered" IS 'Problems or blockers encountered during work'; COMMENT ON COLUMN "public"."ticket_progress_reports"."issues_resolved" IS 'Problems that were resolved'; COMMENT ON COLUMN "public"."ticket_progress_reports"."next_steps" IS 'What needs to happen next'; COMMENT ON COLUMN "public"."ticket_progress_reports"."team_size_on_site" IS 'Number of workers present during this work period'; COMMENT ON COLUMN "public"."ticket_progress_reports"."hours_worked" IS 'Total man-hours worked'; COMMENT ON COLUMN "public"."ticket_progress_reports"."location_verified" IS 'Whether GPS location confirms on-site presence'; CREATE TABLE IF NOT EXISTS "public"."ticket_status_history" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "ticket_id" "uuid" NOT NULL, "ticket_assignment_id" "uuid", "old_status" "public"."ticketstatus", "new_status" "public"."ticketstatus" NOT NULL, "changed_by_user_id" "uuid", "change_reason" "text", "communication_method" "text", "location_latitude" double precision, "location_longitude" double precision, "location_accuracy" numeric(10,2), "location_name" "text", "location_verified" boolean DEFAULT false, "location_distance_meters" numeric(10,2), "changed_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."ticket_status_history" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."tickets" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "project_id" "uuid" NOT NULL, "source" "public"."ticketsource" NOT NULL, "source_id" "uuid", "ticket_name" "text", "ticket_type" "public"."tickettype" NOT NULL, "service_type" "public"."servicetype", "work_description" "text", "status" "public"."ticketstatus" DEFAULT 'open'::"public"."ticketstatus", "priority" "public"."ticketpriority" DEFAULT 'normal'::"public"."ticketpriority", "scheduled_date" "date", "scheduled_time_slot" "text", "due_date" timestamp with time zone, "sla_target_date" timestamp with time zone, "sla_violated" boolean DEFAULT false, "started_at" timestamp with time zone, "completed_at" timestamp with time zone, "is_invoiced" boolean DEFAULT false, "invoiced_at" timestamp with time zone, "contractor_invoice_id" "uuid", "project_region_id" "uuid", "work_location_latitude" double precision, "work_location_longitude" double precision, "work_location_accuracy" numeric(10,2), "work_location_verified" boolean DEFAULT false, "dedup_key" "text", "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "version" integer DEFAULT 1 NOT NULL, "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, "required_team_size" integer DEFAULT 1 NOT NULL, CONSTRAINT "chk_required_team_size" CHECK ((("required_team_size" >= 1) AND ("required_team_size" <= 10))), CONSTRAINT "chk_ticket_dates" CHECK ((("started_at" IS NULL) OR ("completed_at" IS NULL) OR ("completed_at" >= "started_at"))) ); ALTER TABLE "public"."tickets" OWNER TO "postgres"; COMMENT ON TABLE "public"."tickets" IS 'Work orders for field agents. Assignment handled via ticket_assignments table which links to users through project_team. Subcontractor relationship inherited from user->project_team->project_subcontractors.'; COMMENT ON COLUMN "public"."tickets"."required_team_size" IS 'Number of agents needed for this ticket (optimistic locking for ghost workers). Default 1 for solo work, 2+ for team work.'; CREATE TABLE IF NOT EXISTS "public"."timesheets" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "user_id" "uuid" NOT NULL, "project_id" "uuid", "work_date" "date" NOT NULL, "status" "public"."timesheetstatus" DEFAULT 'present'::"public"."timesheetstatus" NOT NULL, "check_in_time" timestamp with time zone, "check_out_time" timestamp with time zone, "hours_worked" numeric(5,2), "leave_reason" "text", "leave_approved_by_user_id" "uuid", "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, "tickets_assigned" integer DEFAULT 0 NOT NULL, "tickets_completed" integer DEFAULT 0 NOT NULL, "tickets_rescheduled" integer DEFAULT 0 NOT NULL, "tickets_cancelled" integer DEFAULT 0 NOT NULL, "tickets_rejected" integer DEFAULT 0 NOT NULL, "is_payroll_generated" boolean DEFAULT false NOT NULL, "payroll_id" "uuid", CONSTRAINT "chk_check_times" CHECK ((("check_out_time" IS NULL) OR ("check_in_time" IS NULL) OR ("check_out_time" >= "check_in_time"))), CONSTRAINT "chk_valid_hours" CHECK ((("hours_worked" IS NULL) OR (("hours_worked" >= (0)::numeric) AND ("hours_worked" <= (24)::numeric)))) ); ALTER TABLE "public"."timesheets" OWNER TO "postgres"; COMMENT ON COLUMN "public"."timesheets"."tickets_assigned" IS 'Number of tickets assigned to worker on this date (action=assigned in ticket_assignments)'; COMMENT ON COLUMN "public"."timesheets"."tickets_completed" IS 'Number of tickets completed by worker on this date (ticket status changed to completed)'; COMMENT ON COLUMN "public"."timesheets"."tickets_rescheduled" IS 'Number of tickets rescheduled by worker on this date'; COMMENT ON COLUMN "public"."timesheets"."tickets_cancelled" IS 'Number of tickets cancelled on this date'; COMMENT ON COLUMN "public"."timesheets"."tickets_rejected" IS 'Number of tickets rejected by worker on this date (action=rejected in ticket_assignments)'; COMMENT ON COLUMN "public"."timesheets"."is_payroll_generated" IS 'TRUE when this timesheet has been included in a payroll calculation'; COMMENT ON COLUMN "public"."timesheets"."payroll_id" IS 'Links to the payroll record that used this timesheet data'; CREATE TABLE IF NOT EXISTS "public"."usage_metrics" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "organization_type" "public"."organizationtype" NOT NULL, "organization_id" "uuid" NOT NULL, "metric_type" "public"."platformmetrictype" NOT NULL, "metric_value" numeric(12,2) NOT NULL, "billing_period_start" "date" NOT NULL, "billing_period_end" "date" NOT NULL, "recorded_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "notes" "text", "deleted_at" timestamp with time zone, CONSTRAINT "chk_positive_metric" CHECK (("metric_value" >= (0)::numeric)), CONSTRAINT "chk_valid_period" CHECK (("billing_period_end" >= "billing_period_start")) ); ALTER TABLE "public"."usage_metrics" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."user_asset_assignments" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "user_id" "uuid" NOT NULL, "asset_type" "text" NOT NULL, "asset_name" "text" NOT NULL, "asset_description" "text", "serial_number" "text", "registration_number" "text", "asset_value" numeric(12,2), "currency" "text" DEFAULT 'KES'::"text", "assigned_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "assigned_by_user_id" "uuid", "expected_return_at" timestamp with time zone, "returned_at" timestamp with time zone, "condition_on_assign" "text", "condition_on_return" "text", "is_active" boolean DEFAULT true, "notes" "text", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."user_asset_assignments" OWNER TO "postgres"; COMMENT ON TABLE "public"."user_asset_assignments" IS 'Long-term equipment/tools assigned to workers (vehicles, laptops, PPE)'; CREATE TABLE IF NOT EXISTS "public"."user_document_links" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "user_id" "uuid" NOT NULL, "document_id" "uuid" NOT NULL, "document_link_type" "text" NOT NULL, "issued_at" "date", "expires_at" "date", "notes" "text", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."user_document_links" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."user_financial_accounts" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "user_id" "uuid" NOT NULL, "account_name" "text" NOT NULL, "payout_method" "public"."payoutmethod" NOT NULL, "mobile_money_provider" "text", "mobile_money_phone" "text", "mobile_money_account_name" "text", "bank_name" "text", "bank_account_name" "text", "bank_account_number" "text", "bank_branch" "text", "bank_swift_code" "text", "payout_frequency" "text", "is_primary" boolean DEFAULT false, "is_active" boolean DEFAULT true, "is_verified" boolean DEFAULT false, "verified_at" timestamp with time zone, "verified_by_user_id" "uuid", "notes" "text", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone ); ALTER TABLE "public"."user_financial_accounts" OWNER TO "postgres"; COMMENT ON TABLE "public"."user_financial_accounts" IS 'Payout account details for workers (mobile money, bank accounts)'; CREATE TABLE IF NOT EXISTS "public"."user_invitations" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "email" "text" NOT NULL, "phone" "text", "invited_role" "public"."approle" NOT NULL, "client_id" "uuid", "contractor_id" "uuid", "token" "text" NOT NULL, "status" "public"."invitation_status" DEFAULT 'pending'::"public"."invitation_status", "invitation_method" "public"."invitation_method" DEFAULT 'whatsapp'::"public"."invitation_method", "invited_by_user_id" "uuid" NOT NULL, "invited_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "expires_at" timestamp with time zone NOT NULL, "accepted_at" timestamp with time zone, "whatsapp_sent" boolean DEFAULT false, "whatsapp_sent_at" timestamp with time zone, "whatsapp_error" "text", "email_sent" boolean DEFAULT false, "email_sent_at" timestamp with time zone, "email_error" "text", "invitation_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_invitation_contact" CHECK ((("email" IS NOT NULL) OR ("phone" IS NOT NULL))), CONSTRAINT "chk_invitation_org_link" CHECK (((("client_id" IS NOT NULL) AND ("contractor_id" IS NULL)) OR (("client_id" IS NULL) AND ("contractor_id" IS NOT NULL)) OR (("invited_role" = 'platform_admin'::"public"."approle") AND ("client_id" IS NULL) AND ("contractor_id" IS NULL)))) ); ALTER TABLE "public"."user_invitations" OWNER TO "postgres"; COMMENT ON TABLE "public"."user_invitations" IS 'User invitations with RLS enabled. Service role has full access, authenticated users have role-based access, public can validate and accept invitations.'; COMMENT ON COLUMN "public"."user_invitations"."token" IS 'Secure random token for invitation URL. Must be unique and cryptographically secure.'; COMMENT ON COLUMN "public"."user_invitations"."invitation_method" IS 'Preferred delivery method: whatsapp (default), email, or both'; COMMENT ON COLUMN "public"."user_invitations"."expires_at" IS 'Invitation expiry timestamp. Default 72 hours from creation.'; COMMENT ON COLUMN "public"."user_invitations"."deleted_at" IS 'Soft delete timestamp. NULL = active record.'; CREATE TABLE IF NOT EXISTS "public"."user_payroll" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "user_id" "uuid" NOT NULL, "project_id" "uuid" NOT NULL, "project_team_id" "uuid", "period_start_date" "date" NOT NULL, "period_end_date" "date" NOT NULL, "tickets_closed" integer DEFAULT 0, "hours_worked" numeric(10,2) DEFAULT 0, "days_worked" integer DEFAULT 0, "flat_rate_amount" numeric(12,2) DEFAULT 0, "ticket_earnings" numeric(12,2) DEFAULT 0, "bonus_amount" numeric(12,2) DEFAULT 0, "deductions" numeric(12,2) DEFAULT 0, "total_amount" numeric(12,2) NOT NULL, "calculation_notes" "text", "is_paid" boolean DEFAULT false, "paid_at" timestamp with time zone, "payment_method" "text", "payment_reference" "text", "paid_by_user_id" "uuid", "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "version" integer DEFAULT 1 NOT NULL, "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_positive_bonus" CHECK (("bonus_amount" >= (0)::numeric)), CONSTRAINT "chk_positive_days" CHECK (("days_worked" >= 0)), CONSTRAINT "chk_positive_deductions" CHECK (("deductions" >= (0)::numeric)), CONSTRAINT "chk_positive_flat_rate" CHECK (("flat_rate_amount" >= (0)::numeric)), CONSTRAINT "chk_positive_hours" CHECK (("hours_worked" >= (0)::numeric)), CONSTRAINT "chk_positive_ticket_earnings" CHECK (("ticket_earnings" >= (0)::numeric)), CONSTRAINT "chk_positive_tickets" CHECK (("tickets_closed" >= 0)), CONSTRAINT "chk_positive_total" CHECK (("total_amount" >= (0)::numeric)), CONSTRAINT "chk_valid_period" CHECK (("period_end_date" >= "period_start_date")) ); ALTER TABLE "public"."user_payroll" OWNER TO "postgres"; CREATE TABLE IF NOT EXISTS "public"."user_preferences" ( "id" "uuid" DEFAULT "gen_random_uuid"() NOT NULL, "user_id" "uuid" NOT NULL, "favorite_apps" "text"[] DEFAULT ARRAY['dashboard'::"text", 'tickets'::"text", 'projects'::"text", 'maps'::"text"], "theme" "text" DEFAULT 'light'::"text", "language" "text" DEFAULT 'en'::"text", "email_notifications" boolean DEFAULT true, "push_notifications" boolean DEFAULT true, "sms_notifications" boolean DEFAULT false, "dashboard_widgets" "text"[] DEFAULT ARRAY['recent_tickets'::"text", 'team_performance'::"text", 'sla_metrics'::"text"], "default_tickets_view" "text" DEFAULT 'list'::"text", "tickets_per_page" integer DEFAULT 25, "default_sort_field" "text" DEFAULT 'created_at'::"text", "default_sort_order" "text" DEFAULT 'desc'::"text", "default_map_zoom" integer DEFAULT 12, "default_map_center_lat" double precision, "default_map_center_lng" double precision, "additional_settings" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, "last_active_project_id" "uuid", CONSTRAINT "chk_favorite_apps_limit" CHECK (("array_length"("favorite_apps", 1) <= 6)), CONSTRAINT "chk_sort_order" CHECK (("default_sort_order" = ANY (ARRAY['asc'::"text", 'desc'::"text"]))), CONSTRAINT "chk_theme" CHECK (("theme" = ANY (ARRAY['light'::"text", 'dark'::"text", 'auto'::"text"]))), CONSTRAINT "chk_tickets_per_page" CHECK ((("tickets_per_page" >= 10) AND ("tickets_per_page" <= 100))), CONSTRAINT "chk_tickets_view" CHECK (("default_tickets_view" = ANY (ARRAY['list'::"text", 'kanban'::"text", 'calendar'::"text"]))) ); ALTER TABLE "public"."user_preferences" OWNER TO "postgres"; COMMENT ON TABLE "public"."user_preferences" IS 'User-specific UI preferences, favorites, theme, and settings'; COMMENT ON COLUMN "public"."user_preferences"."last_active_project_id" IS 'User''s last active/selected project ID for frontend context persistence'; CREATE TABLE IF NOT EXISTS "public"."users" ( "id" "uuid" NOT NULL, "client_id" "uuid", "contractor_id" "uuid", "role" "public"."approle" NOT NULL, "name" "text" NOT NULL, "phone" "text", "phone_alternate" "text", "email" "text", "id_number" "text", "display_name" "text", "is_active" boolean DEFAULT true, "status" "public"."userstatus" DEFAULT 'invited'::"public"."userstatus", "health_info" "jsonb" DEFAULT '{}'::"jsonb", "emergency_contact_name" "text", "emergency_contact_phone" "text", "ppe_sizes" "jsonb" DEFAULT '{}'::"jsonb", "current_location_name" "text", "current_country" "text" DEFAULT 'Kenya'::"text", "current_region" "text", "current_city" "text", "current_address_line1" "text", "current_address_line2" "text", "current_maps_link" "text", "current_latitude" double precision, "current_longitude" double precision, "current_location_updated_at" timestamp with time zone, "additional_metadata" "jsonb" DEFAULT '{}'::"jsonb", "created_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "updated_at" timestamp with time zone DEFAULT "timezone"('utc'::"text", "now"()), "deleted_at" timestamp with time zone, CONSTRAINT "chk_one_org_link" CHECK (((("client_id" IS NOT NULL) AND ("contractor_id" IS NULL)) OR (("client_id" IS NULL) AND ("contractor_id" IS NOT NULL)) OR (("role" = 'platform_admin'::"public"."approle") AND ("client_id" IS NULL) AND ("contractor_id" IS NULL)))) ); ALTER TABLE "public"."users" OWNER TO "postgres"; COMMENT ON TABLE "public"."users" IS 'User profiles. Invitation tracking happens in user_invitations table.'; COMMENT ON COLUMN "public"."users"."status" IS 'User lifecycle: invited → pending_setup → active → suspended. Invitation dates tracked in user_invitations table.'; COMMENT ON COLUMN "public"."users"."created_at" IS 'When user record was created (after accepting invitation or self-registration).'; ALTER TABLE ONLY "public"."audit_logs" ADD CONSTRAINT "auditlogs_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."billing_plans" ADD CONSTRAINT "billingplans_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."billing_plans" ADD CONSTRAINT "billingplans_plan_code_key" UNIQUE ("plan_code"); ALTER TABLE ONLY "public"."billing_plans" ADD CONSTRAINT "billingplans_plan_name_key" UNIQUE ("plan_name"); ALTER TABLE ONLY "public"."clients" ADD CONSTRAINT "clients_main_email_key" UNIQUE ("main_email"); ALTER TABLE ONLY "public"."clients" ADD CONSTRAINT "clients_name_key" UNIQUE ("name"); ALTER TABLE ONLY "public"."clients" ADD CONSTRAINT "clients_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."contractor_invoices" ADD CONSTRAINT "contractorinvoices_invoice_number_key" UNIQUE ("invoice_number"); ALTER TABLE ONLY "public"."contractor_invoices" ADD CONSTRAINT "contractorinvoices_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."contractors" ADD CONSTRAINT "contractors_main_email_key" UNIQUE ("main_email"); ALTER TABLE ONLY "public"."contractors" ADD CONSTRAINT "contractors_name_key" UNIQUE ("name"); ALTER TABLE ONLY "public"."contractors" ADD CONSTRAINT "contractors_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."customer_communications" ADD CONSTRAINT "customercommunications_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."customers" ADD CONSTRAINT "customers_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."documents" ADD CONSTRAINT "documents_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."incidents" ADD CONSTRAINT "incidents_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."inventory_assignments" ADD CONSTRAINT "inventoryassignments_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."invoices" ADD CONSTRAINT "invoices_invoice_number_key" UNIQUE ("invoice_number"); ALTER TABLE ONLY "public"."invoices" ADD CONSTRAINT "invoices_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."notifications" ADD CONSTRAINT "notifications_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."organization_subscriptions" ADD CONSTRAINT "organizationsubscriptions_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."payment_logs" ADD CONSTRAINT "paymentlogs_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."project_finance" ADD CONSTRAINT "projectfinance_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."project_inventory" ADD CONSTRAINT "projectinventory_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."project_inventory_distribution" ADD CONSTRAINT "projectinventorydistribution_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."project_regions" ADD CONSTRAINT "projectregions_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."project_roles" ADD CONSTRAINT "projectroles_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."projects" ADD CONSTRAINT "projects_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."project_subcontractors" ADD CONSTRAINT "projectsubcontractors_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."project_team" ADD CONSTRAINT "projectteam_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."sales_orders" ADD CONSTRAINT "salesorders_order_number_key" UNIQUE ("order_number"); ALTER TABLE ONLY "public"."sales_orders" ADD CONSTRAINT "salesorders_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."subscriptions" ADD CONSTRAINT "subscriptions_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."system_configuration" ADD CONSTRAINT "systemconfiguration_config_key_key" UNIQUE ("config_key"); ALTER TABLE ONLY "public"."system_configuration" ADD CONSTRAINT "systemconfiguration_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."tasks" ADD CONSTRAINT "tasks_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."ticket_incident_reports" ADD CONSTRAINT "ticket_incident_reports_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."ticket_progress_reports" ADD CONSTRAINT "ticket_progress_reports_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."ticket_assignments" ADD CONSTRAINT "ticketassignments_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."ticket_comments" ADD CONSTRAINT "ticketcomments_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."ticket_expenses" ADD CONSTRAINT "ticketexpenses_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."ticket_images" ADD CONSTRAINT "ticketimages_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."tickets" ADD CONSTRAINT "tickets_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."ticket_status_history" ADD CONSTRAINT "ticketstatushistory_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."timesheets" ADD CONSTRAINT "timesheets_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."usage_metrics" ADD CONSTRAINT "usagemetrics_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."user_invitations" ADD CONSTRAINT "user_invitations_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."user_invitations" ADD CONSTRAINT "user_invitations_token_key" UNIQUE ("token"); ALTER TABLE ONLY "public"."user_asset_assignments" ADD CONSTRAINT "userassetassignments_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."user_document_links" ADD CONSTRAINT "userdocumentlinks_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."user_document_links" ADD CONSTRAINT "userdocumentlinks_user_id_document_id_key" UNIQUE ("user_id", "document_id"); ALTER TABLE ONLY "public"."user_financial_accounts" ADD CONSTRAINT "userfinancialaccounts_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."user_payroll" ADD CONSTRAINT "userpayroll_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."user_preferences" ADD CONSTRAINT "userpreferences_pkey" PRIMARY KEY ("id"); ALTER TABLE ONLY "public"."user_preferences" ADD CONSTRAINT "userpreferences_user_id_key" UNIQUE ("user_id"); ALTER TABLE ONLY "public"."users" ADD CONSTRAINT "users_pkey" PRIMARY KEY ("id"); CREATE INDEX "idx_asset_assign_type" ON "public"."user_asset_assignments" USING "btree" ("asset_type", "is_active") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_asset_assign_user" ON "public"."user_asset_assignments" USING "btree" ("user_id", "is_active") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_audit_logs_action" ON "public"."audit_logs" USING "btree" ("action", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_audit_logs_changes_gin" ON "public"."audit_logs" USING "gin" ("changes"); CREATE INDEX "idx_audit_logs_created" ON "public"."audit_logs" USING "btree" ("created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_audit_logs_entity" ON "public"."audit_logs" USING "btree" ("entity_type", "entity_id", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_audit_logs_metadata_gin" ON "public"."audit_logs" USING "gin" ("additional_metadata"); CREATE INDEX "idx_audit_logs_user" ON "public"."audit_logs" USING "btree" ("user_id", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_billing_plans_active" ON "public"."billing_plans" USING "btree" ("is_active", "is_public", "display_order") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_billing_plans_features_gin" ON "public"."billing_plans" USING "gin" ("features"); CREATE INDEX "idx_clients_active" ON "public"."clients" USING "btree" ("is_active") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_clients_metadata_gin" ON "public"."clients" USING "gin" ("additional_metadata"); CREATE INDEX "idx_clients_name" ON "public"."clients" USING "btree" ("name") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_contractor_invoices_client" ON "public"."contractor_invoices" USING "btree" ("client_id", "status", "due_date") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_contractor_invoices_contractor" ON "public"."contractor_invoices" USING "btree" ("contractor_id", "status", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_contractor_invoices_latest" ON "public"."contractor_invoices" USING "btree" ("is_latest_version") WHERE (("is_latest_version" = true) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_contractor_invoices_line_items_gin" ON "public"."contractor_invoices" USING "gin" ("line_items"); CREATE INDEX "idx_contractor_invoices_metadata_gin" ON "public"."contractor_invoices" USING "gin" ("additional_metadata"); CREATE INDEX "idx_contractor_invoices_number" ON "public"."contractor_invoices" USING "btree" ("invoice_number") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_contractor_invoices_overdue" ON "public"."contractor_invoices" USING "btree" ("status", "due_date") WHERE (("status" = ANY (ARRAY['sent'::"public"."contractorinvoicestatus", 'overdue'::"public"."contractorinvoicestatus"])) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_contractor_invoices_previous_version" ON "public"."contractor_invoices" USING "btree" ("previous_version_id") WHERE ("previous_version_id" IS NOT NULL); CREATE INDEX "idx_contractor_invoices_project" ON "public"."contractor_invoices" USING "btree" ("project_id", "status") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_contractor_invoices_status" ON "public"."contractor_invoices" USING "btree" ("status", "due_date") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_contractor_invoices_version" ON "public"."contractor_invoices" USING "btree" ("id", "version"); CREATE INDEX "idx_contractors_active" ON "public"."contractors" USING "btree" ("is_active") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_contractors_competencies_gin" ON "public"."contractors" USING "gin" ("competencies"); CREATE INDEX "idx_contractors_metadata_gin" ON "public"."contractors" USING "gin" ("additional_metadata"); CREATE INDEX "idx_contractors_name" ON "public"."contractors" USING "btree" ("name") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_customer_comms_customer" ON "public"."customer_communications" USING "btree" ("customer_id", "contacted_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_customer_comms_followup" ON "public"."customer_communications" USING "btree" ("requires_followup", "followup_date") WHERE (("requires_followup" = true) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_customer_comms_metadata_gin" ON "public"."customer_communications" USING "gin" ("additional_metadata"); CREATE INDEX "idx_customer_comms_outcome" ON "public"."customer_communications" USING "btree" ("outcome", "contacted_at" DESC) WHERE (("outcome" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_customer_comms_ticket" ON "public"."customer_communications" USING "btree" ("ticket_id", "contacted_at" DESC) WHERE (("ticket_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_customer_comms_user" ON "public"."customer_communications" USING "btree" ("user_id", "contacted_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_customers_client" ON "public"."customers" USING "btree" ("client_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_customers_metadata_gin" ON "public"."customers" USING "gin" ("additional_metadata"); CREATE INDEX "idx_customers_phone" ON "public"."customers" USING "btree" ("phone_primary") WHERE (("phone_primary" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_customers_phone_alternative" ON "public"."customers" USING "btree" ("phone_alternative") WHERE (("phone_alternative" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE UNIQUE INDEX "idx_customers_phone_unique" ON "public"."customers" USING "btree" ("phone_primary") WHERE (("deleted_at" IS NULL) AND ("phone_primary" IS NOT NULL)); CREATE INDEX "idx_customers_region" ON "public"."customers" USING "btree" ("project_region_id") WHERE (("project_region_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_documents_metadata_gin" ON "public"."documents" USING "gin" ("additional_metadata"); CREATE INDEX "idx_documents_owner" ON "public"."documents" USING "btree" ("entity_type", "entity_id", "deleted_at"); CREATE INDEX "idx_documents_storage" ON "public"."documents" USING "btree" ("storage_provider", "file_type"); CREATE INDEX "idx_documents_tags_gin" ON "public"."documents" USING "gin" ("tags"); CREATE INDEX "idx_documents_type" ON "public"."documents" USING "btree" ("document_type", "entity_type") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_documents_uploaded_by" ON "public"."documents" USING "btree" ("uploaded_by_user_id", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_documents_version" ON "public"."documents" USING "btree" ("is_latest_version", "version") WHERE (("is_latest_version" = true) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_fin_accounts_primary" ON "public"."user_financial_accounts" USING "btree" ("user_id", "is_primary") WHERE (("is_primary" = true) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_fin_accounts_user" ON "public"."user_financial_accounts" USING "btree" ("user_id", "is_active") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_incidents_customer" ON "public"."incidents" USING "btree" ("customer_id", "status", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_incidents_metadata_gin" ON "public"."incidents" USING "gin" ("additional_metadata"); CREATE INDEX "idx_incidents_project" ON "public"."incidents" USING "btree" ("project_id", "status", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_incidents_region" ON "public"."incidents" USING "btree" ("project_region_id", "status") WHERE (("project_region_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_incidents_status" ON "public"."incidents" USING "btree" ("status", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_incidents_subscription" ON "public"."incidents" USING "btree" ("subscription_id", "status", "created_at" DESC) WHERE (("subscription_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_inventory_assignments_distribution" ON "public"."inventory_assignments" USING "btree" ("project_inventory_distribution_id", "status") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_inventory_assignments_metadata_gin" ON "public"."inventory_assignments" USING "gin" ("additional_metadata"); CREATE INDEX "idx_inventory_assignments_status" ON "public"."inventory_assignments" USING "btree" ("status", "issued_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_inventory_assignments_ticket" ON "public"."inventory_assignments" USING "btree" ("ticket_id") WHERE (("ticket_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE UNIQUE INDEX "idx_inventory_assignments_unique_unit" ON "public"."inventory_assignments" USING "btree" ("project_inventory_distribution_id", "unit_identifier") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_inventory_assignments_unit" ON "public"."inventory_assignments" USING "btree" ("unit_identifier") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_inventory_assignments_unit_contents_gin" ON "public"."inventory_assignments" USING "gin" ("unit_contents"); CREATE INDEX "idx_inventory_assignments_unreturned" ON "public"."inventory_assignments" USING "btree" ("user_id", "is_returned", "issued_at" DESC) WHERE (("is_returned" = false) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_inventory_assignments_user" ON "public"."inventory_assignments" USING "btree" ("user_id", "status") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_inventory_assignments_user_issued" ON "public"."inventory_assignments" USING "btree" ("user_id", "issued_at" DESC) WHERE (("status" = 'issued'::"public"."equipmentstatus") AND ("deleted_at" IS NULL)); CREATE INDEX "idx_inventory_assignments_version" ON "public"."inventory_assignments" USING "btree" ("id", "version") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_inventory_distribution_available" ON "public"."project_inventory_distribution" USING "btree" ("project_region_id", "quantity_available") WHERE (("quantity_available" > (0)::numeric) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_inventory_distribution_inventory" ON "public"."project_inventory_distribution" USING "btree" ("project_inventory_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_inventory_distribution_region" ON "public"."project_inventory_distribution" USING "btree" ("project_region_id", "is_active") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_inventory_distribution_serial_numbers_gin" ON "public"."project_inventory_distribution" USING "gin" ("serial_numbers"); CREATE INDEX "idx_inventory_distribution_version" ON "public"."project_inventory_distribution" USING "btree" ("id", "version") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_invitations_client" ON "public"."user_invitations" USING "btree" ("client_id") WHERE ("client_id" IS NOT NULL); CREATE INDEX "idx_invitations_contractor" ON "public"."user_invitations" USING "btree" ("contractor_id") WHERE ("contractor_id" IS NOT NULL); CREATE INDEX "idx_invitations_deleted" ON "public"."user_invitations" USING "btree" ("deleted_at") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_invitations_email" ON "public"."user_invitations" USING "btree" ("email", "status"); CREATE INDEX "idx_invitations_invited_by" ON "public"."user_invitations" USING "btree" ("invited_by_user_id"); CREATE INDEX "idx_invitations_phone" ON "public"."user_invitations" USING "btree" ("phone") WHERE ("phone" IS NOT NULL); CREATE INDEX "idx_invitations_status" ON "public"."user_invitations" USING "btree" ("status", "expires_at"); CREATE INDEX "idx_invitations_token" ON "public"."user_invitations" USING "btree" ("token") WHERE ("status" = 'pending'::"public"."invitation_status"); CREATE UNIQUE INDEX "idx_invitations_unique_pending" ON "public"."user_invitations" USING "btree" ("email", COALESCE(("client_id")::"text", ''::"text"), COALESCE(("contractor_id")::"text", ''::"text")) WHERE ("status" = 'pending'::"public"."invitation_status"); CREATE INDEX "idx_invoices_line_items_gin" ON "public"."invoices" USING "gin" ("line_items"); CREATE INDEX "idx_invoices_number" ON "public"."invoices" USING "btree" ("invoice_number") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_invoices_overdue" ON "public"."invoices" USING "btree" ("status", "due_date") WHERE (("status" = ANY (ARRAY['sent'::"public"."platforminvoicestatus", 'partially_paid'::"public"."platforminvoicestatus"])) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_invoices_status" ON "public"."invoices" USING "btree" ("status", "due_date") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_invoices_subscription" ON "public"."invoices" USING "btree" ("organization_subscription_id", "issue_date" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_notifications_metadata_gin" ON "public"."notifications" USING "gin" ("additional_metadata"); CREATE INDEX "idx_notifications_source" ON "public"."notifications" USING "btree" ("source_type", "source_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_notifications_status" ON "public"."notifications" USING "btree" ("status", "channel", "created_at") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_notifications_user" ON "public"."notifications" USING "btree" ("user_id", "status", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_org_subscriptions_org" ON "public"."organization_subscriptions" USING "btree" ("organization_type", "organization_id", "status") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_org_subscriptions_plan" ON "public"."organization_subscriptions" USING "btree" ("billing_plan_id", "status") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_org_subscriptions_status" ON "public"."organization_subscriptions" USING "btree" ("status", "next_billing_date") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_org_subscriptions_trial" ON "public"."organization_subscriptions" USING "btree" ("status", "trial_end_date") WHERE (("status" = 'trial'::"public"."platformsubscriptionstatus") AND ("deleted_at" IS NULL)); CREATE INDEX "idx_payment_logs_created" ON "public"."payment_logs" USING "btree" ("created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_payment_logs_device_info_gin" ON "public"."payment_logs" USING "gin" ("device_info"); CREATE INDEX "idx_payment_logs_direction" ON "public"."payment_logs" USING "btree" ("direction", "event_status", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_payment_logs_failed" ON "public"."payment_logs" USING "btree" ("gateway_provider", "event_status", "created_at" DESC) WHERE (("event_status" = 'failure'::"text") AND ("deleted_at" IS NULL)); CREATE INDEX "idx_payment_logs_finance" ON "public"."payment_logs" USING "btree" ("project_finance_id", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_payment_logs_gateway" ON "public"."payment_logs" USING "btree" ("gateway_provider", "gateway_transaction_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_payment_logs_gateway_ref" ON "public"."payment_logs" USING "btree" ("gateway_provider", "gateway_reference") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_payment_logs_metadata_gin" ON "public"."payment_logs" USING "gin" ("additional_metadata"); CREATE INDEX "idx_payment_logs_recipient" ON "public"."payment_logs" USING "btree" ("recipient_phone", "created_at" DESC) WHERE (("recipient_phone" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_payment_logs_request_payload_gin" ON "public"."payment_logs" USING "gin" ("request_payload"); CREATE INDEX "idx_payment_logs_response_payload_gin" ON "public"."payment_logs" USING "gin" ("response_payload"); CREATE INDEX "idx_payment_logs_retry" ON "public"."payment_logs" USING "btree" ("parent_log_id", "retry_count") WHERE (("parent_log_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_payment_logs_sender" ON "public"."payment_logs" USING "btree" ("sender_phone", "created_at" DESC) WHERE (("sender_phone" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_payment_logs_status" ON "public"."payment_logs" USING "btree" ("event_status", "event_type", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_finance_approval" ON "public"."project_finance" USING "btree" ("status", "requires_approval", "approved_at") WHERE (("requires_approval" = true) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_project_finance_category" ON "public"."project_finance" USING "btree" ("category", "project_id", "transaction_date" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_finance_entity" ON "public"."project_finance" USING "btree" ("entity_type", "entity_id") WHERE (("entity_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_project_finance_gateway" ON "public"."project_finance" USING "btree" ("payment_gateway_provider", "payment_gateway_transaction_id") WHERE (("payment_gateway_provider" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_project_finance_metadata_gin" ON "public"."project_finance" USING "gin" ("additional_metadata"); CREATE INDEX "idx_project_finance_paid_to" ON "public"."project_finance" USING "btree" ("paid_to_user_id", "status", "paid_at" DESC) WHERE (("paid_to_user_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_project_finance_payment_gateway_response_gin" ON "public"."project_finance" USING "gin" ("payment_gateway_response"); CREATE INDEX "idx_project_finance_pending" ON "public"."project_finance" USING "btree" ("project_id", "status", "transaction_date" DESC) WHERE (("status" = 'pending'::"public"."financialtransactionstatus") AND ("deleted_at" IS NULL)); CREATE INDEX "idx_project_finance_project" ON "public"."project_finance" USING "btree" ("project_id", "transaction_date" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_finance_received_from" ON "public"."project_finance" USING "btree" ("received_from_user_id", "status", "transaction_date" DESC) WHERE (("received_from_user_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_project_finance_status" ON "public"."project_finance" USING "btree" ("status", "transaction_date" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_finance_supporting_documents_gin" ON "public"."project_finance" USING "gin" ("supporting_documents"); CREATE INDEX "idx_project_finance_type" ON "public"."project_finance" USING "btree" ("transaction_type", "status", "transaction_date" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_finance_version" ON "public"."project_finance" USING "btree" ("id", "version") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_inventory_project" ON "public"."project_inventory" USING "btree" ("project_id", "item_type") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_inventory_serial_numbers_gin" ON "public"."project_inventory" USING "gin" ("serial_numbers"); CREATE INDEX "idx_project_inventory_status" ON "public"."project_inventory" USING "btree" ("status", "is_active") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_inventory_type" ON "public"."project_inventory" USING "btree" ("equipment_type", "is_active") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_inventory_version" ON "public"."project_inventory" USING "btree" ("id", "version") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_regions_hub_contacts_gin" ON "public"."project_regions" USING "gin" ("hub_contact_persons"); CREATE INDEX "idx_project_regions_manager" ON "public"."project_regions" USING "btree" ("manager_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_regions_metadata_gin" ON "public"."project_regions" USING "gin" ("additional_metadata"); CREATE INDEX "idx_project_regions_project" ON "public"."project_regions" USING "btree" ("project_id", "is_active") WHERE ("deleted_at" IS NULL); CREATE UNIQUE INDEX "idx_project_regions_unique" ON "public"."project_regions" USING "btree" ("project_id", "region_name") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_roles_project" ON "public"."project_roles" USING "btree" ("project_id", "is_active") WHERE ("deleted_at" IS NULL); CREATE UNIQUE INDEX "idx_project_roles_unique" ON "public"."project_roles" USING "btree" ("project_id", "role_name") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_subcontractors_metadata_gin" ON "public"."project_subcontractors" USING "gin" ("additional_metadata"); CREATE INDEX "idx_project_subcontractors_project" ON "public"."project_subcontractors" USING "btree" ("project_id", "is_active") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_subcontractors_subcontractor" ON "public"."project_subcontractors" USING "btree" ("subcontractor_id", "is_active") WHERE ("deleted_at" IS NULL); CREATE UNIQUE INDEX "idx_project_subcontractors_unique" ON "public"."project_subcontractors" USING "btree" ("project_id", "subcontractor_id", "project_region_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_team_project" ON "public"."project_team" USING "btree" ("project_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_team_role" ON "public"."project_team" USING "btree" ("project_role_id") WHERE ("deleted_at" IS NULL); CREATE UNIQUE INDEX "idx_project_team_unique" ON "public"."project_team" USING "btree" ("project_id", "user_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_project_team_user" ON "public"."project_team" USING "btree" ("user_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_projects_activation_requirements_gin" ON "public"."projects" USING "gin" ("activation_requirements"); CREATE INDEX "idx_projects_budget_gin" ON "public"."projects" USING "gin" ("budget"); CREATE INDEX "idx_projects_client" ON "public"."projects" USING "btree" ("client_id", "status") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_projects_contractor" ON "public"."projects" USING "btree" ("contractor_id", "status") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_projects_inventory_requirements_gin" ON "public"."projects" USING "gin" ("inventory_requirements"); CREATE INDEX "idx_projects_manager" ON "public"."projects" USING "btree" ("primary_manager_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_projects_metadata_gin" ON "public"."projects" USING "gin" ("additional_metadata"); CREATE INDEX "idx_projects_photo_requirements_gin" ON "public"."projects" USING "gin" ("photo_requirements"); CREATE INDEX "idx_projects_status" ON "public"."projects" USING "btree" ("status") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_sales_orders_customer" ON "public"."sales_orders" USING "btree" ("customer_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_sales_orders_metadata_gin" ON "public"."sales_orders" USING "gin" ("additional_metadata"); CREATE INDEX "idx_sales_orders_processing" ON "public"."sales_orders" USING "btree" ("is_processed", "is_ticket_created") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_sales_orders_project" ON "public"."sales_orders" USING "btree" ("project_id", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_sales_orders_region" ON "public"."sales_orders" USING "btree" ("project_region_id") WHERE (("project_region_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_sales_orders_sales_agent" ON "public"."sales_orders" USING "btree" ("sales_agent_id", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_sales_orders_status" ON "public"."sales_orders" USING "btree" ("status", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_subscriptions_activation_details_gin" ON "public"."subscriptions" USING "gin" ("activation_details"); CREATE INDEX "idx_subscriptions_customer" ON "public"."subscriptions" USING "btree" ("customer_id", "status") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_subscriptions_equipment_details_gin" ON "public"."subscriptions" USING "gin" ("equipment_details"); CREATE INDEX "idx_subscriptions_metadata_gin" ON "public"."subscriptions" USING "gin" ("additional_metadata"); CREATE INDEX "idx_subscriptions_project" ON "public"."subscriptions" USING "btree" ("project_id", "status") WHERE (("project_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_subscriptions_region" ON "public"."subscriptions" USING "btree" ("project_region_id") WHERE (("project_region_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_subscriptions_sales_order" ON "public"."subscriptions" USING "btree" ("sales_order_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_subscriptions_status" ON "public"."subscriptions" USING "btree" ("status", "activation_date") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_system_config_group" ON "public"."system_configuration" USING "btree" ("config_group", "config_key") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_system_config_key" ON "public"."system_configuration" USING "btree" ("config_key") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_system_config_public" ON "public"."system_configuration" USING "btree" ("is_public") WHERE (("is_public" = true) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_system_config_validation_rules_gin" ON "public"."system_configuration" USING "gin" ("validation_rules"); CREATE INDEX "idx_tasks_metadata_gin" ON "public"."tasks" USING "gin" ("additional_metadata"); CREATE INDEX "idx_tasks_project" ON "public"."tasks" USING "btree" ("project_id", "status") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_tasks_project_type" ON "public"."tasks" USING "btree" ("project_id", "task_type", "status") WHERE ("deleted_at" IS NULL); COMMENT ON INDEX "public"."idx_tasks_project_type" IS 'Speeds up queries for project tasks filtered by type and status'; CREATE INDEX "idx_tasks_region" ON "public"."tasks" USING "btree" ("project_region_id") WHERE (("project_region_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_tasks_status" ON "public"."tasks" USING "btree" ("status", "scheduled_date") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_tasks_task_type" ON "public"."tasks" USING "btree" ("task_type", "scheduled_date") WHERE (("deleted_at" IS NULL) AND ("task_type" IS NOT NULL)); COMMENT ON INDEX "public"."idx_tasks_task_type" IS 'Speeds up queries filtering tasks by type (delivery, installation, pickup, etc.)'; CREATE INDEX "idx_ticket_assignments_action" ON "public"."ticket_assignments" USING "btree" ("action", "assigned_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_assignments_arrived" ON "public"."ticket_assignments" USING "btree" ("arrived_at" DESC) WHERE (("arrived_at" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_ticket_assignments_created" ON "public"."ticket_assignments" USING "btree" ("created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_assignments_execution_order" ON "public"."ticket_assignments" USING "btree" ("user_id", "execution_order") WHERE (("execution_order" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_ticket_assignments_journey_location_history_gin" ON "public"."ticket_assignments" USING "gin" ("journey_location_history"); CREATE INDEX "idx_ticket_assignments_ticket" ON "public"."ticket_assignments" USING "btree" ("ticket_id", "assigned_at" DESC) WHERE ("deleted_at" IS NULL); CREATE UNIQUE INDEX "idx_ticket_assignments_unique" ON "public"."ticket_assignments" USING "btree" ("ticket_id", "user_id", "assigned_at") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_assignments_user" ON "public"."ticket_assignments" USING "btree" ("user_id", "action", "assigned_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_comments_internal" ON "public"."ticket_comments" USING "btree" ("ticket_id", "is_internal", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_comments_mentions" ON "public"."ticket_comments" USING "gin" ("mentioned_user_ids") WHERE (("mentioned_user_ids" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_ticket_comments_metadata_gin" ON "public"."ticket_comments" USING "gin" ("additional_metadata"); CREATE INDEX "idx_ticket_comments_parent" ON "public"."ticket_comments" USING "btree" ("parent_comment_id", "created_at") WHERE (("parent_comment_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_ticket_comments_ticket" ON "public"."ticket_comments" USING "btree" ("ticket_id", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_comments_user" ON "public"."ticket_comments" USING "btree" ("user_id", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_expenses_approval" ON "public"."ticket_expenses" USING "btree" ("is_approved", "approved_at" DESC) WHERE (("is_approved" = true) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_ticket_expenses_assignment" ON "public"."ticket_expenses" USING "btree" ("ticket_assignment_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_expenses_incurred_by" ON "public"."ticket_expenses" USING "btree" ("incurred_by_user_id", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_expenses_metadata_gin" ON "public"."ticket_expenses" USING "gin" ("additional_metadata"); CREATE INDEX "idx_ticket_expenses_payment" ON "public"."ticket_expenses" USING "btree" ("is_paid", "paid_at" DESC) WHERE (("is_paid" = true) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_ticket_expenses_payment_method" ON "public"."ticket_expenses" USING "btree" ("payment_method", "is_paid") WHERE (("deleted_at" IS NULL) AND ("is_approved" = true) AND ("is_paid" = false)); CREATE INDEX "idx_ticket_expenses_ticket" ON "public"."ticket_expenses" USING "btree" ("ticket_id", "is_approved") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_expenses_verification" ON "public"."ticket_expenses" USING "btree" ("location_verified", "is_approved") WHERE (("location_verified" = false) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_ticket_images_linked_entity" ON "public"."ticket_images" USING "btree" ("linked_entity_type", "linked_entity_id") WHERE (("linked_entity_type" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_ticket_images_ticket" ON "public"."ticket_images" USING "btree" ("ticket_id", "image_type") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_incident_date" ON "public"."ticket_incident_reports" USING "btree" ("incident_occurred_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_incident_severity" ON "public"."ticket_incident_reports" USING "btree" ("severity") WHERE (("deleted_at" IS NULL) AND ("resolved" = false)); CREATE INDEX "idx_ticket_incident_ticket" ON "public"."ticket_incident_reports" USING "btree" ("ticket_id", "incident_occurred_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_incident_unresolved" ON "public"."ticket_incident_reports" USING "btree" ("ticket_id") WHERE (("deleted_at" IS NULL) AND ("resolved" = false)); CREATE INDEX "idx_ticket_progress_date" ON "public"."ticket_progress_reports" USING "btree" ("created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_progress_reporter" ON "public"."ticket_progress_reports" USING "btree" ("reported_by_user_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_progress_ticket" ON "public"."ticket_progress_reports" USING "btree" ("ticket_id", "created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_status_history_assignment" ON "public"."ticket_status_history" USING "btree" ("ticket_assignment_id", "changed_at" DESC) WHERE (("ticket_assignment_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_ticket_status_history_created" ON "public"."ticket_status_history" USING "btree" ("created_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_status_history_location" ON "public"."ticket_status_history" USING "btree" ("location_verified", "changed_at" DESC) WHERE (("location_verified" = true) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_ticket_status_history_metadata_gin" ON "public"."ticket_status_history" USING "gin" ("additional_metadata"); CREATE INDEX "idx_ticket_status_history_ticket" ON "public"."ticket_status_history" USING "btree" ("ticket_id", "changed_at" DESC) WHERE ("deleted_at" IS NULL); CREATE UNIQUE INDEX "idx_ticket_status_history_unique" ON "public"."ticket_status_history" USING "btree" ("ticket_id", "new_status", "changed_at") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_ticket_status_history_verification" ON "public"."ticket_status_history" USING "btree" ("location_verified", "communication_method", "changed_at" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_tickets_due_date" ON "public"."tickets" USING "btree" ("due_date", "status", "priority") WHERE (("deleted_at" IS NULL) AND ("status" <> ALL (ARRAY['completed'::"public"."ticketstatus", 'cancelled'::"public"."ticketstatus"]))); CREATE INDEX "idx_tickets_metadata_gin" ON "public"."tickets" USING "gin" ("additional_metadata"); CREATE INDEX "idx_tickets_project" ON "public"."tickets" USING "btree" ("project_id", "status") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_tickets_region" ON "public"."tickets" USING "btree" ("project_region_id", "status") WHERE (("project_region_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_tickets_scheduled" ON "public"."tickets" USING "btree" ("scheduled_date", "status") WHERE (("scheduled_date" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_tickets_sla_violated" ON "public"."tickets" USING "btree" ("sla_violated", "sla_target_date") WHERE (("sla_violated" = true) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_tickets_source" ON "public"."tickets" USING "btree" ("source", "source_id") WHERE ("deleted_at" IS NULL); CREATE UNIQUE INDEX "idx_tickets_source_unique" ON "public"."tickets" USING "btree" ("source", "source_id", "ticket_type") WHERE (("deleted_at" IS NULL) AND ("source_id" IS NOT NULL)); CREATE INDEX "idx_tickets_status_priority" ON "public"."tickets" USING "btree" ("status", "priority", "created_at") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_tickets_type" ON "public"."tickets" USING "btree" ("ticket_type", "status") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_tickets_version" ON "public"."tickets" USING "btree" ("id", "version") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_timesheets_metadata_gin" ON "public"."timesheets" USING "gin" ("additional_metadata"); CREATE INDEX "idx_timesheets_payroll" ON "public"."timesheets" USING "btree" ("payroll_id") WHERE ("payroll_id" IS NOT NULL); CREATE INDEX "idx_timesheets_payroll_status" ON "public"."timesheets" USING "btree" ("user_id", "is_payroll_generated", "work_date" DESC); CREATE INDEX "idx_timesheets_project" ON "public"."timesheets" USING "btree" ("project_id", "work_date" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_timesheets_ticket_metrics" ON "public"."timesheets" USING "btree" ("work_date", "tickets_completed") WHERE ("tickets_completed" > 0); CREATE UNIQUE INDEX "idx_timesheets_unique" ON "public"."timesheets" USING "btree" ("user_id", "project_id", "work_date") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_timesheets_user" ON "public"."timesheets" USING "btree" ("user_id", "work_date" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_usage_metrics_org" ON "public"."usage_metrics" USING "btree" ("organization_type", "organization_id", "billing_period_start" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_usage_metrics_period" ON "public"."usage_metrics" USING "btree" ("billing_period_start", "billing_period_end") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_usage_metrics_type" ON "public"."usage_metrics" USING "btree" ("metric_type", "billing_period_start" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_user_doclinks_expiry" ON "public"."user_document_links" USING "btree" ("expires_at") WHERE (("expires_at" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_user_doclinks_metadata_gin" ON "public"."user_document_links" USING "gin" ("additional_metadata"); CREATE INDEX "idx_user_doclinks_user" ON "public"."user_document_links" USING "btree" ("user_id", "document_link_type") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_user_payroll_finance" ON "public"."user_payroll" USING "btree" ("project_id", "is_paid") WHERE (("is_paid" = false) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_user_payroll_metadata_gin" ON "public"."user_payroll" USING "gin" ("additional_metadata"); CREATE INDEX "idx_user_payroll_payment" ON "public"."user_payroll" USING "btree" ("is_paid", "paid_at") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_user_payroll_period" ON "public"."user_payroll" USING "btree" ("period_start_date", "period_end_date") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_user_payroll_project" ON "public"."user_payroll" USING "btree" ("project_id", "period_start_date" DESC) WHERE ("deleted_at" IS NULL); CREATE UNIQUE INDEX "idx_user_payroll_unique_period" ON "public"."user_payroll" USING "btree" ("user_id", "project_id", "period_start_date", "period_end_date") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_user_payroll_user" ON "public"."user_payroll" USING "btree" ("user_id", "period_start_date" DESC) WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_user_payroll_version" ON "public"."user_payroll" USING "btree" ("id", "version") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_user_preferences_additional_settings_gin" ON "public"."user_preferences" USING "gin" ("additional_settings"); CREATE INDEX "idx_user_preferences_last_active_project_id" ON "public"."user_preferences" USING "btree" ("last_active_project_id") WHERE ("last_active_project_id" IS NOT NULL); CREATE INDEX "idx_user_prefs_favorite_apps" ON "public"."user_preferences" USING "gin" ("favorite_apps") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_user_prefs_user" ON "public"."user_preferences" USING "btree" ("user_id") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_users_client" ON "public"."users" USING "btree" ("client_id") WHERE (("client_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_users_contractor" ON "public"."users" USING "btree" ("contractor_id") WHERE (("contractor_id" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_users_current_region" ON "public"."users" USING "btree" ("current_region", "current_latitude", "current_longitude") WHERE (("current_region" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_users_health_info_gin" ON "public"."users" USING "gin" ("health_info"); CREATE INDEX "idx_users_metadata_gin" ON "public"."users" USING "gin" ("additional_metadata"); CREATE INDEX "idx_users_phone" ON "public"."users" USING "btree" ("phone") WHERE (("phone" IS NOT NULL) AND ("deleted_at" IS NULL)); CREATE INDEX "idx_users_ppe_sizes_gin" ON "public"."users" USING "gin" ("ppe_sizes"); CREATE INDEX "idx_users_role" ON "public"."users" USING "btree" ("role") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_users_status" ON "public"."users" USING "btree" ("status", "is_active") WHERE ("deleted_at" IS NULL); CREATE INDEX "idx_users_status_role" ON "public"."users" USING "btree" ("status", "role") WHERE ("deleted_at" IS NULL); COMMENT ON INDEX "public"."idx_users_status_role" IS 'Fast queries for users by status and role (e.g., find all pending_setup field agents).'; CREATE OR REPLACE TRIGGER "trg_create_user_preferences" AFTER INSERT ON "public"."users" FOR EACH ROW EXECUTE FUNCTION "public"."create_default_user_preferences"(); CREATE OR REPLACE TRIGGER "trg_tickets_manage_lifecycle" BEFORE INSERT OR UPDATE ON "public"."tickets" FOR EACH ROW EXECUTE FUNCTION "public"."manage_ticket_lifecycle"(); CREATE OR REPLACE TRIGGER "trg_update_invitation_timestamp" BEFORE UPDATE ON "public"."user_invitations" FOR EACH ROW EXECUTE FUNCTION "public"."update_invitation_updated_at"(); ALTER TABLE ONLY "public"."audit_logs" ADD CONSTRAINT "auditlogs_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."contractor_invoices" ADD CONSTRAINT "contractor_invoices_previous_version_id_fkey" FOREIGN KEY ("previous_version_id") REFERENCES "public"."contractor_invoices"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."contractor_invoices" ADD CONSTRAINT "contractorinvoices_client_id_fkey" FOREIGN KEY ("client_id") REFERENCES "public"."clients"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."contractor_invoices" ADD CONSTRAINT "contractorinvoices_contractor_id_fkey" FOREIGN KEY ("contractor_id") REFERENCES "public"."contractors"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."contractor_invoices" ADD CONSTRAINT "contractorinvoices_created_by_user_id_fkey" FOREIGN KEY ("created_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."contractor_invoices" ADD CONSTRAINT "contractorinvoices_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."customer_communications" ADD CONSTRAINT "customercommunications_customer_id_fkey" FOREIGN KEY ("customer_id") REFERENCES "public"."customers"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."customer_communications" ADD CONSTRAINT "customercommunications_ticket_id_fkey" FOREIGN KEY ("ticket_id") REFERENCES "public"."tickets"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."customer_communications" ADD CONSTRAINT "customercommunications_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."customers" ADD CONSTRAINT "customers_client_id_fkey" FOREIGN KEY ("client_id") REFERENCES "public"."clients"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."customers" ADD CONSTRAINT "customers_project_region_id_fkey" FOREIGN KEY ("project_region_id") REFERENCES "public"."project_regions"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."documents" ADD CONSTRAINT "documents_previous_version_id_fkey" FOREIGN KEY ("previous_version_id") REFERENCES "public"."documents"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."documents" ADD CONSTRAINT "documents_uploaded_by_user_id_fkey" FOREIGN KEY ("uploaded_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_finance" ADD CONSTRAINT "fk_project_finance_receipt" FOREIGN KEY ("receipt_document_id") REFERENCES "public"."documents"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_subcontractors" ADD CONSTRAINT "fk_project_subcontractors_region" FOREIGN KEY ("project_region_id") REFERENCES "public"."project_regions"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_expenses" ADD CONSTRAINT "fk_ticket_expenses_receipt" FOREIGN KEY ("receipt_document_id") REFERENCES "public"."documents"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_images" ADD CONSTRAINT "fk_ticket_images_document" FOREIGN KEY ("document_id") REFERENCES "public"."documents"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."tickets" ADD CONSTRAINT "fk_tickets_contractor_invoice" FOREIGN KEY ("contractor_invoice_id") REFERENCES "public"."contractor_invoices"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."incidents" ADD CONSTRAINT "incidents_customer_id_fkey" FOREIGN KEY ("customer_id") REFERENCES "public"."customers"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."incidents" ADD CONSTRAINT "incidents_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."incidents" ADD CONSTRAINT "incidents_project_region_id_fkey" FOREIGN KEY ("project_region_id") REFERENCES "public"."project_regions"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."incidents" ADD CONSTRAINT "incidents_subscription_id_fkey" FOREIGN KEY ("subscription_id") REFERENCES "public"."subscriptions"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."inventory_assignments" ADD CONSTRAINT "inventoryassignments_issued_by_user_id_fkey" FOREIGN KEY ("issued_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."inventory_assignments" ADD CONSTRAINT "inventoryassignments_project_inventory_distribution_id_fkey" FOREIGN KEY ("project_inventory_distribution_id") REFERENCES "public"."project_inventory_distribution"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."inventory_assignments" ADD CONSTRAINT "inventoryassignments_returned_to_user_id_fkey" FOREIGN KEY ("returned_to_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."inventory_assignments" ADD CONSTRAINT "inventoryassignments_ticket_id_fkey" FOREIGN KEY ("ticket_id") REFERENCES "public"."tickets"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."inventory_assignments" ADD CONSTRAINT "inventoryassignments_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."invoices" ADD CONSTRAINT "invoices_organization_subscription_id_fkey" FOREIGN KEY ("organization_subscription_id") REFERENCES "public"."organization_subscriptions"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."notifications" ADD CONSTRAINT "notifications_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."organization_subscriptions" ADD CONSTRAINT "organizationsubscriptions_billing_plan_id_fkey" FOREIGN KEY ("billing_plan_id") REFERENCES "public"."billing_plans"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."organization_subscriptions" ADD CONSTRAINT "organizationsubscriptions_cancelled_by_user_id_fkey" FOREIGN KEY ("cancelled_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."payment_logs" ADD CONSTRAINT "paymentlogs_initiated_by_user_id_fkey" FOREIGN KEY ("initiated_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."payment_logs" ADD CONSTRAINT "paymentlogs_parent_log_id_fkey" FOREIGN KEY ("parent_log_id") REFERENCES "public"."payment_logs"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."payment_logs" ADD CONSTRAINT "paymentlogs_project_finance_id_fkey" FOREIGN KEY ("project_finance_id") REFERENCES "public"."project_finance"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."project_finance" ADD CONSTRAINT "projectfinance_approved_by_user_id_fkey" FOREIGN KEY ("approved_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_finance" ADD CONSTRAINT "projectfinance_cancelled_by_user_id_fkey" FOREIGN KEY ("cancelled_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_finance" ADD CONSTRAINT "projectfinance_created_by_user_id_fkey" FOREIGN KEY ("created_by_user_id") REFERENCES "public"."users"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."project_finance" ADD CONSTRAINT "projectfinance_paid_by_user_id_fkey" FOREIGN KEY ("paid_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_finance" ADD CONSTRAINT "projectfinance_paid_to_user_id_fkey" FOREIGN KEY ("paid_to_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_finance" ADD CONSTRAINT "projectfinance_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."project_finance" ADD CONSTRAINT "projectfinance_received_from_user_id_fkey" FOREIGN KEY ("received_from_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_finance" ADD CONSTRAINT "projectfinance_rejected_by_user_id_fkey" FOREIGN KEY ("rejected_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_inventory" ADD CONSTRAINT "projectinventory_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."project_inventory" ADD CONSTRAINT "projectinventory_received_by_user_id_fkey" FOREIGN KEY ("received_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_inventory_distribution" ADD CONSTRAINT "projectinventorydistribution_allocated_by_user_id_fkey" FOREIGN KEY ("allocated_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_inventory_distribution" ADD CONSTRAINT "projectinventorydistribution_project_inventory_id_fkey" FOREIGN KEY ("project_inventory_id") REFERENCES "public"."project_inventory"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."project_inventory_distribution" ADD CONSTRAINT "projectinventorydistribution_project_region_id_fkey" FOREIGN KEY ("project_region_id") REFERENCES "public"."project_regions"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."project_inventory_distribution" ADD CONSTRAINT "projectinventorydistribution_received_by_user_id_fkey" FOREIGN KEY ("received_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_regions" ADD CONSTRAINT "projectregions_manager_id_fkey" FOREIGN KEY ("manager_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_regions" ADD CONSTRAINT "projectregions_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."project_roles" ADD CONSTRAINT "projectroles_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."projects" ADD CONSTRAINT "projects_client_id_fkey" FOREIGN KEY ("client_id") REFERENCES "public"."clients"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."projects" ADD CONSTRAINT "projects_closed_by_user_id_fkey" FOREIGN KEY ("closed_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."projects" ADD CONSTRAINT "projects_contractor_id_fkey" FOREIGN KEY ("contractor_id") REFERENCES "public"."contractors"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."projects" ADD CONSTRAINT "projects_primary_manager_id_fkey" FOREIGN KEY ("primary_manager_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_subcontractors" ADD CONSTRAINT "projectsubcontractors_deactivated_by_user_id_fkey" FOREIGN KEY ("deactivated_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_subcontractors" ADD CONSTRAINT "projectsubcontractors_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."project_subcontractors" ADD CONSTRAINT "projectsubcontractors_subcontractor_id_fkey" FOREIGN KEY ("subcontractor_id") REFERENCES "public"."contractors"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."project_team" ADD CONSTRAINT "projectteam_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."project_team" ADD CONSTRAINT "projectteam_project_region_id_fkey" FOREIGN KEY ("project_region_id") REFERENCES "public"."project_regions"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_team" ADD CONSTRAINT "projectteam_project_role_id_fkey" FOREIGN KEY ("project_role_id") REFERENCES "public"."project_roles"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_team" ADD CONSTRAINT "projectteam_project_subcontractor_id_fkey" FOREIGN KEY ("project_subcontractor_id") REFERENCES "public"."project_subcontractors"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."project_team" ADD CONSTRAINT "projectteam_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."sales_orders" ADD CONSTRAINT "salesorders_customer_id_fkey" FOREIGN KEY ("customer_id") REFERENCES "public"."customers"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."sales_orders" ADD CONSTRAINT "salesorders_processed_by_user_id_fkey" FOREIGN KEY ("processed_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."sales_orders" ADD CONSTRAINT "salesorders_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."sales_orders" ADD CONSTRAINT "salesorders_project_region_id_fkey" FOREIGN KEY ("project_region_id") REFERENCES "public"."project_regions"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."sales_orders" ADD CONSTRAINT "salesorders_sales_agent_id_fkey" FOREIGN KEY ("sales_agent_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."sales_orders" ADD CONSTRAINT "salesorders_submitted_by_user_id_fkey" FOREIGN KEY ("submitted_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."subscriptions" ADD CONSTRAINT "subscriptions_activated_by_user_id_fkey" FOREIGN KEY ("activated_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."subscriptions" ADD CONSTRAINT "subscriptions_customer_id_fkey" FOREIGN KEY ("customer_id") REFERENCES "public"."customers"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."subscriptions" ADD CONSTRAINT "subscriptions_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."subscriptions" ADD CONSTRAINT "subscriptions_project_region_id_fkey" FOREIGN KEY ("project_region_id") REFERENCES "public"."project_regions"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."subscriptions" ADD CONSTRAINT "subscriptions_sales_order_id_fkey" FOREIGN KEY ("sales_order_id") REFERENCES "public"."sales_orders"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."system_configuration" ADD CONSTRAINT "systemconfiguration_last_modified_by_fkey" FOREIGN KEY ("last_modified_by") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."tasks" ADD CONSTRAINT "tasks_created_by_user_id_fkey" FOREIGN KEY ("created_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."tasks" ADD CONSTRAINT "tasks_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."tasks" ADD CONSTRAINT "tasks_project_region_id_fkey" FOREIGN KEY ("project_region_id") REFERENCES "public"."project_regions"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_incident_reports" ADD CONSTRAINT "ticket_incident_reports_reported_by_user_id_fkey" FOREIGN KEY ("reported_by_user_id") REFERENCES "public"."users"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."ticket_incident_reports" ADD CONSTRAINT "ticket_incident_reports_resolved_by_user_id_fkey" FOREIGN KEY ("resolved_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_incident_reports" ADD CONSTRAINT "ticket_incident_reports_ticket_id_fkey" FOREIGN KEY ("ticket_id") REFERENCES "public"."tickets"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."ticket_progress_reports" ADD CONSTRAINT "ticket_progress_reports_reported_by_user_id_fkey" FOREIGN KEY ("reported_by_user_id") REFERENCES "public"."users"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."ticket_progress_reports" ADD CONSTRAINT "ticket_progress_reports_ticket_id_fkey" FOREIGN KEY ("ticket_id") REFERENCES "public"."tickets"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."ticket_assignments" ADD CONSTRAINT "ticketassignments_assigned_by_user_id_fkey" FOREIGN KEY ("assigned_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_assignments" ADD CONSTRAINT "ticketassignments_ticket_id_fkey" FOREIGN KEY ("ticket_id") REFERENCES "public"."tickets"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."ticket_assignments" ADD CONSTRAINT "ticketassignments_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."ticket_comments" ADD CONSTRAINT "ticketcomments_edited_by_user_id_fkey" FOREIGN KEY ("edited_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_comments" ADD CONSTRAINT "ticketcomments_parent_comment_id_fkey" FOREIGN KEY ("parent_comment_id") REFERENCES "public"."ticket_comments"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."ticket_comments" ADD CONSTRAINT "ticketcomments_ticket_id_fkey" FOREIGN KEY ("ticket_id") REFERENCES "public"."tickets"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."ticket_comments" ADD CONSTRAINT "ticketcomments_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_expenses" ADD CONSTRAINT "ticketexpenses_approved_by_user_id_fkey" FOREIGN KEY ("approved_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_expenses" ADD CONSTRAINT "ticketexpenses_incurred_by_user_id_fkey" FOREIGN KEY ("incurred_by_user_id") REFERENCES "public"."users"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."ticket_expenses" ADD CONSTRAINT "ticketexpenses_paid_to_user_id_fkey" FOREIGN KEY ("paid_to_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_expenses" ADD CONSTRAINT "ticketexpenses_ticket_assignment_id_fkey" FOREIGN KEY ("ticket_assignment_id") REFERENCES "public"."ticket_assignments"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."ticket_expenses" ADD CONSTRAINT "ticketexpenses_ticket_id_fkey" FOREIGN KEY ("ticket_id") REFERENCES "public"."tickets"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."ticket_images" ADD CONSTRAINT "ticketimages_captured_by_user_id_fkey" FOREIGN KEY ("captured_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_images" ADD CONSTRAINT "ticketimages_ticket_id_fkey" FOREIGN KEY ("ticket_id") REFERENCES "public"."tickets"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."tickets" ADD CONSTRAINT "tickets_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."tickets" ADD CONSTRAINT "tickets_project_region_id_fkey" FOREIGN KEY ("project_region_id") REFERENCES "public"."project_regions"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_status_history" ADD CONSTRAINT "ticketstatushistory_changed_by_user_id_fkey" FOREIGN KEY ("changed_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_status_history" ADD CONSTRAINT "ticketstatushistory_ticket_assignment_id_fkey" FOREIGN KEY ("ticket_assignment_id") REFERENCES "public"."ticket_assignments"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."ticket_status_history" ADD CONSTRAINT "ticketstatushistory_ticket_id_fkey" FOREIGN KEY ("ticket_id") REFERENCES "public"."tickets"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."timesheets" ADD CONSTRAINT "timesheets_leave_approved_by_user_id_fkey" FOREIGN KEY ("leave_approved_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."timesheets" ADD CONSTRAINT "timesheets_payroll_id_fkey" FOREIGN KEY ("payroll_id") REFERENCES "public"."user_payroll"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."timesheets" ADD CONSTRAINT "timesheets_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."timesheets" ADD CONSTRAINT "timesheets_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."user_invitations" ADD CONSTRAINT "user_invitations_client_id_fkey" FOREIGN KEY ("client_id") REFERENCES "public"."clients"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."user_invitations" ADD CONSTRAINT "user_invitations_contractor_id_fkey" FOREIGN KEY ("contractor_id") REFERENCES "public"."contractors"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."user_invitations" ADD CONSTRAINT "user_invitations_invited_by_user_id_fkey" FOREIGN KEY ("invited_by_user_id") REFERENCES "public"."users"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."user_preferences" ADD CONSTRAINT "user_preferences_last_active_project_id_fkey" FOREIGN KEY ("last_active_project_id") REFERENCES "public"."projects"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."user_asset_assignments" ADD CONSTRAINT "userassetassignments_assigned_by_user_id_fkey" FOREIGN KEY ("assigned_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."user_asset_assignments" ADD CONSTRAINT "userassetassignments_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."user_document_links" ADD CONSTRAINT "userdocumentlinks_document_id_fkey" FOREIGN KEY ("document_id") REFERENCES "public"."documents"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."user_document_links" ADD CONSTRAINT "userdocumentlinks_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."user_financial_accounts" ADD CONSTRAINT "userfinancialaccounts_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."user_financial_accounts" ADD CONSTRAINT "userfinancialaccounts_verified_by_user_id_fkey" FOREIGN KEY ("verified_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."user_payroll" ADD CONSTRAINT "userpayroll_paid_by_user_id_fkey" FOREIGN KEY ("paid_by_user_id") REFERENCES "public"."users"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."user_payroll" ADD CONSTRAINT "userpayroll_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."user_payroll" ADD CONSTRAINT "userpayroll_project_team_id_fkey" FOREIGN KEY ("project_team_id") REFERENCES "public"."project_team"("id") ON DELETE SET NULL; ALTER TABLE ONLY "public"."user_payroll" ADD CONSTRAINT "userpayroll_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."user_preferences" ADD CONSTRAINT "userpreferences_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE CASCADE; ALTER TABLE ONLY "public"."users" ADD CONSTRAINT "users_client_id_fkey" FOREIGN KEY ("client_id") REFERENCES "public"."clients"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."users" ADD CONSTRAINT "users_contractor_id_fkey" FOREIGN KEY ("contractor_id") REFERENCES "public"."contractors"("id") ON DELETE RESTRICT; ALTER TABLE ONLY "public"."users" ADD CONSTRAINT "users_id_fkey" FOREIGN KEY ("id") REFERENCES "auth"."users"("id") ON DELETE CASCADE; CREATE POLICY "admins can view asset assignments in their organization" ON "public"."user_asset_assignments" FOR SELECT USING ((("public"."get_user_role"() = ANY (ARRAY['platform_admin'::"public"."approle", 'client_admin'::"public"."approle", 'contractor_admin'::"public"."approle", 'dispatcher'::"public"."approle"])) AND ("user_id" IN ( SELECT "users"."id" FROM "public"."users" WHERE ((("users"."client_id" = "public"."get_user_client_id"()) OR ("users"."contractor_id" = "public"."get_user_contractor_id"())) AND ("users"."deleted_at" IS NULL)))))); CREATE POLICY "admins can view financial accounts in their organization" ON "public"."user_financial_accounts" FOR SELECT USING ((("public"."get_user_role"() = ANY (ARRAY['platform_admin'::"public"."approle", 'client_admin'::"public"."approle", 'contractor_admin'::"public"."approle"])) AND ("user_id" IN ( SELECT "users"."id" FROM "public"."users" WHERE ((("users"."client_id" = "public"."get_user_client_id"()) OR ("users"."contractor_id" = "public"."get_user_contractor_id"())) AND ("users"."deleted_at" IS NULL)))))); CREATE POLICY "anyone can view public billing plans" ON "public"."billing_plans" FOR SELECT USING ((("is_public" = true) AND ("is_active" = true))); ALTER TABLE "public"."audit_logs" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."billing_plans" ENABLE ROW LEVEL SECURITY; CREATE POLICY "client admins can create invitations for their client" ON "public"."user_invitations" FOR INSERT TO "authenticated" WITH CHECK ((EXISTS ( SELECT 1 FROM "public"."users" WHERE (("users"."id" = "auth"."uid"()) AND ("users"."role" = 'client_admin'::"public"."approle") AND ("users"."client_id" = "user_invitations"."client_id") AND ("users"."deleted_at" IS NULL))))); CREATE POLICY "client admins can view their client invitations" ON "public"."user_invitations" FOR SELECT TO "authenticated" USING ((EXISTS ( SELECT 1 FROM "public"."users" WHERE (("users"."id" = "auth"."uid"()) AND ("users"."role" = 'client_admin'::"public"."approle") AND ("users"."client_id" = "user_invitations"."client_id") AND ("users"."deleted_at" IS NULL))))); CREATE POLICY "client admins can view their own client" ON "public"."clients" FOR SELECT USING (("id" = "public"."get_user_client_id"())); CREATE POLICY "client admins can view users in their organization" ON "public"."users" FOR SELECT USING (("client_id" = "public"."get_user_client_id"())); CREATE POLICY "client users can view their customers" ON "public"."customers" FOR SELECT USING (("client_id" = "public"."get_user_client_id"())); ALTER TABLE "public"."clients" ENABLE ROW LEVEL SECURITY; CREATE POLICY "clients can view invoices sent to them" ON "public"."contractor_invoices" FOR SELECT USING (("client_id" = "public"."get_user_client_id"())); CREATE POLICY "clients can view their contractors" ON "public"."contractors" FOR SELECT USING (("id" IN ( SELECT DISTINCT "projects"."contractor_id" FROM "public"."projects" WHERE (("projects"."client_id" = "public"."get_user_client_id"()) AND ("projects"."deleted_at" IS NULL))))); CREATE POLICY "contractor admins can create invitations for their contractor" ON "public"."user_invitations" FOR INSERT TO "authenticated" WITH CHECK ((EXISTS ( SELECT 1 FROM "public"."users" WHERE (("users"."id" = "auth"."uid"()) AND ("users"."role" = 'contractor_admin'::"public"."approle") AND ("users"."contractor_id" = "user_invitations"."contractor_id") AND ("users"."deleted_at" IS NULL))))); CREATE POLICY "contractor admins can view their contractor invitations" ON "public"."user_invitations" FOR SELECT TO "authenticated" USING ((EXISTS ( SELECT 1 FROM "public"."users" WHERE (("users"."id" = "auth"."uid"()) AND ("users"."role" = 'contractor_admin'::"public"."approle") AND ("users"."contractor_id" = "user_invitations"."contractor_id") AND ("users"."deleted_at" IS NULL))))); CREATE POLICY "contractor admins can view their own contractor" ON "public"."contractors" FOR SELECT USING (("id" = "public"."get_user_contractor_id"())); CREATE POLICY "contractor admins can view users in their organization" ON "public"."users" FOR SELECT USING (("contractor_id" = "public"."get_user_contractor_id"())); CREATE POLICY "contractor users can view customers in their projects" ON "public"."customers" FOR SELECT USING (("client_id" IN ( SELECT DISTINCT "projects"."client_id" FROM "public"."projects" WHERE (("projects"."contractor_id" = "public"."get_user_contractor_id"()) AND ("projects"."deleted_at" IS NULL))))); ALTER TABLE "public"."contractor_invoices" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."contractors" ENABLE ROW LEVEL SECURITY; CREATE POLICY "contractors can view their clients" ON "public"."clients" FOR SELECT USING (("id" IN ( SELECT DISTINCT "projects"."client_id" FROM "public"."projects" WHERE (("projects"."contractor_id" = "public"."get_user_contractor_id"()) AND ("projects"."deleted_at" IS NULL))))); CREATE POLICY "contractors can view their own invoices" ON "public"."contractor_invoices" FOR SELECT USING (("contractor_id" = "public"."get_user_contractor_id"())); ALTER TABLE "public"."customer_communications" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."customers" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."documents" ENABLE ROW LEVEL SECURITY; CREATE POLICY "incident_reports_delete_policy" ON "public"."ticket_incident_reports" FOR DELETE USING ((("resolved" = true) AND (EXISTS ( SELECT 1 FROM ("public"."tickets" "t" JOIN "public"."projects" "p" ON (("p"."id" = "t"."project_id"))) WHERE (("t"."id" = "ticket_incident_reports"."ticket_id") AND ("t"."deleted_at" IS NULL) AND ((EXISTS ( SELECT 1 FROM "public"."users" "u" WHERE (("u"."id" = "auth"."uid"()) AND ("u"."contractor_id" = "p"."contractor_id")))) OR (EXISTS ( SELECT 1 FROM "public"."users" "u" WHERE (("u"."id" = "auth"."uid"()) AND ("u"."client_id" = "p"."client_id")))))))))); CREATE POLICY "incident_reports_insert_policy" ON "public"."ticket_incident_reports" FOR INSERT WITH CHECK ((EXISTS ( SELECT 1 FROM ("public"."tickets" "t" JOIN "public"."projects" "p" ON (("p"."id" = "t"."project_id"))) WHERE (("t"."id" = "ticket_incident_reports"."ticket_id") AND ("t"."deleted_at" IS NULL) AND ((EXISTS ( SELECT 1 FROM "public"."users" "u" WHERE (("u"."id" = "auth"."uid"()) AND ("u"."contractor_id" = "p"."contractor_id")))) OR (EXISTS ( SELECT 1 FROM "public"."users" "u" WHERE (("u"."id" = "auth"."uid"()) AND ("u"."client_id" = "p"."client_id"))))))))); CREATE POLICY "incident_reports_select_policy" ON "public"."ticket_incident_reports" FOR SELECT USING ((EXISTS ( SELECT 1 FROM ("public"."tickets" "t" JOIN "public"."projects" "p" ON (("p"."id" = "t"."project_id"))) WHERE (("t"."id" = "ticket_incident_reports"."ticket_id") AND ("t"."deleted_at" IS NULL) AND ((EXISTS ( SELECT 1 FROM "public"."users" "u" WHERE (("u"."id" = "auth"."uid"()) AND ("u"."contractor_id" = "p"."contractor_id")))) OR (EXISTS ( SELECT 1 FROM "public"."users" "u" WHERE (("u"."id" = "auth"."uid"()) AND ("u"."client_id" = "p"."client_id"))))))))); CREATE POLICY "incident_reports_update_policy" ON "public"."ticket_incident_reports" FOR UPDATE USING ((EXISTS ( SELECT 1 FROM ("public"."tickets" "t" JOIN "public"."projects" "p" ON (("p"."id" = "t"."project_id"))) WHERE (("t"."id" = "ticket_incident_reports"."ticket_id") AND ("t"."deleted_at" IS NULL) AND ((EXISTS ( SELECT 1 FROM "public"."users" "u" WHERE (("u"."id" = "auth"."uid"()) AND ("u"."contractor_id" = "p"."contractor_id")))) OR (EXISTS ( SELECT 1 FROM "public"."users" "u" WHERE (("u"."id" = "auth"."uid"()) AND ("u"."client_id" = "p"."client_id"))))))))); ALTER TABLE "public"."incidents" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."inventory_assignments" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."invoices" ENABLE ROW LEVEL SECURITY; CREATE POLICY "managers can view document links in their organization" ON "public"."user_document_links" FOR SELECT USING ((("public"."get_user_role"() = ANY (ARRAY['platform_admin'::"public"."approle", 'client_admin'::"public"."approle", 'contractor_admin'::"public"."approle", 'dispatcher'::"public"."approle"])) AND ("user_id" IN ( SELECT "users"."id" FROM "public"."users" WHERE ((("users"."client_id" = "public"."get_user_client_id"()) OR ("users"."contractor_id" = "public"."get_user_contractor_id"())) AND ("users"."deleted_at" IS NULL)))))); CREATE POLICY "managers can view inventory assignments in their projects" ON "public"."inventory_assignments" FOR SELECT USING ((("public"."get_user_role"() = ANY (ARRAY['platform_admin'::"public"."approle", 'client_admin'::"public"."approle", 'contractor_admin'::"public"."approle", 'project_manager'::"public"."approle", 'dispatcher'::"public"."approle"])) AND ("project_inventory_distribution_id" IN ( SELECT "project_inventory_distribution"."id" FROM "public"."project_inventory_distribution" WHERE (("project_inventory_distribution"."project_inventory_id" IN ( SELECT "project_inventory"."id" FROM "public"."project_inventory" WHERE (("project_inventory"."project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL)))) AND ("project_inventory"."deleted_at" IS NULL)))) AND ("project_inventory_distribution"."deleted_at" IS NULL)))))); CREATE POLICY "managers can view payment logs in their projects" ON "public"."payment_logs" FOR SELECT USING ((("public"."get_user_role"() = ANY (ARRAY['platform_admin'::"public"."approle", 'client_admin'::"public"."approle", 'contractor_admin'::"public"."approle", 'project_manager'::"public"."approle", 'dispatcher'::"public"."approle"])) AND ("project_finance_id" IN ( SELECT "project_finance"."id" FROM "public"."project_finance" WHERE (("project_finance"."project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL)))) AND ("project_finance"."deleted_at" IS NULL)))))); CREATE POLICY "managers can view payroll in their projects" ON "public"."user_payroll" FOR SELECT USING ((("public"."get_user_role"() = ANY (ARRAY['platform_admin'::"public"."approle", 'client_admin'::"public"."approle", 'contractor_admin'::"public"."approle", 'project_manager'::"public"."approle", 'dispatcher'::"public"."approle"])) AND ("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL)))))); CREATE POLICY "managers can view project finance in their projects" ON "public"."project_finance" FOR SELECT USING ((("public"."get_user_role"() = ANY (ARRAY['platform_admin'::"public"."approle", 'client_admin'::"public"."approle", 'contractor_admin'::"public"."approle", 'project_manager'::"public"."approle", 'dispatcher'::"public"."approle"])) AND ("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL)))))); CREATE POLICY "managers can view timesheets in their projects" ON "public"."timesheets" FOR SELECT USING ((("public"."get_user_role"() = ANY (ARRAY['platform_admin'::"public"."approle", 'client_admin'::"public"."approle", 'contractor_admin'::"public"."approle", 'project_manager'::"public"."approle", 'dispatcher'::"public"."approle"])) AND ("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL)))))); ALTER TABLE "public"."notifications" ENABLE ROW LEVEL SECURITY; CREATE POLICY "organization admins can view their invoices" ON "public"."invoices" FOR SELECT USING (("organization_subscription_id" IN ( SELECT "organization_subscriptions"."id" FROM "public"."organization_subscriptions" WHERE ((("organization_subscriptions"."organization_type" = 'client'::"public"."organizationtype") AND ("organization_subscriptions"."organization_id" = "public"."get_user_client_id"())) OR (("organization_subscriptions"."organization_type" = 'contractor'::"public"."organizationtype") AND ("organization_subscriptions"."organization_id" = "public"."get_user_contractor_id"())))))); CREATE POLICY "organization admins can view their subscription" ON "public"."organization_subscriptions" FOR SELECT USING (((("organization_type" = 'client'::"public"."organizationtype") AND ("organization_id" = "public"."get_user_client_id"())) OR (("organization_type" = 'contractor'::"public"."organizationtype") AND ("organization_id" = "public"."get_user_contractor_id"())))); CREATE POLICY "organization admins can view their usage metrics" ON "public"."usage_metrics" FOR SELECT USING (((("organization_type" = 'client'::"public"."organizationtype") AND ("organization_id" = "public"."get_user_client_id"())) OR (("organization_type" = 'contractor'::"public"."organizationtype") AND ("organization_id" = "public"."get_user_contractor_id"())))); ALTER TABLE "public"."organization_subscriptions" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."payment_logs" ENABLE ROW LEVEL SECURITY; CREATE POLICY "platform admins can create invitations" ON "public"."user_invitations" FOR INSERT TO "authenticated" WITH CHECK ((EXISTS ( SELECT 1 FROM "public"."users" WHERE (("users"."id" = "auth"."uid"()) AND ("users"."role" = 'platform_admin'::"public"."approle") AND ("users"."deleted_at" IS NULL))))); CREATE POLICY "platform admins can update invitations" ON "public"."user_invitations" FOR UPDATE TO "authenticated" USING ((EXISTS ( SELECT 1 FROM "public"."users" WHERE (("users"."id" = "auth"."uid"()) AND ("users"."role" = 'platform_admin'::"public"."approle") AND ("users"."deleted_at" IS NULL))))) WITH CHECK ((EXISTS ( SELECT 1 FROM "public"."users" WHERE (("users"."id" = "auth"."uid"()) AND ("users"."role" = 'platform_admin'::"public"."approle") AND ("users"."deleted_at" IS NULL))))); CREATE POLICY "platform admins can view all audit logs" ON "public"."audit_logs" FOR SELECT USING (("public"."get_user_role"() = 'platform_admin'::"public"."approle")); CREATE POLICY "platform admins can view all billing plans" ON "public"."billing_plans" FOR SELECT USING (("public"."get_user_role"() = 'platform_admin'::"public"."approle")); CREATE POLICY "platform admins can view all clients" ON "public"."clients" FOR SELECT USING (("public"."get_user_role"() = 'platform_admin'::"public"."approle")); CREATE POLICY "platform admins can view all contractors" ON "public"."contractors" FOR SELECT USING (("public"."get_user_role"() = 'platform_admin'::"public"."approle")); CREATE POLICY "platform admins can view all invitations" ON "public"."user_invitations" FOR SELECT TO "authenticated" USING ((EXISTS ( SELECT 1 FROM "public"."users" WHERE (("users"."id" = "auth"."uid"()) AND ("users"."role" = 'platform_admin'::"public"."approle") AND ("users"."deleted_at" IS NULL))))); CREATE POLICY "platform admins can view all invoices" ON "public"."invoices" FOR SELECT USING (("public"."get_user_role"() = 'platform_admin'::"public"."approle")); CREATE POLICY "platform admins can view all subscriptions" ON "public"."organization_subscriptions" FOR SELECT USING (("public"."get_user_role"() = 'platform_admin'::"public"."approle")); CREATE POLICY "platform admins can view all system configuration" ON "public"."system_configuration" FOR SELECT USING (("public"."get_user_role"() = 'platform_admin'::"public"."approle")); CREATE POLICY "platform admins can view all usage metrics" ON "public"."usage_metrics" FOR SELECT USING (("public"."get_user_role"() = 'platform_admin'::"public"."approle")); CREATE POLICY "platform admins can view all users" ON "public"."users" FOR SELECT USING (("public"."get_user_role"() = 'platform_admin'::"public"."approle")); CREATE POLICY "progress_reports_delete_policy" ON "public"."ticket_progress_reports" FOR DELETE USING (("reported_by_user_id" = "auth"."uid"())); CREATE POLICY "progress_reports_insert_policy" ON "public"."ticket_progress_reports" FOR INSERT WITH CHECK ((EXISTS ( SELECT 1 FROM ("public"."tickets" "t" JOIN "public"."projects" "p" ON (("p"."id" = "t"."project_id"))) WHERE (("t"."id" = "ticket_progress_reports"."ticket_id") AND ("t"."deleted_at" IS NULL) AND ((EXISTS ( SELECT 1 FROM "public"."users" "u" WHERE (("u"."id" = "auth"."uid"()) AND ("u"."contractor_id" = "p"."contractor_id")))) OR (EXISTS ( SELECT 1 FROM "public"."users" "u" WHERE (("u"."id" = "auth"."uid"()) AND ("u"."client_id" = "p"."client_id"))))))))); CREATE POLICY "progress_reports_select_policy" ON "public"."ticket_progress_reports" FOR SELECT USING ((EXISTS ( SELECT 1 FROM ("public"."tickets" "t" JOIN "public"."projects" "p" ON (("p"."id" = "t"."project_id"))) WHERE (("t"."id" = "ticket_progress_reports"."ticket_id") AND ("t"."deleted_at" IS NULL) AND ((EXISTS ( SELECT 1 FROM "public"."users" "u" WHERE (("u"."id" = "auth"."uid"()) AND ("u"."contractor_id" = "p"."contractor_id")))) OR (EXISTS ( SELECT 1 FROM "public"."users" "u" WHERE (("u"."id" = "auth"."uid"()) AND ("u"."client_id" = "p"."client_id"))))))))); CREATE POLICY "progress_reports_update_policy" ON "public"."ticket_progress_reports" FOR UPDATE USING (("reported_by_user_id" = "auth"."uid"())); ALTER TABLE "public"."project_finance" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."project_inventory" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."project_inventory_distribution" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."project_regions" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."project_roles" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."project_subcontractors" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."project_team" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."projects" ENABLE ROW LEVEL SECURITY; CREATE POLICY "public can accept invitations" ON "public"."user_invitations" FOR UPDATE TO "anon" USING ((("status" = 'pending'::"public"."invitation_status") AND ("expires_at" > "timezone"('utc'::"text", "now"())))) WITH CHECK (("status" = 'accepted'::"public"."invitation_status")); CREATE POLICY "public can validate invitation tokens" ON "public"."user_invitations" FOR SELECT TO "anon" USING ((("status" = 'pending'::"public"."invitation_status") AND ("expires_at" > "timezone"('utc'::"text", "now"())))); ALTER TABLE "public"."sales_orders" ENABLE ROW LEVEL SECURITY; CREATE POLICY "service role has full access to invitations" ON "public"."user_invitations" TO "service_role" USING (true) WITH CHECK (true); ALTER TABLE "public"."subscriptions" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."system_configuration" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."tasks" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."ticket_assignments" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."ticket_comments" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."ticket_expenses" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."ticket_images" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."ticket_incident_reports" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."ticket_progress_reports" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."ticket_status_history" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."tickets" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."timesheets" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."usage_metrics" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."user_asset_assignments" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."user_document_links" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."user_financial_accounts" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."user_invitations" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."user_payroll" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."user_preferences" ENABLE ROW LEVEL SECURITY; ALTER TABLE "public"."users" ENABLE ROW LEVEL SECURITY; CREATE POLICY "users can manage their own preferences" ON "public"."user_preferences" USING (("user_id" = "auth"."uid"())); CREATE POLICY "users can update invitations they created" ON "public"."user_invitations" FOR UPDATE TO "authenticated" USING (("invited_by_user_id" = "auth"."uid"())) WITH CHECK (("invited_by_user_id" = "auth"."uid"())); CREATE POLICY "users can update their own profile" ON "public"."users" FOR UPDATE USING (("id" = "auth"."uid"())); CREATE POLICY "users can view customer communications in their projects" ON "public"."customer_communications" FOR SELECT USING (("customer_id" IN ( SELECT "customers"."id" FROM "public"."customers" WHERE (("customers"."client_id" = "public"."get_user_client_id"()) AND ("customers"."deleted_at" IS NULL))))); CREATE POLICY "users can view documents they uploaded" ON "public"."documents" FOR SELECT USING (("uploaded_by_user_id" = "auth"."uid"())); CREATE POLICY "users can view incidents in their projects" ON "public"."incidents" FOR SELECT USING (("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL))))); CREATE POLICY "users can view inventory distribution in their projects" ON "public"."project_inventory_distribution" FOR SELECT USING (("project_inventory_id" IN ( SELECT "project_inventory"."id" FROM "public"."project_inventory" WHERE (("project_inventory"."project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL)))) AND ("project_inventory"."deleted_at" IS NULL))))); CREATE POLICY "users can view inventory in their projects" ON "public"."project_inventory" FOR SELECT USING (("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL))))); CREATE POLICY "users can view invitations they created" ON "public"."user_invitations" FOR SELECT TO "authenticated" USING (("invited_by_user_id" = "auth"."uid"())); CREATE POLICY "users can view projects in their organization" ON "public"."projects" FOR SELECT USING ((("client_id" = "public"."get_user_client_id"()) OR ("contractor_id" = "public"."get_user_contractor_id"()))); CREATE POLICY "users can view public documents" ON "public"."documents" FOR SELECT USING (("is_public" = true)); CREATE POLICY "users can view public system configuration" ON "public"."system_configuration" FOR SELECT USING (("is_public" = true)); CREATE POLICY "users can view regions in their projects" ON "public"."project_regions" FOR SELECT USING (("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL))))); CREATE POLICY "users can view roles in their projects" ON "public"."project_roles" FOR SELECT USING (("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL))))); CREATE POLICY "users can view sales orders in their projects" ON "public"."sales_orders" FOR SELECT USING (("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL))))); CREATE POLICY "users can view subcontractors in their projects" ON "public"."project_subcontractors" FOR SELECT USING (("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL))))); CREATE POLICY "users can view subscriptions in their projects" ON "public"."subscriptions" FOR SELECT USING (("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL))))); CREATE POLICY "users can view tasks in their projects" ON "public"."tasks" FOR SELECT USING (("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL))))); CREATE POLICY "users can view team members in their projects" ON "public"."project_team" FOR SELECT USING (("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL))))); CREATE POLICY "users can view their own asset assignments" ON "public"."user_asset_assignments" FOR SELECT USING (("user_id" = "auth"."uid"())); CREATE POLICY "users can view their own document links" ON "public"."user_document_links" FOR SELECT USING (("user_id" = "auth"."uid"())); CREATE POLICY "users can view their own financial accounts" ON "public"."user_financial_accounts" FOR SELECT USING (("user_id" = "auth"."uid"())); CREATE POLICY "users can view their own inventory assignments" ON "public"."inventory_assignments" FOR SELECT USING (("user_id" = "auth"."uid"())); CREATE POLICY "users can view their own notifications" ON "public"."notifications" USING (("user_id" = "auth"."uid"())); CREATE POLICY "users can view their own payroll" ON "public"."user_payroll" FOR SELECT USING (("user_id" = "auth"."uid"())); CREATE POLICY "users can view their own profile" ON "public"."users" FOR SELECT USING (("id" = "auth"."uid"())); CREATE POLICY "users can view their own timesheets" ON "public"."timesheets" FOR SELECT USING (("user_id" = "auth"."uid"())); CREATE POLICY "users can view ticket assignments in their projects" ON "public"."ticket_assignments" FOR SELECT USING (("ticket_id" IN ( SELECT "tickets"."id" FROM "public"."tickets" WHERE (("tickets"."project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL)))) AND ("tickets"."deleted_at" IS NULL))))); CREATE POLICY "users can view ticket comments in their projects" ON "public"."ticket_comments" FOR SELECT USING (("ticket_id" IN ( SELECT "tickets"."id" FROM "public"."tickets" WHERE (("tickets"."project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL)))) AND ("tickets"."deleted_at" IS NULL))))); CREATE POLICY "users can view ticket expenses in their projects" ON "public"."ticket_expenses" FOR SELECT USING (("ticket_id" IN ( SELECT "tickets"."id" FROM "public"."tickets" WHERE (("tickets"."project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL)))) AND ("tickets"."deleted_at" IS NULL))))); CREATE POLICY "users can view ticket status history in their projects" ON "public"."ticket_status_history" FOR SELECT USING (("ticket_id" IN ( SELECT "tickets"."id" FROM "public"."tickets" WHERE (("tickets"."project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL)))) AND ("tickets"."deleted_at" IS NULL))))); CREATE POLICY "users can view tickets in their projects" ON "public"."tickets" FOR SELECT USING (("project_id" IN ( SELECT "projects"."id" FROM "public"."projects" WHERE ((("projects"."client_id" = "public"."get_user_client_id"()) OR ("projects"."contractor_id" = "public"."get_user_contractor_id"())) AND ("projects"."deleted_at" IS NULL))))); ALTER PUBLICATION "supabase_realtime" OWNER TO "postgres"; GRANT USAGE ON SCHEMA "public" TO "postgres"; GRANT USAGE ON SCHEMA "public" TO "anon"; GRANT USAGE ON SCHEMA "public" TO "authenticated"; GRANT USAGE ON SCHEMA "public" TO "service_role"; GRANT ALL ON FUNCTION "public"."box2d_in"("cstring") TO "postgres"; GRANT ALL ON FUNCTION "public"."box2d_in"("cstring") TO "anon"; GRANT ALL ON FUNCTION "public"."box2d_in"("cstring") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box2d_in"("cstring") TO "service_role"; GRANT ALL ON FUNCTION "public"."box2d_out"("public"."box2d") TO "postgres"; GRANT ALL ON FUNCTION "public"."box2d_out"("public"."box2d") TO "anon"; GRANT ALL ON FUNCTION "public"."box2d_out"("public"."box2d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box2d_out"("public"."box2d") TO "service_role"; GRANT ALL ON FUNCTION "public"."box2df_in"("cstring") TO "postgres"; GRANT ALL ON FUNCTION "public"."box2df_in"("cstring") TO "anon"; GRANT ALL ON FUNCTION "public"."box2df_in"("cstring") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box2df_in"("cstring") TO "service_role"; GRANT ALL ON FUNCTION "public"."box2df_out"("public"."box2df") TO "postgres"; GRANT ALL ON FUNCTION "public"."box2df_out"("public"."box2df") TO "anon"; GRANT ALL ON FUNCTION "public"."box2df_out"("public"."box2df") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box2df_out"("public"."box2df") TO "service_role"; GRANT ALL ON FUNCTION "public"."box3d_in"("cstring") TO "postgres"; GRANT ALL ON FUNCTION "public"."box3d_in"("cstring") TO "anon"; GRANT ALL ON FUNCTION "public"."box3d_in"("cstring") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box3d_in"("cstring") TO "service_role"; GRANT ALL ON FUNCTION "public"."box3d_out"("public"."box3d") TO "postgres"; GRANT ALL ON FUNCTION "public"."box3d_out"("public"."box3d") TO "anon"; GRANT ALL ON FUNCTION "public"."box3d_out"("public"."box3d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box3d_out"("public"."box3d") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_analyze"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_analyze"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_analyze"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_analyze"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_in"("cstring", "oid", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_in"("cstring", "oid", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."geography_in"("cstring", "oid", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_in"("cstring", "oid", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_out"("public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_out"("public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_out"("public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_out"("public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_recv"("internal", "oid", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_recv"("internal", "oid", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."geography_recv"("internal", "oid", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_recv"("internal", "oid", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_send"("public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_send"("public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_send"("public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_send"("public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_typmod_in"("cstring"[]) TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_typmod_in"("cstring"[]) TO "anon"; GRANT ALL ON FUNCTION "public"."geography_typmod_in"("cstring"[]) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_typmod_in"("cstring"[]) TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_typmod_out"(integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_typmod_out"(integer) TO "anon"; GRANT ALL ON FUNCTION "public"."geography_typmod_out"(integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_typmod_out"(integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_analyze"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_analyze"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_analyze"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_analyze"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_in"("cstring") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_in"("cstring") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_in"("cstring") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_in"("cstring") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_out"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_out"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_out"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_out"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_recv"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_recv"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_recv"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_recv"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_send"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_send"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_send"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_send"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_typmod_in"("cstring"[]) TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_typmod_in"("cstring"[]) TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_typmod_in"("cstring"[]) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_typmod_in"("cstring"[]) TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_typmod_out"(integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_typmod_out"(integer) TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_typmod_out"(integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_typmod_out"(integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."gidx_in"("cstring") TO "postgres"; GRANT ALL ON FUNCTION "public"."gidx_in"("cstring") TO "anon"; GRANT ALL ON FUNCTION "public"."gidx_in"("cstring") TO "authenticated"; GRANT ALL ON FUNCTION "public"."gidx_in"("cstring") TO "service_role"; GRANT ALL ON FUNCTION "public"."gidx_out"("public"."gidx") TO "postgres"; GRANT ALL ON FUNCTION "public"."gidx_out"("public"."gidx") TO "anon"; GRANT ALL ON FUNCTION "public"."gidx_out"("public"."gidx") TO "authenticated"; GRANT ALL ON FUNCTION "public"."gidx_out"("public"."gidx") TO "service_role"; GRANT ALL ON FUNCTION "public"."spheroid_in"("cstring") TO "postgres"; GRANT ALL ON FUNCTION "public"."spheroid_in"("cstring") TO "anon"; GRANT ALL ON FUNCTION "public"."spheroid_in"("cstring") TO "authenticated"; GRANT ALL ON FUNCTION "public"."spheroid_in"("cstring") TO "service_role"; GRANT ALL ON FUNCTION "public"."spheroid_out"("public"."spheroid") TO "postgres"; GRANT ALL ON FUNCTION "public"."spheroid_out"("public"."spheroid") TO "anon"; GRANT ALL ON FUNCTION "public"."spheroid_out"("public"."spheroid") TO "authenticated"; GRANT ALL ON FUNCTION "public"."spheroid_out"("public"."spheroid") TO "service_role"; GRANT ALL ON FUNCTION "public"."box3d"("public"."box2d") TO "postgres"; GRANT ALL ON FUNCTION "public"."box3d"("public"."box2d") TO "anon"; GRANT ALL ON FUNCTION "public"."box3d"("public"."box2d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box3d"("public"."box2d") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry"("public"."box2d") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry"("public"."box2d") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry"("public"."box2d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry"("public"."box2d") TO "service_role"; GRANT ALL ON FUNCTION "public"."box"("public"."box3d") TO "postgres"; GRANT ALL ON FUNCTION "public"."box"("public"."box3d") TO "anon"; GRANT ALL ON FUNCTION "public"."box"("public"."box3d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box"("public"."box3d") TO "service_role"; GRANT ALL ON FUNCTION "public"."box2d"("public"."box3d") TO "postgres"; GRANT ALL ON FUNCTION "public"."box2d"("public"."box3d") TO "anon"; GRANT ALL ON FUNCTION "public"."box2d"("public"."box3d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box2d"("public"."box3d") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry"("public"."box3d") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry"("public"."box3d") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry"("public"."box3d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry"("public"."box3d") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."geography"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."bytea"("public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."bytea"("public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."bytea"("public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."bytea"("public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography"("public"."geography", integer, boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."geography"("public"."geography", integer, boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."geography"("public"."geography", integer, boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography"("public"."geography", integer, boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry"("public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry"("public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry"("public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry"("public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."box"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."box"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."box"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."box2d"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."box2d"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."box2d"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box2d"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."box3d"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."box3d"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."box3d"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box3d"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."bytea"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."bytea"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."bytea"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."bytea"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geography"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry"("public"."geometry", integer, boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry"("public"."geometry", integer, boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."geometry"("public"."geometry", integer, boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry"("public"."geometry", integer, boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."json"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."json"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."json"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."json"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."jsonb"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."jsonb"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."jsonb"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."jsonb"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."path"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."path"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."path"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."path"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."point"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."point"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."point"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."point"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."polygon"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."polygon"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."polygon"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."polygon"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."text"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."text"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."text"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."text"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry"("path") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry"("path") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry"("path") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry"("path") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry"("point") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry"("point") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry"("point") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry"("point") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry"("polygon") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry"("polygon") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry"("polygon") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry"("polygon") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."_postgis_deprecate"("oldname" "text", "newname" "text", "version" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."_postgis_deprecate"("oldname" "text", "newname" "text", "version" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."_postgis_deprecate"("oldname" "text", "newname" "text", "version" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_postgis_deprecate"("oldname" "text", "newname" "text", "version" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."_postgis_index_extent"("tbl" "regclass", "col" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."_postgis_index_extent"("tbl" "regclass", "col" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."_postgis_index_extent"("tbl" "regclass", "col" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_postgis_index_extent"("tbl" "regclass", "col" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."_postgis_join_selectivity"("regclass", "text", "regclass", "text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."_postgis_join_selectivity"("regclass", "text", "regclass", "text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."_postgis_join_selectivity"("regclass", "text", "regclass", "text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_postgis_join_selectivity"("regclass", "text", "regclass", "text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."_postgis_pgsql_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."_postgis_pgsql_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."_postgis_pgsql_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."_postgis_pgsql_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."_postgis_scripts_pgsql_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."_postgis_scripts_pgsql_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."_postgis_scripts_pgsql_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."_postgis_scripts_pgsql_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."_postgis_selectivity"("tbl" "regclass", "att_name" "text", "geom" "public"."geometry", "mode" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."_postgis_selectivity"("tbl" "regclass", "att_name" "text", "geom" "public"."geometry", "mode" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."_postgis_selectivity"("tbl" "regclass", "att_name" "text", "geom" "public"."geometry", "mode" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_postgis_selectivity"("tbl" "regclass", "att_name" "text", "geom" "public"."geometry", "mode" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."_postgis_stats"("tbl" "regclass", "att_name" "text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."_postgis_stats"("tbl" "regclass", "att_name" "text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."_postgis_stats"("tbl" "regclass", "att_name" "text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_postgis_stats"("tbl" "regclass", "att_name" "text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_3ddfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_3ddfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_3ddfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_3ddfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_3ddwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_3ddwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_3ddwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_3ddwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_3dintersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_3dintersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_3dintersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_3dintersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_asgml"(integer, "public"."geometry", integer, integer, "text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_asgml"(integer, "public"."geometry", integer, integer, "text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_asgml"(integer, "public"."geometry", integer, integer, "text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_asgml"(integer, "public"."geometry", integer, integer, "text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_asx3d"(integer, "public"."geometry", integer, integer, "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_asx3d"(integer, "public"."geometry", integer, integer, "text") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_asx3d"(integer, "public"."geometry", integer, integer, "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_asx3d"(integer, "public"."geometry", integer, integer, "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_bestsrid"("public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_bestsrid"("public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_bestsrid"("public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_bestsrid"("public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_bestsrid"("public"."geography", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_bestsrid"("public"."geography", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_bestsrid"("public"."geography", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_bestsrid"("public"."geography", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_contains"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_contains"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_contains"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_contains"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_containsproperly"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_containsproperly"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_containsproperly"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_containsproperly"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_coveredby"("geog1" "public"."geography", "geog2" "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_coveredby"("geog1" "public"."geography", "geog2" "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_coveredby"("geog1" "public"."geography", "geog2" "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_coveredby"("geog1" "public"."geography", "geog2" "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_coveredby"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_coveredby"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_coveredby"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_coveredby"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_covers"("geog1" "public"."geography", "geog2" "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_covers"("geog1" "public"."geography", "geog2" "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_covers"("geog1" "public"."geography", "geog2" "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_covers"("geog1" "public"."geography", "geog2" "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_covers"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_covers"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_covers"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_covers"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_crosses"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_crosses"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_crosses"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_crosses"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_dfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_dfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_dfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_dfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_distancetree"("public"."geography", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_distancetree"("public"."geography", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_distancetree"("public"."geography", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_distancetree"("public"."geography", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_distancetree"("public"."geography", "public"."geography", double precision, boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_distancetree"("public"."geography", "public"."geography", double precision, boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_distancetree"("public"."geography", "public"."geography", double precision, boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_distancetree"("public"."geography", "public"."geography", double precision, boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_distanceuncached"("public"."geography", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_distanceuncached"("public"."geography", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_distanceuncached"("public"."geography", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_distanceuncached"("public"."geography", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_distanceuncached"("public"."geography", "public"."geography", boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_distanceuncached"("public"."geography", "public"."geography", boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_distanceuncached"("public"."geography", "public"."geography", boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_distanceuncached"("public"."geography", "public"."geography", boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_distanceuncached"("public"."geography", "public"."geography", double precision, boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_distanceuncached"("public"."geography", "public"."geography", double precision, boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_distanceuncached"("public"."geography", "public"."geography", double precision, boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_distanceuncached"("public"."geography", "public"."geography", double precision, boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_dwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_dwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_dwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_dwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_dwithin"("geog1" "public"."geography", "geog2" "public"."geography", "tolerance" double precision, "use_spheroid" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_dwithin"("geog1" "public"."geography", "geog2" "public"."geography", "tolerance" double precision, "use_spheroid" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_dwithin"("geog1" "public"."geography", "geog2" "public"."geography", "tolerance" double precision, "use_spheroid" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_dwithin"("geog1" "public"."geography", "geog2" "public"."geography", "tolerance" double precision, "use_spheroid" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_dwithinuncached"("public"."geography", "public"."geography", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_dwithinuncached"("public"."geography", "public"."geography", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_dwithinuncached"("public"."geography", "public"."geography", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_dwithinuncached"("public"."geography", "public"."geography", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_dwithinuncached"("public"."geography", "public"."geography", double precision, boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_dwithinuncached"("public"."geography", "public"."geography", double precision, boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_dwithinuncached"("public"."geography", "public"."geography", double precision, boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_dwithinuncached"("public"."geography", "public"."geography", double precision, boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_equals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_equals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_equals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_equals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_expand"("public"."geography", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_expand"("public"."geography", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_expand"("public"."geography", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_expand"("public"."geography", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_geomfromgml"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_geomfromgml"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_geomfromgml"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_geomfromgml"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_intersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_intersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_intersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_intersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_linecrossingdirection"("line1" "public"."geometry", "line2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_linecrossingdirection"("line1" "public"."geometry", "line2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_linecrossingdirection"("line1" "public"."geometry", "line2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_linecrossingdirection"("line1" "public"."geometry", "line2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_longestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_longestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_longestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_longestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_maxdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_maxdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_maxdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_maxdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_orderingequals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_orderingequals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_orderingequals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_orderingequals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_overlaps"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_overlaps"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_overlaps"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_overlaps"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_pointoutside"("public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_pointoutside"("public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_pointoutside"("public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_pointoutside"("public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_sortablehash"("geom" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_sortablehash"("geom" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_sortablehash"("geom" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_sortablehash"("geom" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_touches"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_touches"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_touches"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_touches"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_voronoi"("g1" "public"."geometry", "clip" "public"."geometry", "tolerance" double precision, "return_polygons" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_voronoi"("g1" "public"."geometry", "clip" "public"."geometry", "tolerance" double precision, "return_polygons" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."_st_voronoi"("g1" "public"."geometry", "clip" "public"."geometry", "tolerance" double precision, "return_polygons" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_voronoi"("g1" "public"."geometry", "clip" "public"."geometry", "tolerance" double precision, "return_polygons" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."_st_within"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."_st_within"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."_st_within"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."_st_within"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."addauth"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."addauth"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."addauth"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."addauth"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."addgeometrycolumn"("table_name" character varying, "column_name" character varying, "new_srid" integer, "new_type" character varying, "new_dim" integer, "use_typmod" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."addgeometrycolumn"("table_name" character varying, "column_name" character varying, "new_srid" integer, "new_type" character varying, "new_dim" integer, "use_typmod" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."addgeometrycolumn"("table_name" character varying, "column_name" character varying, "new_srid" integer, "new_type" character varying, "new_dim" integer, "use_typmod" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."addgeometrycolumn"("table_name" character varying, "column_name" character varying, "new_srid" integer, "new_type" character varying, "new_dim" integer, "use_typmod" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."addgeometrycolumn"("schema_name" character varying, "table_name" character varying, "column_name" character varying, "new_srid" integer, "new_type" character varying, "new_dim" integer, "use_typmod" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."addgeometrycolumn"("schema_name" character varying, "table_name" character varying, "column_name" character varying, "new_srid" integer, "new_type" character varying, "new_dim" integer, "use_typmod" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."addgeometrycolumn"("schema_name" character varying, "table_name" character varying, "column_name" character varying, "new_srid" integer, "new_type" character varying, "new_dim" integer, "use_typmod" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."addgeometrycolumn"("schema_name" character varying, "table_name" character varying, "column_name" character varying, "new_srid" integer, "new_type" character varying, "new_dim" integer, "use_typmod" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."addgeometrycolumn"("catalog_name" character varying, "schema_name" character varying, "table_name" character varying, "column_name" character varying, "new_srid_in" integer, "new_type" character varying, "new_dim" integer, "use_typmod" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."addgeometrycolumn"("catalog_name" character varying, "schema_name" character varying, "table_name" character varying, "column_name" character varying, "new_srid_in" integer, "new_type" character varying, "new_dim" integer, "use_typmod" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."addgeometrycolumn"("catalog_name" character varying, "schema_name" character varying, "table_name" character varying, "column_name" character varying, "new_srid_in" integer, "new_type" character varying, "new_dim" integer, "use_typmod" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."addgeometrycolumn"("catalog_name" character varying, "schema_name" character varying, "table_name" character varying, "column_name" character varying, "new_srid_in" integer, "new_type" character varying, "new_dim" integer, "use_typmod" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."box3dtobox"("public"."box3d") TO "postgres"; GRANT ALL ON FUNCTION "public"."box3dtobox"("public"."box3d") TO "anon"; GRANT ALL ON FUNCTION "public"."box3dtobox"("public"."box3d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."box3dtobox"("public"."box3d") TO "service_role"; GRANT ALL ON FUNCTION "public"."checkauth"("text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."checkauth"("text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."checkauth"("text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."checkauth"("text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."checkauth"("text", "text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."checkauth"("text", "text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."checkauth"("text", "text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."checkauth"("text", "text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."checkauthtrigger"() TO "postgres"; GRANT ALL ON FUNCTION "public"."checkauthtrigger"() TO "anon"; GRANT ALL ON FUNCTION "public"."checkauthtrigger"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."checkauthtrigger"() TO "service_role"; GRANT ALL ON FUNCTION "public"."contains_2d"("public"."box2df", "public"."box2df") TO "postgres"; GRANT ALL ON FUNCTION "public"."contains_2d"("public"."box2df", "public"."box2df") TO "anon"; GRANT ALL ON FUNCTION "public"."contains_2d"("public"."box2df", "public"."box2df") TO "authenticated"; GRANT ALL ON FUNCTION "public"."contains_2d"("public"."box2df", "public"."box2df") TO "service_role"; GRANT ALL ON FUNCTION "public"."contains_2d"("public"."box2df", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."contains_2d"("public"."box2df", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."contains_2d"("public"."box2df", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."contains_2d"("public"."box2df", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."contains_2d"("public"."geometry", "public"."box2df") TO "postgres"; GRANT ALL ON FUNCTION "public"."contains_2d"("public"."geometry", "public"."box2df") TO "anon"; GRANT ALL ON FUNCTION "public"."contains_2d"("public"."geometry", "public"."box2df") TO "authenticated"; GRANT ALL ON FUNCTION "public"."contains_2d"("public"."geometry", "public"."box2df") TO "service_role"; GRANT ALL ON FUNCTION "public"."create_default_user_preferences"() TO "anon"; GRANT ALL ON FUNCTION "public"."create_default_user_preferences"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."create_default_user_preferences"() TO "service_role"; GRANT ALL ON FUNCTION "public"."disablelongtransactions"() TO "postgres"; GRANT ALL ON FUNCTION "public"."disablelongtransactions"() TO "anon"; GRANT ALL ON FUNCTION "public"."disablelongtransactions"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."disablelongtransactions"() TO "service_role"; GRANT ALL ON FUNCTION "public"."dropgeometrycolumn"("table_name" character varying, "column_name" character varying) TO "postgres"; GRANT ALL ON FUNCTION "public"."dropgeometrycolumn"("table_name" character varying, "column_name" character varying) TO "anon"; GRANT ALL ON FUNCTION "public"."dropgeometrycolumn"("table_name" character varying, "column_name" character varying) TO "authenticated"; GRANT ALL ON FUNCTION "public"."dropgeometrycolumn"("table_name" character varying, "column_name" character varying) TO "service_role"; GRANT ALL ON FUNCTION "public"."dropgeometrycolumn"("schema_name" character varying, "table_name" character varying, "column_name" character varying) TO "postgres"; GRANT ALL ON FUNCTION "public"."dropgeometrycolumn"("schema_name" character varying, "table_name" character varying, "column_name" character varying) TO "anon"; GRANT ALL ON FUNCTION "public"."dropgeometrycolumn"("schema_name" character varying, "table_name" character varying, "column_name" character varying) TO "authenticated"; GRANT ALL ON FUNCTION "public"."dropgeometrycolumn"("schema_name" character varying, "table_name" character varying, "column_name" character varying) TO "service_role"; GRANT ALL ON FUNCTION "public"."dropgeometrycolumn"("catalog_name" character varying, "schema_name" character varying, "table_name" character varying, "column_name" character varying) TO "postgres"; GRANT ALL ON FUNCTION "public"."dropgeometrycolumn"("catalog_name" character varying, "schema_name" character varying, "table_name" character varying, "column_name" character varying) TO "anon"; GRANT ALL ON FUNCTION "public"."dropgeometrycolumn"("catalog_name" character varying, "schema_name" character varying, "table_name" character varying, "column_name" character varying) TO "authenticated"; GRANT ALL ON FUNCTION "public"."dropgeometrycolumn"("catalog_name" character varying, "schema_name" character varying, "table_name" character varying, "column_name" character varying) TO "service_role"; GRANT ALL ON FUNCTION "public"."dropgeometrytable"("table_name" character varying) TO "postgres"; GRANT ALL ON FUNCTION "public"."dropgeometrytable"("table_name" character varying) TO "anon"; GRANT ALL ON FUNCTION "public"."dropgeometrytable"("table_name" character varying) TO "authenticated"; GRANT ALL ON FUNCTION "public"."dropgeometrytable"("table_name" character varying) TO "service_role"; GRANT ALL ON FUNCTION "public"."dropgeometrytable"("schema_name" character varying, "table_name" character varying) TO "postgres"; GRANT ALL ON FUNCTION "public"."dropgeometrytable"("schema_name" character varying, "table_name" character varying) TO "anon"; GRANT ALL ON FUNCTION "public"."dropgeometrytable"("schema_name" character varying, "table_name" character varying) TO "authenticated"; GRANT ALL ON FUNCTION "public"."dropgeometrytable"("schema_name" character varying, "table_name" character varying) TO "service_role"; GRANT ALL ON FUNCTION "public"."dropgeometrytable"("catalog_name" character varying, "schema_name" character varying, "table_name" character varying) TO "postgres"; GRANT ALL ON FUNCTION "public"."dropgeometrytable"("catalog_name" character varying, "schema_name" character varying, "table_name" character varying) TO "anon"; GRANT ALL ON FUNCTION "public"."dropgeometrytable"("catalog_name" character varying, "schema_name" character varying, "table_name" character varying) TO "authenticated"; GRANT ALL ON FUNCTION "public"."dropgeometrytable"("catalog_name" character varying, "schema_name" character varying, "table_name" character varying) TO "service_role"; GRANT ALL ON FUNCTION "public"."enablelongtransactions"() TO "postgres"; GRANT ALL ON FUNCTION "public"."enablelongtransactions"() TO "anon"; GRANT ALL ON FUNCTION "public"."enablelongtransactions"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."enablelongtransactions"() TO "service_role"; GRANT ALL ON FUNCTION "public"."equals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."equals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."equals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."equals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."expire_old_invitations"() TO "anon"; GRANT ALL ON FUNCTION "public"."expire_old_invitations"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."expire_old_invitations"() TO "service_role"; GRANT ALL ON FUNCTION "public"."find_srid"(character varying, character varying, character varying) TO "postgres"; GRANT ALL ON FUNCTION "public"."find_srid"(character varying, character varying, character varying) TO "anon"; GRANT ALL ON FUNCTION "public"."find_srid"(character varying, character varying, character varying) TO "authenticated"; GRANT ALL ON FUNCTION "public"."find_srid"(character varying, character varying, character varying) TO "service_role"; GRANT ALL ON FUNCTION "public"."geog_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geog_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geog_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geog_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_cmp"("public"."geography", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_cmp"("public"."geography", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_cmp"("public"."geography", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_cmp"("public"."geography", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_distance_knn"("public"."geography", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_distance_knn"("public"."geography", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_distance_knn"("public"."geography", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_distance_knn"("public"."geography", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_eq"("public"."geography", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_eq"("public"."geography", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_eq"("public"."geography", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_eq"("public"."geography", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_ge"("public"."geography", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_ge"("public"."geography", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_ge"("public"."geography", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_ge"("public"."geography", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_gist_compress"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_gist_compress"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_gist_compress"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_gist_compress"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_gist_consistent"("internal", "public"."geography", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_gist_consistent"("internal", "public"."geography", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."geography_gist_consistent"("internal", "public"."geography", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_gist_consistent"("internal", "public"."geography", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_gist_decompress"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_gist_decompress"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_gist_decompress"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_gist_decompress"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_gist_distance"("internal", "public"."geography", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_gist_distance"("internal", "public"."geography", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."geography_gist_distance"("internal", "public"."geography", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_gist_distance"("internal", "public"."geography", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_gist_penalty"("internal", "internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_gist_penalty"("internal", "internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_gist_penalty"("internal", "internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_gist_penalty"("internal", "internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_gist_picksplit"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_gist_picksplit"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_gist_picksplit"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_gist_picksplit"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_gist_same"("public"."box2d", "public"."box2d", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_gist_same"("public"."box2d", "public"."box2d", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_gist_same"("public"."box2d", "public"."box2d", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_gist_same"("public"."box2d", "public"."box2d", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_gist_union"("bytea", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_gist_union"("bytea", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_gist_union"("bytea", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_gist_union"("bytea", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_gt"("public"."geography", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_gt"("public"."geography", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_gt"("public"."geography", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_gt"("public"."geography", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_le"("public"."geography", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_le"("public"."geography", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_le"("public"."geography", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_le"("public"."geography", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_lt"("public"."geography", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_lt"("public"."geography", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_lt"("public"."geography", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_lt"("public"."geography", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_overlaps"("public"."geography", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_overlaps"("public"."geography", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_overlaps"("public"."geography", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_overlaps"("public"."geography", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_spgist_choose_nd"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_spgist_choose_nd"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_spgist_choose_nd"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_spgist_choose_nd"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_spgist_compress_nd"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_spgist_compress_nd"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_spgist_compress_nd"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_spgist_compress_nd"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_spgist_config_nd"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_spgist_config_nd"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_spgist_config_nd"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_spgist_config_nd"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_spgist_inner_consistent_nd"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_spgist_inner_consistent_nd"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_spgist_inner_consistent_nd"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_spgist_inner_consistent_nd"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_spgist_leaf_consistent_nd"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_spgist_leaf_consistent_nd"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_spgist_leaf_consistent_nd"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_spgist_leaf_consistent_nd"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geography_spgist_picksplit_nd"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geography_spgist_picksplit_nd"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geography_spgist_picksplit_nd"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geography_spgist_picksplit_nd"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geom2d_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geom2d_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geom2d_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geom2d_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geom3d_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geom3d_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geom3d_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geom3d_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geom4d_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geom4d_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geom4d_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geom4d_brin_inclusion_add_value"("internal", "internal", "internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_above"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_above"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_above"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_above"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_below"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_below"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_below"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_below"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_cmp"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_cmp"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_cmp"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_cmp"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_contained_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_contained_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_contained_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_contained_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_contains"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_contains"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_contains"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_contains"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_contains_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_contains_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_contains_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_contains_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_contains_nd"("public"."geometry", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_contains_nd"("public"."geometry", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_contains_nd"("public"."geometry", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_contains_nd"("public"."geometry", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_distance_box"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_distance_box"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_distance_box"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_distance_box"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_distance_centroid"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_distance_centroid"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_distance_centroid"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_distance_centroid"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_distance_centroid_nd"("public"."geometry", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_distance_centroid_nd"("public"."geometry", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_distance_centroid_nd"("public"."geometry", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_distance_centroid_nd"("public"."geometry", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_distance_cpa"("public"."geometry", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_distance_cpa"("public"."geometry", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_distance_cpa"("public"."geometry", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_distance_cpa"("public"."geometry", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_eq"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_eq"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_eq"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_eq"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_ge"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_ge"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_ge"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_ge"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_compress_2d"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_compress_2d"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_compress_2d"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_compress_2d"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_compress_nd"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_compress_nd"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_compress_nd"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_compress_nd"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_consistent_2d"("internal", "public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_consistent_2d"("internal", "public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_consistent_2d"("internal", "public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_consistent_2d"("internal", "public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_consistent_nd"("internal", "public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_consistent_nd"("internal", "public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_consistent_nd"("internal", "public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_consistent_nd"("internal", "public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_decompress_2d"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_decompress_2d"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_decompress_2d"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_decompress_2d"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_decompress_nd"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_decompress_nd"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_decompress_nd"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_decompress_nd"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_distance_2d"("internal", "public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_distance_2d"("internal", "public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_distance_2d"("internal", "public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_distance_2d"("internal", "public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_distance_nd"("internal", "public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_distance_nd"("internal", "public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_distance_nd"("internal", "public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_distance_nd"("internal", "public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_penalty_2d"("internal", "internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_penalty_2d"("internal", "internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_penalty_2d"("internal", "internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_penalty_2d"("internal", "internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_penalty_nd"("internal", "internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_penalty_nd"("internal", "internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_penalty_nd"("internal", "internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_penalty_nd"("internal", "internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_picksplit_2d"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_picksplit_2d"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_picksplit_2d"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_picksplit_2d"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_picksplit_nd"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_picksplit_nd"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_picksplit_nd"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_picksplit_nd"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_same_2d"("geom1" "public"."geometry", "geom2" "public"."geometry", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_same_2d"("geom1" "public"."geometry", "geom2" "public"."geometry", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_same_2d"("geom1" "public"."geometry", "geom2" "public"."geometry", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_same_2d"("geom1" "public"."geometry", "geom2" "public"."geometry", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_same_nd"("public"."geometry", "public"."geometry", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_same_nd"("public"."geometry", "public"."geometry", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_same_nd"("public"."geometry", "public"."geometry", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_same_nd"("public"."geometry", "public"."geometry", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_sortsupport_2d"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_sortsupport_2d"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_sortsupport_2d"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_sortsupport_2d"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_union_2d"("bytea", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_union_2d"("bytea", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_union_2d"("bytea", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_union_2d"("bytea", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gist_union_nd"("bytea", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gist_union_nd"("bytea", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gist_union_nd"("bytea", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gist_union_nd"("bytea", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_gt"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_gt"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_gt"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_gt"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_hash"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_hash"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_hash"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_hash"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_le"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_le"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_le"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_le"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_left"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_left"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_left"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_left"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_lt"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_lt"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_lt"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_lt"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_overabove"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_overabove"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_overabove"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_overabove"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_overbelow"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_overbelow"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_overbelow"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_overbelow"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_overlaps"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_overlaps"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_overlaps"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_overlaps"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_overlaps_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_overlaps_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_overlaps_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_overlaps_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_overlaps_nd"("public"."geometry", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_overlaps_nd"("public"."geometry", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_overlaps_nd"("public"."geometry", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_overlaps_nd"("public"."geometry", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_overleft"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_overleft"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_overleft"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_overleft"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_overright"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_overright"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_overright"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_overright"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_right"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_right"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_right"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_right"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_same"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_same"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_same"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_same"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_same_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_same_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_same_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_same_3d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_same_nd"("public"."geometry", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_same_nd"("public"."geometry", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_same_nd"("public"."geometry", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_same_nd"("public"."geometry", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_sortsupport"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_sortsupport"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_sortsupport"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_sortsupport"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_choose_2d"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_choose_2d"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_choose_2d"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_choose_2d"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_choose_3d"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_choose_3d"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_choose_3d"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_choose_3d"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_choose_nd"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_choose_nd"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_choose_nd"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_choose_nd"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_compress_2d"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_compress_2d"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_compress_2d"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_compress_2d"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_compress_3d"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_compress_3d"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_compress_3d"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_compress_3d"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_compress_nd"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_compress_nd"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_compress_nd"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_compress_nd"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_config_2d"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_config_2d"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_config_2d"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_config_2d"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_config_3d"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_config_3d"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_config_3d"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_config_3d"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_config_nd"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_config_nd"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_config_nd"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_config_nd"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_inner_consistent_2d"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_inner_consistent_2d"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_inner_consistent_2d"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_inner_consistent_2d"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_inner_consistent_3d"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_inner_consistent_3d"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_inner_consistent_3d"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_inner_consistent_3d"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_inner_consistent_nd"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_inner_consistent_nd"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_inner_consistent_nd"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_inner_consistent_nd"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_leaf_consistent_2d"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_leaf_consistent_2d"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_leaf_consistent_2d"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_leaf_consistent_2d"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_leaf_consistent_3d"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_leaf_consistent_3d"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_leaf_consistent_3d"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_leaf_consistent_3d"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_leaf_consistent_nd"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_leaf_consistent_nd"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_leaf_consistent_nd"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_leaf_consistent_nd"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_picksplit_2d"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_picksplit_2d"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_picksplit_2d"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_picksplit_2d"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_picksplit_3d"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_picksplit_3d"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_picksplit_3d"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_picksplit_3d"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_spgist_picksplit_nd"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_spgist_picksplit_nd"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_spgist_picksplit_nd"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_spgist_picksplit_nd"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_within"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_within"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_within"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_within"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometry_within_nd"("public"."geometry", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometry_within_nd"("public"."geometry", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometry_within_nd"("public"."geometry", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometry_within_nd"("public"."geometry", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometrytype"("public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometrytype"("public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."geometrytype"("public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometrytype"("public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."geometrytype"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."geometrytype"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."geometrytype"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geometrytype"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."geomfromewkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."geomfromewkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."geomfromewkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geomfromewkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."geomfromewkt"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."geomfromewkt"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."geomfromewkt"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."geomfromewkt"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."get_proj4_from_srid"(integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."get_proj4_from_srid"(integer) TO "anon"; GRANT ALL ON FUNCTION "public"."get_proj4_from_srid"(integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."get_proj4_from_srid"(integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."get_user_client_id"() TO "anon"; GRANT ALL ON FUNCTION "public"."get_user_client_id"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."get_user_client_id"() TO "service_role"; GRANT ALL ON FUNCTION "public"."get_user_contractor_id"() TO "anon"; GRANT ALL ON FUNCTION "public"."get_user_contractor_id"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."get_user_contractor_id"() TO "service_role"; GRANT ALL ON FUNCTION "public"."get_user_role"() TO "anon"; GRANT ALL ON FUNCTION "public"."get_user_role"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."get_user_role"() TO "service_role"; GRANT ALL ON FUNCTION "public"."gettransactionid"() TO "postgres"; GRANT ALL ON FUNCTION "public"."gettransactionid"() TO "anon"; GRANT ALL ON FUNCTION "public"."gettransactionid"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."gettransactionid"() TO "service_role"; GRANT ALL ON FUNCTION "public"."gserialized_gist_joinsel_2d"("internal", "oid", "internal", smallint) TO "postgres"; GRANT ALL ON FUNCTION "public"."gserialized_gist_joinsel_2d"("internal", "oid", "internal", smallint) TO "anon"; GRANT ALL ON FUNCTION "public"."gserialized_gist_joinsel_2d"("internal", "oid", "internal", smallint) TO "authenticated"; GRANT ALL ON FUNCTION "public"."gserialized_gist_joinsel_2d"("internal", "oid", "internal", smallint) TO "service_role"; GRANT ALL ON FUNCTION "public"."gserialized_gist_joinsel_nd"("internal", "oid", "internal", smallint) TO "postgres"; GRANT ALL ON FUNCTION "public"."gserialized_gist_joinsel_nd"("internal", "oid", "internal", smallint) TO "anon"; GRANT ALL ON FUNCTION "public"."gserialized_gist_joinsel_nd"("internal", "oid", "internal", smallint) TO "authenticated"; GRANT ALL ON FUNCTION "public"."gserialized_gist_joinsel_nd"("internal", "oid", "internal", smallint) TO "service_role"; GRANT ALL ON FUNCTION "public"."gserialized_gist_sel_2d"("internal", "oid", "internal", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."gserialized_gist_sel_2d"("internal", "oid", "internal", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."gserialized_gist_sel_2d"("internal", "oid", "internal", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."gserialized_gist_sel_2d"("internal", "oid", "internal", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."gserialized_gist_sel_nd"("internal", "oid", "internal", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."gserialized_gist_sel_nd"("internal", "oid", "internal", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."gserialized_gist_sel_nd"("internal", "oid", "internal", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."gserialized_gist_sel_nd"("internal", "oid", "internal", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."is_contained_2d"("public"."box2df", "public"."box2df") TO "postgres"; GRANT ALL ON FUNCTION "public"."is_contained_2d"("public"."box2df", "public"."box2df") TO "anon"; GRANT ALL ON FUNCTION "public"."is_contained_2d"("public"."box2df", "public"."box2df") TO "authenticated"; GRANT ALL ON FUNCTION "public"."is_contained_2d"("public"."box2df", "public"."box2df") TO "service_role"; GRANT ALL ON FUNCTION "public"."is_contained_2d"("public"."box2df", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."is_contained_2d"("public"."box2df", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."is_contained_2d"("public"."box2df", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."is_contained_2d"("public"."box2df", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."is_contained_2d"("public"."geometry", "public"."box2df") TO "postgres"; GRANT ALL ON FUNCTION "public"."is_contained_2d"("public"."geometry", "public"."box2df") TO "anon"; GRANT ALL ON FUNCTION "public"."is_contained_2d"("public"."geometry", "public"."box2df") TO "authenticated"; GRANT ALL ON FUNCTION "public"."is_contained_2d"("public"."geometry", "public"."box2df") TO "service_role"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text", timestamp without time zone) TO "postgres"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text", timestamp without time zone) TO "anon"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text", timestamp without time zone) TO "authenticated"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text", timestamp without time zone) TO "service_role"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text", "text", timestamp without time zone) TO "postgres"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text", "text", timestamp without time zone) TO "anon"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text", "text", timestamp without time zone) TO "authenticated"; GRANT ALL ON FUNCTION "public"."lockrow"("text", "text", "text", "text", timestamp without time zone) TO "service_role"; GRANT ALL ON FUNCTION "public"."longtransactionsenabled"() TO "postgres"; GRANT ALL ON FUNCTION "public"."longtransactionsenabled"() TO "anon"; GRANT ALL ON FUNCTION "public"."longtransactionsenabled"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."longtransactionsenabled"() TO "service_role"; GRANT ALL ON FUNCTION "public"."manage_ticket_lifecycle"() TO "anon"; GRANT ALL ON FUNCTION "public"."manage_ticket_lifecycle"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."manage_ticket_lifecycle"() TO "service_role"; GRANT ALL ON FUNCTION "public"."overlaps_2d"("public"."box2df", "public"."box2df") TO "postgres"; GRANT ALL ON FUNCTION "public"."overlaps_2d"("public"."box2df", "public"."box2df") TO "anon"; GRANT ALL ON FUNCTION "public"."overlaps_2d"("public"."box2df", "public"."box2df") TO "authenticated"; GRANT ALL ON FUNCTION "public"."overlaps_2d"("public"."box2df", "public"."box2df") TO "service_role"; GRANT ALL ON FUNCTION "public"."overlaps_2d"("public"."box2df", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."overlaps_2d"("public"."box2df", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."overlaps_2d"("public"."box2df", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."overlaps_2d"("public"."box2df", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."overlaps_2d"("public"."geometry", "public"."box2df") TO "postgres"; GRANT ALL ON FUNCTION "public"."overlaps_2d"("public"."geometry", "public"."box2df") TO "anon"; GRANT ALL ON FUNCTION "public"."overlaps_2d"("public"."geometry", "public"."box2df") TO "authenticated"; GRANT ALL ON FUNCTION "public"."overlaps_2d"("public"."geometry", "public"."box2df") TO "service_role"; GRANT ALL ON FUNCTION "public"."overlaps_geog"("public"."geography", "public"."gidx") TO "postgres"; GRANT ALL ON FUNCTION "public"."overlaps_geog"("public"."geography", "public"."gidx") TO "anon"; GRANT ALL ON FUNCTION "public"."overlaps_geog"("public"."geography", "public"."gidx") TO "authenticated"; GRANT ALL ON FUNCTION "public"."overlaps_geog"("public"."geography", "public"."gidx") TO "service_role"; GRANT ALL ON FUNCTION "public"."overlaps_geog"("public"."gidx", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."overlaps_geog"("public"."gidx", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."overlaps_geog"("public"."gidx", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."overlaps_geog"("public"."gidx", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."overlaps_geog"("public"."gidx", "public"."gidx") TO "postgres"; GRANT ALL ON FUNCTION "public"."overlaps_geog"("public"."gidx", "public"."gidx") TO "anon"; GRANT ALL ON FUNCTION "public"."overlaps_geog"("public"."gidx", "public"."gidx") TO "authenticated"; GRANT ALL ON FUNCTION "public"."overlaps_geog"("public"."gidx", "public"."gidx") TO "service_role"; GRANT ALL ON FUNCTION "public"."overlaps_nd"("public"."geometry", "public"."gidx") TO "postgres"; GRANT ALL ON FUNCTION "public"."overlaps_nd"("public"."geometry", "public"."gidx") TO "anon"; GRANT ALL ON FUNCTION "public"."overlaps_nd"("public"."geometry", "public"."gidx") TO "authenticated"; GRANT ALL ON FUNCTION "public"."overlaps_nd"("public"."geometry", "public"."gidx") TO "service_role"; GRANT ALL ON FUNCTION "public"."overlaps_nd"("public"."gidx", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."overlaps_nd"("public"."gidx", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."overlaps_nd"("public"."gidx", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."overlaps_nd"("public"."gidx", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."overlaps_nd"("public"."gidx", "public"."gidx") TO "postgres"; GRANT ALL ON FUNCTION "public"."overlaps_nd"("public"."gidx", "public"."gidx") TO "anon"; GRANT ALL ON FUNCTION "public"."overlaps_nd"("public"."gidx", "public"."gidx") TO "authenticated"; GRANT ALL ON FUNCTION "public"."overlaps_nd"("public"."gidx", "public"."gidx") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_finalfn"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_finalfn"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_finalfn"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_finalfn"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_transfn"("internal", "anyelement") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_transfn"("internal", "anyelement") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_transfn"("internal", "anyelement") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_transfn"("internal", "anyelement") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_transfn"("internal", "anyelement", boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_transfn"("internal", "anyelement", boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_transfn"("internal", "anyelement", boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_transfn"("internal", "anyelement", boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_transfn"("internal", "anyelement", boolean, "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_transfn"("internal", "anyelement", boolean, "text") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_transfn"("internal", "anyelement", boolean, "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asflatgeobuf_transfn"("internal", "anyelement", boolean, "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asgeobuf_finalfn"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asgeobuf_finalfn"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asgeobuf_finalfn"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asgeobuf_finalfn"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asgeobuf_transfn"("internal", "anyelement") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asgeobuf_transfn"("internal", "anyelement") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asgeobuf_transfn"("internal", "anyelement") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asgeobuf_transfn"("internal", "anyelement") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asgeobuf_transfn"("internal", "anyelement", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asgeobuf_transfn"("internal", "anyelement", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asgeobuf_transfn"("internal", "anyelement", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asgeobuf_transfn"("internal", "anyelement", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_combinefn"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_combinefn"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_combinefn"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_combinefn"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_deserialfn"("bytea", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_deserialfn"("bytea", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_deserialfn"("bytea", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_deserialfn"("bytea", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_finalfn"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_finalfn"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_finalfn"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_finalfn"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_serialfn"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_serialfn"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_serialfn"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_serialfn"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text", integer, "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text", integer, "text") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text", integer, "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text", integer, "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text", integer, "text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text", integer, "text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text", integer, "text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_asmvt_transfn"("internal", "anyelement", "text", integer, "text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_accum_transfn"("internal", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_accum_transfn"("internal", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_accum_transfn"("internal", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_accum_transfn"("internal", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_accum_transfn"("internal", "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_accum_transfn"("internal", "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_accum_transfn"("internal", "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_accum_transfn"("internal", "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_accum_transfn"("internal", "public"."geometry", double precision, integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_accum_transfn"("internal", "public"."geometry", double precision, integer) TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_accum_transfn"("internal", "public"."geometry", double precision, integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_accum_transfn"("internal", "public"."geometry", double precision, integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_clusterintersecting_finalfn"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_clusterintersecting_finalfn"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_clusterintersecting_finalfn"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_clusterintersecting_finalfn"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_clusterwithin_finalfn"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_clusterwithin_finalfn"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_clusterwithin_finalfn"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_clusterwithin_finalfn"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_collect_finalfn"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_collect_finalfn"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_collect_finalfn"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_collect_finalfn"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_makeline_finalfn"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_makeline_finalfn"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_makeline_finalfn"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_makeline_finalfn"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_polygonize_finalfn"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_polygonize_finalfn"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_polygonize_finalfn"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_polygonize_finalfn"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_combinefn"("internal", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_combinefn"("internal", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_combinefn"("internal", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_combinefn"("internal", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_deserialfn"("bytea", "internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_deserialfn"("bytea", "internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_deserialfn"("bytea", "internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_deserialfn"("bytea", "internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_finalfn"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_finalfn"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_finalfn"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_finalfn"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_serialfn"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_serialfn"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_serialfn"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_serialfn"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_transfn"("internal", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_transfn"("internal", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_transfn"("internal", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_transfn"("internal", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_transfn"("internal", "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_transfn"("internal", "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_transfn"("internal", "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."pgis_geometry_union_parallel_transfn"("internal", "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."populate_geometry_columns"("use_typmod" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."populate_geometry_columns"("use_typmod" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."populate_geometry_columns"("use_typmod" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."populate_geometry_columns"("use_typmod" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."populate_geometry_columns"("tbl_oid" "oid", "use_typmod" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."populate_geometry_columns"("tbl_oid" "oid", "use_typmod" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."populate_geometry_columns"("tbl_oid" "oid", "use_typmod" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."populate_geometry_columns"("tbl_oid" "oid", "use_typmod" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_addbbox"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_addbbox"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_addbbox"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_addbbox"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_cache_bbox"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_cache_bbox"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_cache_bbox"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_cache_bbox"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_constraint_dims"("geomschema" "text", "geomtable" "text", "geomcolumn" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_constraint_dims"("geomschema" "text", "geomtable" "text", "geomcolumn" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_constraint_dims"("geomschema" "text", "geomtable" "text", "geomcolumn" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_constraint_dims"("geomschema" "text", "geomtable" "text", "geomcolumn" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_constraint_srid"("geomschema" "text", "geomtable" "text", "geomcolumn" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_constraint_srid"("geomschema" "text", "geomtable" "text", "geomcolumn" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_constraint_srid"("geomschema" "text", "geomtable" "text", "geomcolumn" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_constraint_srid"("geomschema" "text", "geomtable" "text", "geomcolumn" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_constraint_type"("geomschema" "text", "geomtable" "text", "geomcolumn" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_constraint_type"("geomschema" "text", "geomtable" "text", "geomcolumn" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_constraint_type"("geomschema" "text", "geomtable" "text", "geomcolumn" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_constraint_type"("geomschema" "text", "geomtable" "text", "geomcolumn" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_dropbbox"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_dropbbox"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_dropbbox"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_dropbbox"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_extensions_upgrade"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_extensions_upgrade"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_extensions_upgrade"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_extensions_upgrade"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_full_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_full_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_full_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_full_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_geos_noop"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_geos_noop"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_geos_noop"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_geos_noop"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_geos_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_geos_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_geos_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_geos_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_getbbox"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_getbbox"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_getbbox"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_getbbox"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_hasbbox"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_hasbbox"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_hasbbox"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_hasbbox"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_index_supportfn"("internal") TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_index_supportfn"("internal") TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_index_supportfn"("internal") TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_index_supportfn"("internal") TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_lib_build_date"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_lib_build_date"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_lib_build_date"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_lib_build_date"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_lib_revision"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_lib_revision"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_lib_revision"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_lib_revision"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_lib_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_lib_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_lib_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_lib_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_libjson_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_libjson_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_libjson_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_libjson_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_liblwgeom_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_liblwgeom_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_liblwgeom_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_liblwgeom_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_libprotobuf_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_libprotobuf_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_libprotobuf_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_libprotobuf_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_libxml_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_libxml_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_libxml_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_libxml_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_noop"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_noop"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_noop"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_noop"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_proj_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_proj_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_proj_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_proj_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_scripts_build_date"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_scripts_build_date"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_scripts_build_date"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_scripts_build_date"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_scripts_installed"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_scripts_installed"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_scripts_installed"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_scripts_installed"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_scripts_released"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_scripts_released"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_scripts_released"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_scripts_released"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_svn_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_svn_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_svn_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_svn_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_transform_geometry"("geom" "public"."geometry", "text", "text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_transform_geometry"("geom" "public"."geometry", "text", "text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_transform_geometry"("geom" "public"."geometry", "text", "text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_transform_geometry"("geom" "public"."geometry", "text", "text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_type_name"("geomname" character varying, "coord_dimension" integer, "use_new_name" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_type_name"("geomname" character varying, "coord_dimension" integer, "use_new_name" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_type_name"("geomname" character varying, "coord_dimension" integer, "use_new_name" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_type_name"("geomname" character varying, "coord_dimension" integer, "use_new_name" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_typmod_dims"(integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_typmod_dims"(integer) TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_typmod_dims"(integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_typmod_dims"(integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_typmod_srid"(integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_typmod_srid"(integer) TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_typmod_srid"(integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_typmod_srid"(integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_typmod_type"(integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_typmod_type"(integer) TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_typmod_type"(integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_typmod_type"(integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."postgis_wagyu_version"() TO "postgres"; GRANT ALL ON FUNCTION "public"."postgis_wagyu_version"() TO "anon"; GRANT ALL ON FUNCTION "public"."postgis_wagyu_version"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."postgis_wagyu_version"() TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3dclosestpoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3dclosestpoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_3dclosestpoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3dclosestpoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3ddfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3ddfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_3ddfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3ddfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3ddistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3ddistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_3ddistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3ddistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3ddwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3ddwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_3ddwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3ddwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3dintersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3dintersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_3dintersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3dintersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3dlength"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3dlength"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_3dlength"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3dlength"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3dlineinterpolatepoint"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3dlineinterpolatepoint"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_3dlineinterpolatepoint"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3dlineinterpolatepoint"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3dlongestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3dlongestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_3dlongestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3dlongestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3dmakebox"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3dmakebox"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_3dmakebox"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3dmakebox"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3dmaxdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3dmaxdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_3dmaxdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3dmaxdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3dperimeter"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3dperimeter"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_3dperimeter"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3dperimeter"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3dshortestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3dshortestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_3dshortestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3dshortestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_addmeasure"("public"."geometry", double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_addmeasure"("public"."geometry", double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_addmeasure"("public"."geometry", double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_addmeasure"("public"."geometry", double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_addpoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_addpoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_addpoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_addpoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_addpoint"("geom1" "public"."geometry", "geom2" "public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_addpoint"("geom1" "public"."geometry", "geom2" "public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_addpoint"("geom1" "public"."geometry", "geom2" "public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_addpoint"("geom1" "public"."geometry", "geom2" "public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_affine"("public"."geometry", double precision, double precision, double precision, double precision, double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_affine"("public"."geometry", double precision, double precision, double precision, double precision, double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_affine"("public"."geometry", double precision, double precision, double precision, double precision, double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_affine"("public"."geometry", double precision, double precision, double precision, double precision, double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_affine"("public"."geometry", double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_affine"("public"."geometry", double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_affine"("public"."geometry", double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_affine"("public"."geometry", double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_angle"("line1" "public"."geometry", "line2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_angle"("line1" "public"."geometry", "line2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_angle"("line1" "public"."geometry", "line2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_angle"("line1" "public"."geometry", "line2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_angle"("pt1" "public"."geometry", "pt2" "public"."geometry", "pt3" "public"."geometry", "pt4" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_angle"("pt1" "public"."geometry", "pt2" "public"."geometry", "pt3" "public"."geometry", "pt4" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_angle"("pt1" "public"."geometry", "pt2" "public"."geometry", "pt3" "public"."geometry", "pt4" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_angle"("pt1" "public"."geometry", "pt2" "public"."geometry", "pt3" "public"."geometry", "pt4" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_area"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_area"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_area"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_area"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_area"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_area"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_area"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_area"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_area"("geog" "public"."geography", "use_spheroid" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_area"("geog" "public"."geography", "use_spheroid" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_area"("geog" "public"."geography", "use_spheroid" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_area"("geog" "public"."geography", "use_spheroid" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_area2d"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_area2d"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_area2d"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_area2d"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geography", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geography", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geography", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geography", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geometry", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geometry", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geometry", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asbinary"("public"."geometry", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asencodedpolyline"("geom" "public"."geometry", "nprecision" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asencodedpolyline"("geom" "public"."geometry", "nprecision" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_asencodedpolyline"("geom" "public"."geometry", "nprecision" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asencodedpolyline"("geom" "public"."geometry", "nprecision" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asewkb"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asewkb"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asewkb"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asewkb"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asewkb"("public"."geometry", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asewkb"("public"."geometry", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asewkb"("public"."geometry", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asewkb"("public"."geometry", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asewkt"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asewkt"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asewkt"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asewkt"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geography", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geography", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geography", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geography", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asewkt"("public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("geog" "public"."geography", "maxdecimaldigits" integer, "options" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("geog" "public"."geography", "maxdecimaldigits" integer, "options" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("geog" "public"."geography", "maxdecimaldigits" integer, "options" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("geog" "public"."geography", "maxdecimaldigits" integer, "options" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("r" "record", "geom_column" "text", "maxdecimaldigits" integer, "pretty_bool" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("r" "record", "geom_column" "text", "maxdecimaldigits" integer, "pretty_bool" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("r" "record", "geom_column" "text", "maxdecimaldigits" integer, "pretty_bool" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asgeojson"("r" "record", "geom_column" "text", "maxdecimaldigits" integer, "pretty_bool" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asgml"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asgml"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asgml"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asgml"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asgml"("geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asgml"("geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_asgml"("geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asgml"("geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asgml"("geog" "public"."geography", "maxdecimaldigits" integer, "options" integer, "nprefix" "text", "id" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asgml"("geog" "public"."geography", "maxdecimaldigits" integer, "options" integer, "nprefix" "text", "id" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asgml"("geog" "public"."geography", "maxdecimaldigits" integer, "options" integer, "nprefix" "text", "id" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asgml"("geog" "public"."geography", "maxdecimaldigits" integer, "options" integer, "nprefix" "text", "id" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asgml"("version" integer, "geog" "public"."geography", "maxdecimaldigits" integer, "options" integer, "nprefix" "text", "id" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asgml"("version" integer, "geog" "public"."geography", "maxdecimaldigits" integer, "options" integer, "nprefix" "text", "id" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asgml"("version" integer, "geog" "public"."geography", "maxdecimaldigits" integer, "options" integer, "nprefix" "text", "id" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asgml"("version" integer, "geog" "public"."geography", "maxdecimaldigits" integer, "options" integer, "nprefix" "text", "id" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asgml"("version" integer, "geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer, "nprefix" "text", "id" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asgml"("version" integer, "geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer, "nprefix" "text", "id" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asgml"("version" integer, "geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer, "nprefix" "text", "id" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asgml"("version" integer, "geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer, "nprefix" "text", "id" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_ashexewkb"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_ashexewkb"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_ashexewkb"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_ashexewkb"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_ashexewkb"("public"."geometry", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_ashexewkb"("public"."geometry", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_ashexewkb"("public"."geometry", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_ashexewkb"("public"."geometry", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_askml"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_askml"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_askml"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_askml"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_askml"("geog" "public"."geography", "maxdecimaldigits" integer, "nprefix" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_askml"("geog" "public"."geography", "maxdecimaldigits" integer, "nprefix" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_askml"("geog" "public"."geography", "maxdecimaldigits" integer, "nprefix" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_askml"("geog" "public"."geography", "maxdecimaldigits" integer, "nprefix" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_askml"("geom" "public"."geometry", "maxdecimaldigits" integer, "nprefix" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_askml"("geom" "public"."geometry", "maxdecimaldigits" integer, "nprefix" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_askml"("geom" "public"."geometry", "maxdecimaldigits" integer, "nprefix" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_askml"("geom" "public"."geometry", "maxdecimaldigits" integer, "nprefix" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_aslatlontext"("geom" "public"."geometry", "tmpl" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_aslatlontext"("geom" "public"."geometry", "tmpl" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_aslatlontext"("geom" "public"."geometry", "tmpl" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_aslatlontext"("geom" "public"."geometry", "tmpl" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asmarc21"("geom" "public"."geometry", "format" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asmarc21"("geom" "public"."geometry", "format" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asmarc21"("geom" "public"."geometry", "format" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asmarc21"("geom" "public"."geometry", "format" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asmvtgeom"("geom" "public"."geometry", "bounds" "public"."box2d", "extent" integer, "buffer" integer, "clip_geom" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asmvtgeom"("geom" "public"."geometry", "bounds" "public"."box2d", "extent" integer, "buffer" integer, "clip_geom" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_asmvtgeom"("geom" "public"."geometry", "bounds" "public"."box2d", "extent" integer, "buffer" integer, "clip_geom" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asmvtgeom"("geom" "public"."geometry", "bounds" "public"."box2d", "extent" integer, "buffer" integer, "clip_geom" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_assvg"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_assvg"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_assvg"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_assvg"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_assvg"("geog" "public"."geography", "rel" integer, "maxdecimaldigits" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_assvg"("geog" "public"."geography", "rel" integer, "maxdecimaldigits" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_assvg"("geog" "public"."geography", "rel" integer, "maxdecimaldigits" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_assvg"("geog" "public"."geography", "rel" integer, "maxdecimaldigits" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_assvg"("geom" "public"."geometry", "rel" integer, "maxdecimaldigits" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_assvg"("geom" "public"."geometry", "rel" integer, "maxdecimaldigits" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_assvg"("geom" "public"."geometry", "rel" integer, "maxdecimaldigits" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_assvg"("geom" "public"."geometry", "rel" integer, "maxdecimaldigits" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_astext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_astext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_astext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_astext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geography", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geography", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geography", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geography", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_astext"("public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_astwkb"("geom" "public"."geometry", "prec" integer, "prec_z" integer, "prec_m" integer, "with_sizes" boolean, "with_boxes" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_astwkb"("geom" "public"."geometry", "prec" integer, "prec_z" integer, "prec_m" integer, "with_sizes" boolean, "with_boxes" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_astwkb"("geom" "public"."geometry", "prec" integer, "prec_z" integer, "prec_m" integer, "with_sizes" boolean, "with_boxes" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_astwkb"("geom" "public"."geometry", "prec" integer, "prec_z" integer, "prec_m" integer, "with_sizes" boolean, "with_boxes" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_astwkb"("geom" "public"."geometry"[], "ids" bigint[], "prec" integer, "prec_z" integer, "prec_m" integer, "with_sizes" boolean, "with_boxes" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_astwkb"("geom" "public"."geometry"[], "ids" bigint[], "prec" integer, "prec_z" integer, "prec_m" integer, "with_sizes" boolean, "with_boxes" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_astwkb"("geom" "public"."geometry"[], "ids" bigint[], "prec" integer, "prec_z" integer, "prec_m" integer, "with_sizes" boolean, "with_boxes" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_astwkb"("geom" "public"."geometry"[], "ids" bigint[], "prec" integer, "prec_z" integer, "prec_m" integer, "with_sizes" boolean, "with_boxes" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asx3d"("geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asx3d"("geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_asx3d"("geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asx3d"("geom" "public"."geometry", "maxdecimaldigits" integer, "options" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_azimuth"("geog1" "public"."geography", "geog2" "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_azimuth"("geog1" "public"."geography", "geog2" "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."st_azimuth"("geog1" "public"."geography", "geog2" "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_azimuth"("geog1" "public"."geography", "geog2" "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_azimuth"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_azimuth"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_azimuth"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_azimuth"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_bdmpolyfromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_bdmpolyfromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_bdmpolyfromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_bdmpolyfromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_bdpolyfromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_bdpolyfromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_bdpolyfromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_bdpolyfromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_boundary"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_boundary"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_boundary"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_boundary"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_boundingdiagonal"("geom" "public"."geometry", "fits" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_boundingdiagonal"("geom" "public"."geometry", "fits" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_boundingdiagonal"("geom" "public"."geometry", "fits" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_boundingdiagonal"("geom" "public"."geometry", "fits" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_box2dfromgeohash"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_box2dfromgeohash"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_box2dfromgeohash"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_box2dfromgeohash"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_buffer"("text", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_buffer"("text", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_buffer"("text", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_buffer"("text", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_buffer"("public"."geography", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_buffer"("public"."geography", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_buffer"("public"."geography", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_buffer"("public"."geography", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_buffer"("text", double precision, integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_buffer"("text", double precision, integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_buffer"("text", double precision, integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_buffer"("text", double precision, integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_buffer"("text", double precision, "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_buffer"("text", double precision, "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_buffer"("text", double precision, "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_buffer"("text", double precision, "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_buffer"("public"."geography", double precision, integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_buffer"("public"."geography", double precision, integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_buffer"("public"."geography", double precision, integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_buffer"("public"."geography", double precision, integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_buffer"("public"."geography", double precision, "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_buffer"("public"."geography", double precision, "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_buffer"("public"."geography", double precision, "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_buffer"("public"."geography", double precision, "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_buffer"("geom" "public"."geometry", "radius" double precision, "quadsegs" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_buffer"("geom" "public"."geometry", "radius" double precision, "quadsegs" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_buffer"("geom" "public"."geometry", "radius" double precision, "quadsegs" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_buffer"("geom" "public"."geometry", "radius" double precision, "quadsegs" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_buffer"("geom" "public"."geometry", "radius" double precision, "options" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_buffer"("geom" "public"."geometry", "radius" double precision, "options" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_buffer"("geom" "public"."geometry", "radius" double precision, "options" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_buffer"("geom" "public"."geometry", "radius" double precision, "options" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_buildarea"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_buildarea"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_buildarea"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_buildarea"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_centroid"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_centroid"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_centroid"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_centroid"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_centroid"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_centroid"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_centroid"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_centroid"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_centroid"("public"."geography", "use_spheroid" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_centroid"("public"."geography", "use_spheroid" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_centroid"("public"."geography", "use_spheroid" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_centroid"("public"."geography", "use_spheroid" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_chaikinsmoothing"("public"."geometry", integer, boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_chaikinsmoothing"("public"."geometry", integer, boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_chaikinsmoothing"("public"."geometry", integer, boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_chaikinsmoothing"("public"."geometry", integer, boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_cleangeometry"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_cleangeometry"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_cleangeometry"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_cleangeometry"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_clipbybox2d"("geom" "public"."geometry", "box" "public"."box2d") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_clipbybox2d"("geom" "public"."geometry", "box" "public"."box2d") TO "anon"; GRANT ALL ON FUNCTION "public"."st_clipbybox2d"("geom" "public"."geometry", "box" "public"."box2d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_clipbybox2d"("geom" "public"."geometry", "box" "public"."box2d") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_closestpoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_closestpoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_closestpoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_closestpoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_closestpointofapproach"("public"."geometry", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_closestpointofapproach"("public"."geometry", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_closestpointofapproach"("public"."geometry", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_closestpointofapproach"("public"."geometry", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_clusterdbscan"("public"."geometry", "eps" double precision, "minpoints" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_clusterdbscan"("public"."geometry", "eps" double precision, "minpoints" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_clusterdbscan"("public"."geometry", "eps" double precision, "minpoints" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_clusterdbscan"("public"."geometry", "eps" double precision, "minpoints" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_clusterintersecting"("public"."geometry"[]) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_clusterintersecting"("public"."geometry"[]) TO "anon"; GRANT ALL ON FUNCTION "public"."st_clusterintersecting"("public"."geometry"[]) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_clusterintersecting"("public"."geometry"[]) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_clusterkmeans"("geom" "public"."geometry", "k" integer, "max_radius" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_clusterkmeans"("geom" "public"."geometry", "k" integer, "max_radius" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_clusterkmeans"("geom" "public"."geometry", "k" integer, "max_radius" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_clusterkmeans"("geom" "public"."geometry", "k" integer, "max_radius" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_clusterwithin"("public"."geometry"[], double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_clusterwithin"("public"."geometry"[], double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_clusterwithin"("public"."geometry"[], double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_clusterwithin"("public"."geometry"[], double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_collect"("public"."geometry"[]) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_collect"("public"."geometry"[]) TO "anon"; GRANT ALL ON FUNCTION "public"."st_collect"("public"."geometry"[]) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_collect"("public"."geometry"[]) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_collect"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_collect"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_collect"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_collect"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_collectionextract"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_collectionextract"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_collectionextract"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_collectionextract"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_collectionextract"("public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_collectionextract"("public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_collectionextract"("public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_collectionextract"("public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_collectionhomogenize"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_collectionhomogenize"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_collectionhomogenize"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_collectionhomogenize"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_combinebbox"("public"."box2d", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_combinebbox"("public"."box2d", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_combinebbox"("public"."box2d", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_combinebbox"("public"."box2d", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_combinebbox"("public"."box3d", "public"."box3d") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_combinebbox"("public"."box3d", "public"."box3d") TO "anon"; GRANT ALL ON FUNCTION "public"."st_combinebbox"("public"."box3d", "public"."box3d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_combinebbox"("public"."box3d", "public"."box3d") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_combinebbox"("public"."box3d", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_combinebbox"("public"."box3d", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_combinebbox"("public"."box3d", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_combinebbox"("public"."box3d", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_concavehull"("param_geom" "public"."geometry", "param_pctconvex" double precision, "param_allow_holes" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_concavehull"("param_geom" "public"."geometry", "param_pctconvex" double precision, "param_allow_holes" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_concavehull"("param_geom" "public"."geometry", "param_pctconvex" double precision, "param_allow_holes" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_concavehull"("param_geom" "public"."geometry", "param_pctconvex" double precision, "param_allow_holes" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_contains"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_contains"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_contains"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_contains"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_containsproperly"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_containsproperly"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_containsproperly"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_containsproperly"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_convexhull"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_convexhull"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_convexhull"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_convexhull"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_coorddim"("geometry" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_coorddim"("geometry" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_coorddim"("geometry" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_coorddim"("geometry" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_coveredby"("text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_coveredby"("text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_coveredby"("text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_coveredby"("text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_coveredby"("geog1" "public"."geography", "geog2" "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_coveredby"("geog1" "public"."geography", "geog2" "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."st_coveredby"("geog1" "public"."geography", "geog2" "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_coveredby"("geog1" "public"."geography", "geog2" "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_coveredby"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_coveredby"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_coveredby"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_coveredby"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_covers"("text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_covers"("text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_covers"("text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_covers"("text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_covers"("geog1" "public"."geography", "geog2" "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_covers"("geog1" "public"."geography", "geog2" "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."st_covers"("geog1" "public"."geography", "geog2" "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_covers"("geog1" "public"."geography", "geog2" "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_covers"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_covers"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_covers"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_covers"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_cpawithin"("public"."geometry", "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_cpawithin"("public"."geometry", "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_cpawithin"("public"."geometry", "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_cpawithin"("public"."geometry", "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_crosses"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_crosses"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_crosses"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_crosses"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_curvetoline"("geom" "public"."geometry", "tol" double precision, "toltype" integer, "flags" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_curvetoline"("geom" "public"."geometry", "tol" double precision, "toltype" integer, "flags" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_curvetoline"("geom" "public"."geometry", "tol" double precision, "toltype" integer, "flags" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_curvetoline"("geom" "public"."geometry", "tol" double precision, "toltype" integer, "flags" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_delaunaytriangles"("g1" "public"."geometry", "tolerance" double precision, "flags" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_delaunaytriangles"("g1" "public"."geometry", "tolerance" double precision, "flags" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_delaunaytriangles"("g1" "public"."geometry", "tolerance" double precision, "flags" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_delaunaytriangles"("g1" "public"."geometry", "tolerance" double precision, "flags" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_dfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_dfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_dfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_dfullywithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_difference"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_difference"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_difference"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_difference"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_dimension"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_dimension"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_dimension"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_dimension"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_disjoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_disjoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_disjoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_disjoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_distance"("text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_distance"("text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_distance"("text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_distance"("text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_distance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_distance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_distance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_distance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_distance"("geog1" "public"."geography", "geog2" "public"."geography", "use_spheroid" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_distance"("geog1" "public"."geography", "geog2" "public"."geography", "use_spheroid" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_distance"("geog1" "public"."geography", "geog2" "public"."geography", "use_spheroid" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_distance"("geog1" "public"."geography", "geog2" "public"."geography", "use_spheroid" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_distancecpa"("public"."geometry", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_distancecpa"("public"."geometry", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_distancecpa"("public"."geometry", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_distancecpa"("public"."geometry", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_distancesphere"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_distancesphere"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_distancesphere"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_distancesphere"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_distancesphere"("geom1" "public"."geometry", "geom2" "public"."geometry", "radius" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_distancesphere"("geom1" "public"."geometry", "geom2" "public"."geometry", "radius" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_distancesphere"("geom1" "public"."geometry", "geom2" "public"."geometry", "radius" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_distancesphere"("geom1" "public"."geometry", "geom2" "public"."geometry", "radius" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_distancespheroid"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_distancespheroid"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_distancespheroid"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_distancespheroid"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_distancespheroid"("geom1" "public"."geometry", "geom2" "public"."geometry", "public"."spheroid") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_distancespheroid"("geom1" "public"."geometry", "geom2" "public"."geometry", "public"."spheroid") TO "anon"; GRANT ALL ON FUNCTION "public"."st_distancespheroid"("geom1" "public"."geometry", "geom2" "public"."geometry", "public"."spheroid") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_distancespheroid"("geom1" "public"."geometry", "geom2" "public"."geometry", "public"."spheroid") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_dump"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_dump"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_dump"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_dump"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_dumppoints"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_dumppoints"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_dumppoints"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_dumppoints"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_dumprings"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_dumprings"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_dumprings"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_dumprings"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_dumpsegments"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_dumpsegments"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_dumpsegments"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_dumpsegments"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_dwithin"("text", "text", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_dwithin"("text", "text", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_dwithin"("text", "text", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_dwithin"("text", "text", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_dwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_dwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_dwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_dwithin"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_dwithin"("geog1" "public"."geography", "geog2" "public"."geography", "tolerance" double precision, "use_spheroid" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_dwithin"("geog1" "public"."geography", "geog2" "public"."geography", "tolerance" double precision, "use_spheroid" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_dwithin"("geog1" "public"."geography", "geog2" "public"."geography", "tolerance" double precision, "use_spheroid" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_dwithin"("geog1" "public"."geography", "geog2" "public"."geography", "tolerance" double precision, "use_spheroid" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_endpoint"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_endpoint"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_endpoint"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_endpoint"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_envelope"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_envelope"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_envelope"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_envelope"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_equals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_equals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_equals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_equals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_estimatedextent"("text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_estimatedextent"("text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_estimatedextent"("text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_estimatedextent"("text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_estimatedextent"("text", "text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_estimatedextent"("text", "text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_estimatedextent"("text", "text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_estimatedextent"("text", "text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_estimatedextent"("text", "text", "text", boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_estimatedextent"("text", "text", "text", boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_estimatedextent"("text", "text", "text", boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_estimatedextent"("text", "text", "text", boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_expand"("public"."box2d", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_expand"("public"."box2d", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_expand"("public"."box2d", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_expand"("public"."box2d", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_expand"("public"."box3d", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_expand"("public"."box3d", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_expand"("public"."box3d", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_expand"("public"."box3d", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_expand"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_expand"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_expand"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_expand"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_expand"("box" "public"."box2d", "dx" double precision, "dy" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_expand"("box" "public"."box2d", "dx" double precision, "dy" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_expand"("box" "public"."box2d", "dx" double precision, "dy" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_expand"("box" "public"."box2d", "dx" double precision, "dy" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_expand"("box" "public"."box3d", "dx" double precision, "dy" double precision, "dz" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_expand"("box" "public"."box3d", "dx" double precision, "dy" double precision, "dz" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_expand"("box" "public"."box3d", "dx" double precision, "dy" double precision, "dz" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_expand"("box" "public"."box3d", "dx" double precision, "dy" double precision, "dz" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_expand"("geom" "public"."geometry", "dx" double precision, "dy" double precision, "dz" double precision, "dm" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_expand"("geom" "public"."geometry", "dx" double precision, "dy" double precision, "dz" double precision, "dm" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_expand"("geom" "public"."geometry", "dx" double precision, "dy" double precision, "dz" double precision, "dm" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_expand"("geom" "public"."geometry", "dx" double precision, "dy" double precision, "dz" double precision, "dm" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_exteriorring"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_exteriorring"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_exteriorring"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_exteriorring"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_filterbym"("public"."geometry", double precision, double precision, boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_filterbym"("public"."geometry", double precision, double precision, boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_filterbym"("public"."geometry", double precision, double precision, boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_filterbym"("public"."geometry", double precision, double precision, boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_findextent"("text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_findextent"("text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_findextent"("text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_findextent"("text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_findextent"("text", "text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_findextent"("text", "text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_findextent"("text", "text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_findextent"("text", "text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_flipcoordinates"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_flipcoordinates"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_flipcoordinates"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_flipcoordinates"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_force2d"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_force2d"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_force2d"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_force2d"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_force3d"("geom" "public"."geometry", "zvalue" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_force3d"("geom" "public"."geometry", "zvalue" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_force3d"("geom" "public"."geometry", "zvalue" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_force3d"("geom" "public"."geometry", "zvalue" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_force3dm"("geom" "public"."geometry", "mvalue" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_force3dm"("geom" "public"."geometry", "mvalue" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_force3dm"("geom" "public"."geometry", "mvalue" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_force3dm"("geom" "public"."geometry", "mvalue" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_force3dz"("geom" "public"."geometry", "zvalue" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_force3dz"("geom" "public"."geometry", "zvalue" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_force3dz"("geom" "public"."geometry", "zvalue" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_force3dz"("geom" "public"."geometry", "zvalue" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_force4d"("geom" "public"."geometry", "zvalue" double precision, "mvalue" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_force4d"("geom" "public"."geometry", "zvalue" double precision, "mvalue" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_force4d"("geom" "public"."geometry", "zvalue" double precision, "mvalue" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_force4d"("geom" "public"."geometry", "zvalue" double precision, "mvalue" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_forcecollection"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_forcecollection"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_forcecollection"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_forcecollection"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_forcecurve"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_forcecurve"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_forcecurve"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_forcecurve"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_forcepolygonccw"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_forcepolygonccw"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_forcepolygonccw"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_forcepolygonccw"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_forcepolygoncw"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_forcepolygoncw"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_forcepolygoncw"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_forcepolygoncw"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_forcerhr"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_forcerhr"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_forcerhr"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_forcerhr"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_forcesfs"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_forcesfs"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_forcesfs"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_forcesfs"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_forcesfs"("public"."geometry", "version" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_forcesfs"("public"."geometry", "version" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_forcesfs"("public"."geometry", "version" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_forcesfs"("public"."geometry", "version" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_frechetdistance"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_frechetdistance"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_frechetdistance"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_frechetdistance"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_fromflatgeobuf"("anyelement", "bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_fromflatgeobuf"("anyelement", "bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_fromflatgeobuf"("anyelement", "bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_fromflatgeobuf"("anyelement", "bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_fromflatgeobuftotable"("text", "text", "bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_fromflatgeobuftotable"("text", "text", "bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_fromflatgeobuftotable"("text", "text", "bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_fromflatgeobuftotable"("text", "text", "bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_generatepoints"("area" "public"."geometry", "npoints" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_generatepoints"("area" "public"."geometry", "npoints" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_generatepoints"("area" "public"."geometry", "npoints" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_generatepoints"("area" "public"."geometry", "npoints" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_generatepoints"("area" "public"."geometry", "npoints" integer, "seed" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_generatepoints"("area" "public"."geometry", "npoints" integer, "seed" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_generatepoints"("area" "public"."geometry", "npoints" integer, "seed" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_generatepoints"("area" "public"."geometry", "npoints" integer, "seed" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geogfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geogfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geogfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geogfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geogfromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geogfromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geogfromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geogfromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geographyfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geographyfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geographyfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geographyfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geohash"("geog" "public"."geography", "maxchars" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geohash"("geog" "public"."geography", "maxchars" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_geohash"("geog" "public"."geography", "maxchars" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geohash"("geog" "public"."geography", "maxchars" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geohash"("geom" "public"."geometry", "maxchars" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geohash"("geom" "public"."geometry", "maxchars" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_geohash"("geom" "public"."geometry", "maxchars" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geohash"("geom" "public"."geometry", "maxchars" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomcollfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomcollfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomcollfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomcollfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomcollfromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomcollfromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomcollfromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomcollfromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomcollfromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomcollfromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomcollfromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomcollfromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomcollfromwkb"("bytea", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomcollfromwkb"("bytea", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomcollfromwkb"("bytea", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomcollfromwkb"("bytea", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geometricmedian"("g" "public"."geometry", "tolerance" double precision, "max_iter" integer, "fail_if_not_converged" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geometricmedian"("g" "public"."geometry", "tolerance" double precision, "max_iter" integer, "fail_if_not_converged" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_geometricmedian"("g" "public"."geometry", "tolerance" double precision, "max_iter" integer, "fail_if_not_converged" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geometricmedian"("g" "public"."geometry", "tolerance" double precision, "max_iter" integer, "fail_if_not_converged" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geometryfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geometryfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geometryfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geometryfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geometryfromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geometryfromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_geometryfromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geometryfromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geometryn"("public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geometryn"("public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_geometryn"("public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geometryn"("public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geometrytype"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geometrytype"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geometrytype"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geometrytype"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromewkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromewkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromewkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromewkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromewkt"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromewkt"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromewkt"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromewkt"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromgeohash"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromgeohash"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromgeohash"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromgeohash"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromgeojson"(json) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromgeojson"(json) TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromgeojson"(json) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromgeojson"(json) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromgeojson"("jsonb") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromgeojson"("jsonb") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromgeojson"("jsonb") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromgeojson"("jsonb") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromgeojson"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromgeojson"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromgeojson"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromgeojson"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromgml"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromgml"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromgml"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromgml"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromgml"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromgml"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromgml"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromgml"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromkml"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromkml"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromkml"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromkml"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfrommarc21"("marc21xml" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfrommarc21"("marc21xml" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfrommarc21"("marc21xml" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfrommarc21"("marc21xml" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromtwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromtwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromtwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromtwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_geomfromwkb"("bytea", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_geomfromwkb"("bytea", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_geomfromwkb"("bytea", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_geomfromwkb"("bytea", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_gmltosql"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_gmltosql"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_gmltosql"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_gmltosql"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_gmltosql"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_gmltosql"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_gmltosql"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_gmltosql"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_hasarc"("geometry" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_hasarc"("geometry" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_hasarc"("geometry" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_hasarc"("geometry" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_hausdorffdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_hausdorffdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_hausdorffdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_hausdorffdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_hausdorffdistance"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_hausdorffdistance"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_hausdorffdistance"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_hausdorffdistance"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_hexagon"("size" double precision, "cell_i" integer, "cell_j" integer, "origin" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_hexagon"("size" double precision, "cell_i" integer, "cell_j" integer, "origin" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_hexagon"("size" double precision, "cell_i" integer, "cell_j" integer, "origin" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_hexagon"("size" double precision, "cell_i" integer, "cell_j" integer, "origin" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_hexagongrid"("size" double precision, "bounds" "public"."geometry", OUT "geom" "public"."geometry", OUT "i" integer, OUT "j" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_hexagongrid"("size" double precision, "bounds" "public"."geometry", OUT "geom" "public"."geometry", OUT "i" integer, OUT "j" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_hexagongrid"("size" double precision, "bounds" "public"."geometry", OUT "geom" "public"."geometry", OUT "i" integer, OUT "j" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_hexagongrid"("size" double precision, "bounds" "public"."geometry", OUT "geom" "public"."geometry", OUT "i" integer, OUT "j" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_interiorringn"("public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_interiorringn"("public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_interiorringn"("public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_interiorringn"("public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_interpolatepoint"("line" "public"."geometry", "point" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_interpolatepoint"("line" "public"."geometry", "point" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_interpolatepoint"("line" "public"."geometry", "point" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_interpolatepoint"("line" "public"."geometry", "point" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_intersection"("text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_intersection"("text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_intersection"("text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_intersection"("text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_intersection"("public"."geography", "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_intersection"("public"."geography", "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."st_intersection"("public"."geography", "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_intersection"("public"."geography", "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_intersection"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_intersection"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_intersection"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_intersection"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_intersects"("text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_intersects"("text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_intersects"("text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_intersects"("text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_intersects"("geog1" "public"."geography", "geog2" "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_intersects"("geog1" "public"."geography", "geog2" "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."st_intersects"("geog1" "public"."geography", "geog2" "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_intersects"("geog1" "public"."geography", "geog2" "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_intersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_intersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_intersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_intersects"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_isclosed"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_isclosed"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_isclosed"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_isclosed"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_iscollection"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_iscollection"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_iscollection"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_iscollection"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_isempty"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_isempty"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_isempty"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_isempty"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_ispolygonccw"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_ispolygonccw"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_ispolygonccw"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_ispolygonccw"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_ispolygoncw"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_ispolygoncw"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_ispolygoncw"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_ispolygoncw"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_isring"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_isring"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_isring"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_isring"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_issimple"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_issimple"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_issimple"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_issimple"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_isvalid"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_isvalid"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_isvalid"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_isvalid"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_isvalid"("public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_isvalid"("public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_isvalid"("public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_isvalid"("public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_isvaliddetail"("geom" "public"."geometry", "flags" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_isvaliddetail"("geom" "public"."geometry", "flags" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_isvaliddetail"("geom" "public"."geometry", "flags" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_isvaliddetail"("geom" "public"."geometry", "flags" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_isvalidreason"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_isvalidreason"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_isvalidreason"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_isvalidreason"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_isvalidreason"("public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_isvalidreason"("public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_isvalidreason"("public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_isvalidreason"("public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_isvalidtrajectory"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_isvalidtrajectory"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_isvalidtrajectory"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_isvalidtrajectory"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_length"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_length"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_length"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_length"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_length"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_length"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_length"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_length"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_length"("geog" "public"."geography", "use_spheroid" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_length"("geog" "public"."geography", "use_spheroid" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_length"("geog" "public"."geography", "use_spheroid" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_length"("geog" "public"."geography", "use_spheroid" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_length2d"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_length2d"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_length2d"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_length2d"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_length2dspheroid"("public"."geometry", "public"."spheroid") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_length2dspheroid"("public"."geometry", "public"."spheroid") TO "anon"; GRANT ALL ON FUNCTION "public"."st_length2dspheroid"("public"."geometry", "public"."spheroid") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_length2dspheroid"("public"."geometry", "public"."spheroid") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_lengthspheroid"("public"."geometry", "public"."spheroid") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_lengthspheroid"("public"."geometry", "public"."spheroid") TO "anon"; GRANT ALL ON FUNCTION "public"."st_lengthspheroid"("public"."geometry", "public"."spheroid") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_lengthspheroid"("public"."geometry", "public"."spheroid") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_letters"("letters" "text", "font" json) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_letters"("letters" "text", "font" json) TO "anon"; GRANT ALL ON FUNCTION "public"."st_letters"("letters" "text", "font" json) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_letters"("letters" "text", "font" json) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linecrossingdirection"("line1" "public"."geometry", "line2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linecrossingdirection"("line1" "public"."geometry", "line2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_linecrossingdirection"("line1" "public"."geometry", "line2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linecrossingdirection"("line1" "public"."geometry", "line2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linefromencodedpolyline"("txtin" "text", "nprecision" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linefromencodedpolyline"("txtin" "text", "nprecision" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_linefromencodedpolyline"("txtin" "text", "nprecision" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linefromencodedpolyline"("txtin" "text", "nprecision" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linefrommultipoint"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linefrommultipoint"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_linefrommultipoint"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linefrommultipoint"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linefromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linefromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_linefromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linefromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linefromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linefromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_linefromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linefromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linefromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linefromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_linefromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linefromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linefromwkb"("bytea", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linefromwkb"("bytea", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_linefromwkb"("bytea", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linefromwkb"("bytea", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_lineinterpolatepoint"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_lineinterpolatepoint"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_lineinterpolatepoint"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_lineinterpolatepoint"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_lineinterpolatepoints"("public"."geometry", double precision, "repeat" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_lineinterpolatepoints"("public"."geometry", double precision, "repeat" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_lineinterpolatepoints"("public"."geometry", double precision, "repeat" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_lineinterpolatepoints"("public"."geometry", double precision, "repeat" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linelocatepoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linelocatepoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_linelocatepoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linelocatepoint"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linemerge"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linemerge"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_linemerge"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linemerge"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linemerge"("public"."geometry", boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linemerge"("public"."geometry", boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_linemerge"("public"."geometry", boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linemerge"("public"."geometry", boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linestringfromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linestringfromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_linestringfromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linestringfromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linestringfromwkb"("bytea", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linestringfromwkb"("bytea", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_linestringfromwkb"("bytea", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linestringfromwkb"("bytea", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linesubstring"("public"."geometry", double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linesubstring"("public"."geometry", double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_linesubstring"("public"."geometry", double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linesubstring"("public"."geometry", double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_linetocurve"("geometry" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_linetocurve"("geometry" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_linetocurve"("geometry" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_linetocurve"("geometry" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_locatealong"("geometry" "public"."geometry", "measure" double precision, "leftrightoffset" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_locatealong"("geometry" "public"."geometry", "measure" double precision, "leftrightoffset" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_locatealong"("geometry" "public"."geometry", "measure" double precision, "leftrightoffset" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_locatealong"("geometry" "public"."geometry", "measure" double precision, "leftrightoffset" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_locatebetween"("geometry" "public"."geometry", "frommeasure" double precision, "tomeasure" double precision, "leftrightoffset" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_locatebetween"("geometry" "public"."geometry", "frommeasure" double precision, "tomeasure" double precision, "leftrightoffset" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_locatebetween"("geometry" "public"."geometry", "frommeasure" double precision, "tomeasure" double precision, "leftrightoffset" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_locatebetween"("geometry" "public"."geometry", "frommeasure" double precision, "tomeasure" double precision, "leftrightoffset" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_locatebetweenelevations"("geometry" "public"."geometry", "fromelevation" double precision, "toelevation" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_locatebetweenelevations"("geometry" "public"."geometry", "fromelevation" double precision, "toelevation" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_locatebetweenelevations"("geometry" "public"."geometry", "fromelevation" double precision, "toelevation" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_locatebetweenelevations"("geometry" "public"."geometry", "fromelevation" double precision, "toelevation" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_longestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_longestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_longestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_longestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_m"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_m"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_m"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_m"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makebox2d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makebox2d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_makebox2d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makebox2d"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makeenvelope"(double precision, double precision, double precision, double precision, integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makeenvelope"(double precision, double precision, double precision, double precision, integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_makeenvelope"(double precision, double precision, double precision, double precision, integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makeenvelope"(double precision, double precision, double precision, double precision, integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makeline"("public"."geometry"[]) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makeline"("public"."geometry"[]) TO "anon"; GRANT ALL ON FUNCTION "public"."st_makeline"("public"."geometry"[]) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makeline"("public"."geometry"[]) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makeline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makeline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_makeline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makeline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makepoint"(double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makepoint"(double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_makepoint"(double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makepoint"(double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makepoint"(double precision, double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makepoint"(double precision, double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_makepoint"(double precision, double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makepoint"(double precision, double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makepoint"(double precision, double precision, double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makepoint"(double precision, double precision, double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_makepoint"(double precision, double precision, double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makepoint"(double precision, double precision, double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makepointm"(double precision, double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makepointm"(double precision, double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_makepointm"(double precision, double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makepointm"(double precision, double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makepolygon"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makepolygon"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_makepolygon"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makepolygon"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makepolygon"("public"."geometry", "public"."geometry"[]) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makepolygon"("public"."geometry", "public"."geometry"[]) TO "anon"; GRANT ALL ON FUNCTION "public"."st_makepolygon"("public"."geometry", "public"."geometry"[]) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makepolygon"("public"."geometry", "public"."geometry"[]) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makevalid"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makevalid"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_makevalid"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makevalid"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makevalid"("geom" "public"."geometry", "params" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makevalid"("geom" "public"."geometry", "params" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_makevalid"("geom" "public"."geometry", "params" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makevalid"("geom" "public"."geometry", "params" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_maxdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_maxdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_maxdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_maxdistance"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_maximuminscribedcircle"("public"."geometry", OUT "center" "public"."geometry", OUT "nearest" "public"."geometry", OUT "radius" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_maximuminscribedcircle"("public"."geometry", OUT "center" "public"."geometry", OUT "nearest" "public"."geometry", OUT "radius" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_maximuminscribedcircle"("public"."geometry", OUT "center" "public"."geometry", OUT "nearest" "public"."geometry", OUT "radius" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_maximuminscribedcircle"("public"."geometry", OUT "center" "public"."geometry", OUT "nearest" "public"."geometry", OUT "radius" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_memsize"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_memsize"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_memsize"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_memsize"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_minimumboundingcircle"("inputgeom" "public"."geometry", "segs_per_quarter" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_minimumboundingcircle"("inputgeom" "public"."geometry", "segs_per_quarter" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_minimumboundingcircle"("inputgeom" "public"."geometry", "segs_per_quarter" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_minimumboundingcircle"("inputgeom" "public"."geometry", "segs_per_quarter" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_minimumboundingradius"("public"."geometry", OUT "center" "public"."geometry", OUT "radius" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_minimumboundingradius"("public"."geometry", OUT "center" "public"."geometry", OUT "radius" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_minimumboundingradius"("public"."geometry", OUT "center" "public"."geometry", OUT "radius" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_minimumboundingradius"("public"."geometry", OUT "center" "public"."geometry", OUT "radius" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_minimumclearance"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_minimumclearance"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_minimumclearance"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_minimumclearance"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_minimumclearanceline"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_minimumclearanceline"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_minimumclearanceline"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_minimumclearanceline"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_mlinefromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_mlinefromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_mlinefromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_mlinefromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_mlinefromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_mlinefromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_mlinefromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_mlinefromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_mlinefromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_mlinefromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_mlinefromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_mlinefromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_mlinefromwkb"("bytea", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_mlinefromwkb"("bytea", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_mlinefromwkb"("bytea", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_mlinefromwkb"("bytea", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_mpointfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_mpointfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_mpointfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_mpointfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_mpointfromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_mpointfromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_mpointfromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_mpointfromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_mpointfromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_mpointfromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_mpointfromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_mpointfromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_mpointfromwkb"("bytea", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_mpointfromwkb"("bytea", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_mpointfromwkb"("bytea", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_mpointfromwkb"("bytea", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_mpolyfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_mpolyfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_mpolyfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_mpolyfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_mpolyfromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_mpolyfromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_mpolyfromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_mpolyfromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_mpolyfromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_mpolyfromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_mpolyfromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_mpolyfromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_mpolyfromwkb"("bytea", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_mpolyfromwkb"("bytea", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_mpolyfromwkb"("bytea", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_mpolyfromwkb"("bytea", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_multi"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_multi"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_multi"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_multi"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_multilinefromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_multilinefromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_multilinefromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_multilinefromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_multilinestringfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_multilinestringfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_multilinestringfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_multilinestringfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_multilinestringfromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_multilinestringfromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_multilinestringfromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_multilinestringfromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_multipointfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_multipointfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_multipointfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_multipointfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_multipointfromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_multipointfromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_multipointfromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_multipointfromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_multipointfromwkb"("bytea", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_multipointfromwkb"("bytea", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_multipointfromwkb"("bytea", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_multipointfromwkb"("bytea", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_multipolyfromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_multipolyfromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_multipolyfromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_multipolyfromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_multipolyfromwkb"("bytea", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_multipolyfromwkb"("bytea", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_multipolyfromwkb"("bytea", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_multipolyfromwkb"("bytea", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_multipolygonfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_multipolygonfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_multipolygonfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_multipolygonfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_multipolygonfromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_multipolygonfromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_multipolygonfromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_multipolygonfromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_ndims"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_ndims"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_ndims"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_ndims"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_node"("g" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_node"("g" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_node"("g" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_node"("g" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_normalize"("geom" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_normalize"("geom" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_normalize"("geom" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_normalize"("geom" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_npoints"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_npoints"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_npoints"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_npoints"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_nrings"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_nrings"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_nrings"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_nrings"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_numgeometries"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_numgeometries"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_numgeometries"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_numgeometries"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_numinteriorring"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_numinteriorring"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_numinteriorring"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_numinteriorring"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_numinteriorrings"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_numinteriorrings"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_numinteriorrings"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_numinteriorrings"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_numpatches"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_numpatches"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_numpatches"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_numpatches"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_numpoints"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_numpoints"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_numpoints"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_numpoints"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_offsetcurve"("line" "public"."geometry", "distance" double precision, "params" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_offsetcurve"("line" "public"."geometry", "distance" double precision, "params" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_offsetcurve"("line" "public"."geometry", "distance" double precision, "params" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_offsetcurve"("line" "public"."geometry", "distance" double precision, "params" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_orderingequals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_orderingequals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_orderingequals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_orderingequals"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_orientedenvelope"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_orientedenvelope"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_orientedenvelope"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_orientedenvelope"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_overlaps"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_overlaps"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_overlaps"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_overlaps"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_patchn"("public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_patchn"("public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_patchn"("public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_patchn"("public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_perimeter"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_perimeter"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_perimeter"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_perimeter"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_perimeter"("geog" "public"."geography", "use_spheroid" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_perimeter"("geog" "public"."geography", "use_spheroid" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_perimeter"("geog" "public"."geography", "use_spheroid" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_perimeter"("geog" "public"."geography", "use_spheroid" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_perimeter2d"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_perimeter2d"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_perimeter2d"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_perimeter2d"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_point"(double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_point"(double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_point"(double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_point"(double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_point"(double precision, double precision, "srid" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_point"(double precision, double precision, "srid" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_point"(double precision, double precision, "srid" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_point"(double precision, double precision, "srid" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_pointfromgeohash"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_pointfromgeohash"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_pointfromgeohash"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_pointfromgeohash"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_pointfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_pointfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_pointfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_pointfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_pointfromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_pointfromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_pointfromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_pointfromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_pointfromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_pointfromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_pointfromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_pointfromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_pointfromwkb"("bytea", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_pointfromwkb"("bytea", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_pointfromwkb"("bytea", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_pointfromwkb"("bytea", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_pointinsidecircle"("public"."geometry", double precision, double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_pointinsidecircle"("public"."geometry", double precision, double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_pointinsidecircle"("public"."geometry", double precision, double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_pointinsidecircle"("public"."geometry", double precision, double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_pointm"("xcoordinate" double precision, "ycoordinate" double precision, "mcoordinate" double precision, "srid" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_pointm"("xcoordinate" double precision, "ycoordinate" double precision, "mcoordinate" double precision, "srid" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_pointm"("xcoordinate" double precision, "ycoordinate" double precision, "mcoordinate" double precision, "srid" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_pointm"("xcoordinate" double precision, "ycoordinate" double precision, "mcoordinate" double precision, "srid" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_pointn"("public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_pointn"("public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_pointn"("public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_pointn"("public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_pointonsurface"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_pointonsurface"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_pointonsurface"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_pointonsurface"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_points"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_points"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_points"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_points"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_pointz"("xcoordinate" double precision, "ycoordinate" double precision, "zcoordinate" double precision, "srid" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_pointz"("xcoordinate" double precision, "ycoordinate" double precision, "zcoordinate" double precision, "srid" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_pointz"("xcoordinate" double precision, "ycoordinate" double precision, "zcoordinate" double precision, "srid" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_pointz"("xcoordinate" double precision, "ycoordinate" double precision, "zcoordinate" double precision, "srid" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_pointzm"("xcoordinate" double precision, "ycoordinate" double precision, "zcoordinate" double precision, "mcoordinate" double precision, "srid" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_pointzm"("xcoordinate" double precision, "ycoordinate" double precision, "zcoordinate" double precision, "mcoordinate" double precision, "srid" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_pointzm"("xcoordinate" double precision, "ycoordinate" double precision, "zcoordinate" double precision, "mcoordinate" double precision, "srid" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_pointzm"("xcoordinate" double precision, "ycoordinate" double precision, "zcoordinate" double precision, "mcoordinate" double precision, "srid" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_polyfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_polyfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_polyfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_polyfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_polyfromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_polyfromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_polyfromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_polyfromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_polyfromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_polyfromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_polyfromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_polyfromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_polyfromwkb"("bytea", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_polyfromwkb"("bytea", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_polyfromwkb"("bytea", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_polyfromwkb"("bytea", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_polygon"("public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_polygon"("public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_polygon"("public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_polygon"("public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_polygonfromtext"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_polygonfromtext"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_polygonfromtext"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_polygonfromtext"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_polygonfromtext"("text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_polygonfromtext"("text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_polygonfromtext"("text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_polygonfromtext"("text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_polygonfromwkb"("bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_polygonfromwkb"("bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_polygonfromwkb"("bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_polygonfromwkb"("bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_polygonfromwkb"("bytea", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_polygonfromwkb"("bytea", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_polygonfromwkb"("bytea", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_polygonfromwkb"("bytea", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_polygonize"("public"."geometry"[]) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_polygonize"("public"."geometry"[]) TO "anon"; GRANT ALL ON FUNCTION "public"."st_polygonize"("public"."geometry"[]) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_polygonize"("public"."geometry"[]) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_project"("geog" "public"."geography", "distance" double precision, "azimuth" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_project"("geog" "public"."geography", "distance" double precision, "azimuth" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_project"("geog" "public"."geography", "distance" double precision, "azimuth" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_project"("geog" "public"."geography", "distance" double precision, "azimuth" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_quantizecoordinates"("g" "public"."geometry", "prec_x" integer, "prec_y" integer, "prec_z" integer, "prec_m" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_quantizecoordinates"("g" "public"."geometry", "prec_x" integer, "prec_y" integer, "prec_z" integer, "prec_m" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_quantizecoordinates"("g" "public"."geometry", "prec_x" integer, "prec_y" integer, "prec_z" integer, "prec_m" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_quantizecoordinates"("g" "public"."geometry", "prec_x" integer, "prec_y" integer, "prec_z" integer, "prec_m" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_reduceprecision"("geom" "public"."geometry", "gridsize" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_reduceprecision"("geom" "public"."geometry", "gridsize" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_reduceprecision"("geom" "public"."geometry", "gridsize" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_reduceprecision"("geom" "public"."geometry", "gridsize" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_relate"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_relate"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_relate"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_relate"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_relate"("geom1" "public"."geometry", "geom2" "public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_relate"("geom1" "public"."geometry", "geom2" "public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_relate"("geom1" "public"."geometry", "geom2" "public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_relate"("geom1" "public"."geometry", "geom2" "public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_relate"("geom1" "public"."geometry", "geom2" "public"."geometry", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_relate"("geom1" "public"."geometry", "geom2" "public"."geometry", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_relate"("geom1" "public"."geometry", "geom2" "public"."geometry", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_relate"("geom1" "public"."geometry", "geom2" "public"."geometry", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_relatematch"("text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_relatematch"("text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_relatematch"("text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_relatematch"("text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_removepoint"("public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_removepoint"("public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_removepoint"("public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_removepoint"("public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_removerepeatedpoints"("geom" "public"."geometry", "tolerance" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_removerepeatedpoints"("geom" "public"."geometry", "tolerance" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_removerepeatedpoints"("geom" "public"."geometry", "tolerance" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_removerepeatedpoints"("geom" "public"."geometry", "tolerance" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_reverse"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_reverse"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_reverse"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_reverse"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_rotate"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_rotate"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_rotate"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_rotate"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_rotate"("public"."geometry", double precision, "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_rotate"("public"."geometry", double precision, "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_rotate"("public"."geometry", double precision, "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_rotate"("public"."geometry", double precision, "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_rotate"("public"."geometry", double precision, double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_rotate"("public"."geometry", double precision, double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_rotate"("public"."geometry", double precision, double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_rotate"("public"."geometry", double precision, double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_rotatex"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_rotatex"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_rotatex"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_rotatex"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_rotatey"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_rotatey"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_rotatey"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_rotatey"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_rotatez"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_rotatez"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_rotatez"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_rotatez"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", "public"."geometry", "origin" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", "public"."geometry", "origin" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", "public"."geometry", "origin" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", "public"."geometry", "origin" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", double precision, double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", double precision, double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", double precision, double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_scale"("public"."geometry", double precision, double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_scroll"("public"."geometry", "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_scroll"("public"."geometry", "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_scroll"("public"."geometry", "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_scroll"("public"."geometry", "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_segmentize"("geog" "public"."geography", "max_segment_length" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_segmentize"("geog" "public"."geography", "max_segment_length" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_segmentize"("geog" "public"."geography", "max_segment_length" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_segmentize"("geog" "public"."geography", "max_segment_length" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_segmentize"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_segmentize"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_segmentize"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_segmentize"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_seteffectivearea"("public"."geometry", double precision, integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_seteffectivearea"("public"."geometry", double precision, integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_seteffectivearea"("public"."geometry", double precision, integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_seteffectivearea"("public"."geometry", double precision, integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_setpoint"("public"."geometry", integer, "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_setpoint"("public"."geometry", integer, "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_setpoint"("public"."geometry", integer, "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_setpoint"("public"."geometry", integer, "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_setsrid"("geog" "public"."geography", "srid" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_setsrid"("geog" "public"."geography", "srid" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_setsrid"("geog" "public"."geography", "srid" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_setsrid"("geog" "public"."geography", "srid" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_setsrid"("geom" "public"."geometry", "srid" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_setsrid"("geom" "public"."geometry", "srid" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_setsrid"("geom" "public"."geometry", "srid" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_setsrid"("geom" "public"."geometry", "srid" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_sharedpaths"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_sharedpaths"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_sharedpaths"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_sharedpaths"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_shiftlongitude"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_shiftlongitude"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_shiftlongitude"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_shiftlongitude"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_shortestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_shortestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_shortestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_shortestline"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_simplify"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_simplify"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_simplify"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_simplify"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_simplify"("public"."geometry", double precision, boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_simplify"("public"."geometry", double precision, boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_simplify"("public"."geometry", double precision, boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_simplify"("public"."geometry", double precision, boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_simplifypolygonhull"("geom" "public"."geometry", "vertex_fraction" double precision, "is_outer" boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_simplifypolygonhull"("geom" "public"."geometry", "vertex_fraction" double precision, "is_outer" boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_simplifypolygonhull"("geom" "public"."geometry", "vertex_fraction" double precision, "is_outer" boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_simplifypolygonhull"("geom" "public"."geometry", "vertex_fraction" double precision, "is_outer" boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_simplifypreservetopology"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_simplifypreservetopology"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_simplifypreservetopology"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_simplifypreservetopology"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_simplifyvw"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_simplifyvw"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_simplifyvw"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_simplifyvw"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_snap"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_snap"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_snap"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_snap"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("public"."geometry", double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("public"."geometry", double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("public"."geometry", double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("public"."geometry", double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("public"."geometry", double precision, double precision, double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("public"."geometry", double precision, double precision, double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("public"."geometry", double precision, double precision, double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("public"."geometry", double precision, double precision, double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision, double precision, double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision, double precision, double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision, double precision, double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_snaptogrid"("geom1" "public"."geometry", "geom2" "public"."geometry", double precision, double precision, double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_split"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_split"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_split"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_split"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_square"("size" double precision, "cell_i" integer, "cell_j" integer, "origin" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_square"("size" double precision, "cell_i" integer, "cell_j" integer, "origin" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_square"("size" double precision, "cell_i" integer, "cell_j" integer, "origin" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_square"("size" double precision, "cell_i" integer, "cell_j" integer, "origin" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_squaregrid"("size" double precision, "bounds" "public"."geometry", OUT "geom" "public"."geometry", OUT "i" integer, OUT "j" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_squaregrid"("size" double precision, "bounds" "public"."geometry", OUT "geom" "public"."geometry", OUT "i" integer, OUT "j" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_squaregrid"("size" double precision, "bounds" "public"."geometry", OUT "geom" "public"."geometry", OUT "i" integer, OUT "j" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_squaregrid"("size" double precision, "bounds" "public"."geometry", OUT "geom" "public"."geometry", OUT "i" integer, OUT "j" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_srid"("geog" "public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_srid"("geog" "public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."st_srid"("geog" "public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_srid"("geog" "public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_srid"("geom" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_srid"("geom" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_srid"("geom" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_srid"("geom" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_startpoint"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_startpoint"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_startpoint"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_startpoint"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_subdivide"("geom" "public"."geometry", "maxvertices" integer, "gridsize" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_subdivide"("geom" "public"."geometry", "maxvertices" integer, "gridsize" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_subdivide"("geom" "public"."geometry", "maxvertices" integer, "gridsize" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_subdivide"("geom" "public"."geometry", "maxvertices" integer, "gridsize" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_summary"("public"."geography") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_summary"("public"."geography") TO "anon"; GRANT ALL ON FUNCTION "public"."st_summary"("public"."geography") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_summary"("public"."geography") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_summary"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_summary"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_summary"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_summary"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_swapordinates"("geom" "public"."geometry", "ords" "cstring") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_swapordinates"("geom" "public"."geometry", "ords" "cstring") TO "anon"; GRANT ALL ON FUNCTION "public"."st_swapordinates"("geom" "public"."geometry", "ords" "cstring") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_swapordinates"("geom" "public"."geometry", "ords" "cstring") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_symdifference"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_symdifference"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_symdifference"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_symdifference"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_symmetricdifference"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_symmetricdifference"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_symmetricdifference"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_symmetricdifference"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_tileenvelope"("zoom" integer, "x" integer, "y" integer, "bounds" "public"."geometry", "margin" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_tileenvelope"("zoom" integer, "x" integer, "y" integer, "bounds" "public"."geometry", "margin" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_tileenvelope"("zoom" integer, "x" integer, "y" integer, "bounds" "public"."geometry", "margin" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_tileenvelope"("zoom" integer, "x" integer, "y" integer, "bounds" "public"."geometry", "margin" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_touches"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_touches"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_touches"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_touches"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_transform"("public"."geometry", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_transform"("public"."geometry", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_transform"("public"."geometry", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_transform"("public"."geometry", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_transform"("geom" "public"."geometry", "to_proj" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_transform"("geom" "public"."geometry", "to_proj" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_transform"("geom" "public"."geometry", "to_proj" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_transform"("geom" "public"."geometry", "to_proj" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_transform"("geom" "public"."geometry", "from_proj" "text", "to_srid" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_transform"("geom" "public"."geometry", "from_proj" "text", "to_srid" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_transform"("geom" "public"."geometry", "from_proj" "text", "to_srid" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_transform"("geom" "public"."geometry", "from_proj" "text", "to_srid" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_transform"("geom" "public"."geometry", "from_proj" "text", "to_proj" "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_transform"("geom" "public"."geometry", "from_proj" "text", "to_proj" "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_transform"("geom" "public"."geometry", "from_proj" "text", "to_proj" "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_transform"("geom" "public"."geometry", "from_proj" "text", "to_proj" "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_translate"("public"."geometry", double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_translate"("public"."geometry", double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_translate"("public"."geometry", double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_translate"("public"."geometry", double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_translate"("public"."geometry", double precision, double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_translate"("public"."geometry", double precision, double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_translate"("public"."geometry", double precision, double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_translate"("public"."geometry", double precision, double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_transscale"("public"."geometry", double precision, double precision, double precision, double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_transscale"("public"."geometry", double precision, double precision, double precision, double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_transscale"("public"."geometry", double precision, double precision, double precision, double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_transscale"("public"."geometry", double precision, double precision, double precision, double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_triangulatepolygon"("g1" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_triangulatepolygon"("g1" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_triangulatepolygon"("g1" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_triangulatepolygon"("g1" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_unaryunion"("public"."geometry", "gridsize" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_unaryunion"("public"."geometry", "gridsize" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_unaryunion"("public"."geometry", "gridsize" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_unaryunion"("public"."geometry", "gridsize" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_union"("public"."geometry"[]) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_union"("public"."geometry"[]) TO "anon"; GRANT ALL ON FUNCTION "public"."st_union"("public"."geometry"[]) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_union"("public"."geometry"[]) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_union"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_union"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_union"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_union"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_union"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_union"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_union"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_union"("geom1" "public"."geometry", "geom2" "public"."geometry", "gridsize" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_voronoilines"("g1" "public"."geometry", "tolerance" double precision, "extend_to" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_voronoilines"("g1" "public"."geometry", "tolerance" double precision, "extend_to" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_voronoilines"("g1" "public"."geometry", "tolerance" double precision, "extend_to" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_voronoilines"("g1" "public"."geometry", "tolerance" double precision, "extend_to" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_voronoipolygons"("g1" "public"."geometry", "tolerance" double precision, "extend_to" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_voronoipolygons"("g1" "public"."geometry", "tolerance" double precision, "extend_to" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_voronoipolygons"("g1" "public"."geometry", "tolerance" double precision, "extend_to" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_voronoipolygons"("g1" "public"."geometry", "tolerance" double precision, "extend_to" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_within"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_within"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_within"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_within"("geom1" "public"."geometry", "geom2" "public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_wkbtosql"("wkb" "bytea") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_wkbtosql"("wkb" "bytea") TO "anon"; GRANT ALL ON FUNCTION "public"."st_wkbtosql"("wkb" "bytea") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_wkbtosql"("wkb" "bytea") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_wkttosql"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_wkttosql"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_wkttosql"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_wkttosql"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_wrapx"("geom" "public"."geometry", "wrap" double precision, "move" double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_wrapx"("geom" "public"."geometry", "wrap" double precision, "move" double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_wrapx"("geom" "public"."geometry", "wrap" double precision, "move" double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_wrapx"("geom" "public"."geometry", "wrap" double precision, "move" double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_x"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_x"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_x"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_x"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_xmax"("public"."box3d") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_xmax"("public"."box3d") TO "anon"; GRANT ALL ON FUNCTION "public"."st_xmax"("public"."box3d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_xmax"("public"."box3d") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_xmin"("public"."box3d") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_xmin"("public"."box3d") TO "anon"; GRANT ALL ON FUNCTION "public"."st_xmin"("public"."box3d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_xmin"("public"."box3d") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_y"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_y"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_y"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_y"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_ymax"("public"."box3d") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_ymax"("public"."box3d") TO "anon"; GRANT ALL ON FUNCTION "public"."st_ymax"("public"."box3d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_ymax"("public"."box3d") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_ymin"("public"."box3d") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_ymin"("public"."box3d") TO "anon"; GRANT ALL ON FUNCTION "public"."st_ymin"("public"."box3d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_ymin"("public"."box3d") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_z"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_z"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_z"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_z"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_zmax"("public"."box3d") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_zmax"("public"."box3d") TO "anon"; GRANT ALL ON FUNCTION "public"."st_zmax"("public"."box3d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_zmax"("public"."box3d") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_zmflag"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_zmflag"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_zmflag"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_zmflag"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_zmin"("public"."box3d") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_zmin"("public"."box3d") TO "anon"; GRANT ALL ON FUNCTION "public"."st_zmin"("public"."box3d") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_zmin"("public"."box3d") TO "service_role"; GRANT ALL ON FUNCTION "public"."unlockrows"("text") TO "postgres"; GRANT ALL ON FUNCTION "public"."unlockrows"("text") TO "anon"; GRANT ALL ON FUNCTION "public"."unlockrows"("text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."unlockrows"("text") TO "service_role"; GRANT ALL ON FUNCTION "public"."update_invitation_updated_at"() TO "anon"; GRANT ALL ON FUNCTION "public"."update_invitation_updated_at"() TO "authenticated"; GRANT ALL ON FUNCTION "public"."update_invitation_updated_at"() TO "service_role"; GRANT ALL ON FUNCTION "public"."updategeometrysrid"(character varying, character varying, integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."updategeometrysrid"(character varying, character varying, integer) TO "anon"; GRANT ALL ON FUNCTION "public"."updategeometrysrid"(character varying, character varying, integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."updategeometrysrid"(character varying, character varying, integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."updategeometrysrid"(character varying, character varying, character varying, integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."updategeometrysrid"(character varying, character varying, character varying, integer) TO "anon"; GRANT ALL ON FUNCTION "public"."updategeometrysrid"(character varying, character varying, character varying, integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."updategeometrysrid"(character varying, character varying, character varying, integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."updategeometrysrid"("catalogn_name" character varying, "schema_name" character varying, "table_name" character varying, "column_name" character varying, "new_srid_in" integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."updategeometrysrid"("catalogn_name" character varying, "schema_name" character varying, "table_name" character varying, "column_name" character varying, "new_srid_in" integer) TO "anon"; GRANT ALL ON FUNCTION "public"."updategeometrysrid"("catalogn_name" character varying, "schema_name" character varying, "table_name" character varying, "column_name" character varying, "new_srid_in" integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."updategeometrysrid"("catalogn_name" character varying, "schema_name" character varying, "table_name" character varying, "column_name" character varying, "new_srid_in" integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_3dextent"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_3dextent"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_3dextent"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_3dextent"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asflatgeobuf"("anyelement") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asflatgeobuf"("anyelement") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asflatgeobuf"("anyelement") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asflatgeobuf"("anyelement") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asflatgeobuf"("anyelement", boolean) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asflatgeobuf"("anyelement", boolean) TO "anon"; GRANT ALL ON FUNCTION "public"."st_asflatgeobuf"("anyelement", boolean) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asflatgeobuf"("anyelement", boolean) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asflatgeobuf"("anyelement", boolean, "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asflatgeobuf"("anyelement", boolean, "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asflatgeobuf"("anyelement", boolean, "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asflatgeobuf"("anyelement", boolean, "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asgeobuf"("anyelement") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asgeobuf"("anyelement") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asgeobuf"("anyelement") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asgeobuf"("anyelement") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asgeobuf"("anyelement", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asgeobuf"("anyelement", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asgeobuf"("anyelement", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asgeobuf"("anyelement", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text", integer) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text", integer) TO "anon"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text", integer) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text", integer) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text", integer, "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text", integer, "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text", integer, "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text", integer, "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text", integer, "text", "text") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text", integer, "text", "text") TO "anon"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text", integer, "text", "text") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_asmvt"("anyelement", "text", integer, "text", "text") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_clusterintersecting"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_clusterintersecting"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_clusterintersecting"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_clusterintersecting"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_clusterwithin"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_clusterwithin"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_clusterwithin"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_clusterwithin"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON FUNCTION "public"."st_collect"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_collect"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_collect"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_collect"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_extent"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_extent"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_extent"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_extent"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_makeline"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_makeline"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_makeline"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_makeline"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_memcollect"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_memcollect"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_memcollect"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_memcollect"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_memunion"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_memunion"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_memunion"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_memunion"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_polygonize"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_polygonize"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_polygonize"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_polygonize"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_union"("public"."geometry") TO "postgres"; GRANT ALL ON FUNCTION "public"."st_union"("public"."geometry") TO "anon"; GRANT ALL ON FUNCTION "public"."st_union"("public"."geometry") TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_union"("public"."geometry") TO "service_role"; GRANT ALL ON FUNCTION "public"."st_union"("public"."geometry", double precision) TO "postgres"; GRANT ALL ON FUNCTION "public"."st_union"("public"."geometry", double precision) TO "anon"; GRANT ALL ON FUNCTION "public"."st_union"("public"."geometry", double precision) TO "authenticated"; GRANT ALL ON FUNCTION "public"."st_union"("public"."geometry", double precision) TO "service_role"; GRANT ALL ON TABLE "public"."audit_logs" TO "anon"; GRANT ALL ON TABLE "public"."audit_logs" TO "authenticated"; GRANT ALL ON TABLE "public"."audit_logs" TO "service_role"; GRANT ALL ON TABLE "public"."billing_plans" TO "anon"; GRANT ALL ON TABLE "public"."billing_plans" TO "authenticated"; GRANT ALL ON TABLE "public"."billing_plans" TO "service_role"; GRANT ALL ON TABLE "public"."clients" TO "anon"; GRANT ALL ON TABLE "public"."clients" TO "authenticated"; GRANT ALL ON TABLE "public"."clients" TO "service_role"; GRANT ALL ON TABLE "public"."contractor_invoices" TO "anon"; GRANT ALL ON TABLE "public"."contractor_invoices" TO "authenticated"; GRANT ALL ON TABLE "public"."contractor_invoices" TO "service_role"; GRANT ALL ON TABLE "public"."contractors" TO "anon"; GRANT ALL ON TABLE "public"."contractors" TO "authenticated"; GRANT ALL ON TABLE "public"."contractors" TO "service_role"; GRANT ALL ON TABLE "public"."customer_communications" TO "anon"; GRANT ALL ON TABLE "public"."customer_communications" TO "authenticated"; GRANT ALL ON TABLE "public"."customer_communications" TO "service_role"; GRANT ALL ON TABLE "public"."customers" TO "anon"; GRANT ALL ON TABLE "public"."customers" TO "authenticated"; GRANT ALL ON TABLE "public"."customers" TO "service_role"; GRANT ALL ON TABLE "public"."documents" TO "anon"; GRANT ALL ON TABLE "public"."documents" TO "authenticated"; GRANT ALL ON TABLE "public"."documents" TO "service_role"; GRANT ALL ON TABLE "public"."incidents" TO "anon"; GRANT ALL ON TABLE "public"."incidents" TO "authenticated"; GRANT ALL ON TABLE "public"."incidents" TO "service_role"; GRANT ALL ON TABLE "public"."inventory_assignments" TO "anon"; GRANT ALL ON TABLE "public"."inventory_assignments" TO "authenticated"; GRANT ALL ON TABLE "public"."inventory_assignments" TO "service_role"; GRANT ALL ON TABLE "public"."invoices" TO "anon"; GRANT ALL ON TABLE "public"."invoices" TO "authenticated"; GRANT ALL ON TABLE "public"."invoices" TO "service_role"; GRANT ALL ON TABLE "public"."notifications" TO "anon"; GRANT ALL ON TABLE "public"."notifications" TO "authenticated"; GRANT ALL ON TABLE "public"."notifications" TO "service_role"; GRANT ALL ON TABLE "public"."organization_subscriptions" TO "anon"; GRANT ALL ON TABLE "public"."organization_subscriptions" TO "authenticated"; GRANT ALL ON TABLE "public"."organization_subscriptions" TO "service_role"; GRANT ALL ON TABLE "public"."payment_logs" TO "anon"; GRANT ALL ON TABLE "public"."payment_logs" TO "authenticated"; GRANT ALL ON TABLE "public"."payment_logs" TO "service_role"; GRANT ALL ON TABLE "public"."project_finance" TO "anon"; GRANT ALL ON TABLE "public"."project_finance" TO "authenticated"; GRANT ALL ON TABLE "public"."project_finance" TO "service_role"; GRANT ALL ON TABLE "public"."project_inventory" TO "anon"; GRANT ALL ON TABLE "public"."project_inventory" TO "authenticated"; GRANT ALL ON TABLE "public"."project_inventory" TO "service_role"; GRANT ALL ON TABLE "public"."project_inventory_distribution" TO "anon"; GRANT ALL ON TABLE "public"."project_inventory_distribution" TO "authenticated"; GRANT ALL ON TABLE "public"."project_inventory_distribution" TO "service_role"; GRANT ALL ON TABLE "public"."project_regions" TO "anon"; GRANT ALL ON TABLE "public"."project_regions" TO "authenticated"; GRANT ALL ON TABLE "public"."project_regions" TO "service_role"; GRANT ALL ON TABLE "public"."project_roles" TO "anon"; GRANT ALL ON TABLE "public"."project_roles" TO "authenticated"; GRANT ALL ON TABLE "public"."project_roles" TO "service_role"; GRANT ALL ON TABLE "public"."project_subcontractors" TO "anon"; GRANT ALL ON TABLE "public"."project_subcontractors" TO "authenticated"; GRANT ALL ON TABLE "public"."project_subcontractors" TO "service_role"; GRANT ALL ON TABLE "public"."project_team" TO "anon"; GRANT ALL ON TABLE "public"."project_team" TO "authenticated"; GRANT ALL ON TABLE "public"."project_team" TO "service_role"; GRANT ALL ON TABLE "public"."projects" TO "anon"; GRANT ALL ON TABLE "public"."projects" TO "authenticated"; GRANT ALL ON TABLE "public"."projects" TO "service_role"; GRANT ALL ON TABLE "public"."sales_orders" TO "anon"; GRANT ALL ON TABLE "public"."sales_orders" TO "authenticated"; GRANT ALL ON TABLE "public"."sales_orders" TO "service_role"; GRANT ALL ON TABLE "public"."subscriptions" TO "anon"; GRANT ALL ON TABLE "public"."subscriptions" TO "authenticated"; GRANT ALL ON TABLE "public"."subscriptions" TO "service_role"; GRANT ALL ON TABLE "public"."system_configuration" TO "anon"; GRANT ALL ON TABLE "public"."system_configuration" TO "authenticated"; GRANT ALL ON TABLE "public"."system_configuration" TO "service_role"; GRANT ALL ON TABLE "public"."tasks" TO "anon"; GRANT ALL ON TABLE "public"."tasks" TO "authenticated"; GRANT ALL ON TABLE "public"."tasks" TO "service_role"; GRANT ALL ON TABLE "public"."ticket_assignments" TO "anon"; GRANT ALL ON TABLE "public"."ticket_assignments" TO "authenticated"; GRANT ALL ON TABLE "public"."ticket_assignments" TO "service_role"; GRANT ALL ON TABLE "public"."ticket_comments" TO "anon"; GRANT ALL ON TABLE "public"."ticket_comments" TO "authenticated"; GRANT ALL ON TABLE "public"."ticket_comments" TO "service_role"; GRANT ALL ON TABLE "public"."ticket_expenses" TO "anon"; GRANT ALL ON TABLE "public"."ticket_expenses" TO "authenticated"; GRANT ALL ON TABLE "public"."ticket_expenses" TO "service_role"; GRANT ALL ON TABLE "public"."ticket_images" TO "anon"; GRANT ALL ON TABLE "public"."ticket_images" TO "authenticated"; GRANT ALL ON TABLE "public"."ticket_images" TO "service_role"; GRANT ALL ON TABLE "public"."ticket_incident_reports" TO "anon"; GRANT ALL ON TABLE "public"."ticket_incident_reports" TO "authenticated"; GRANT ALL ON TABLE "public"."ticket_incident_reports" TO "service_role"; GRANT ALL ON TABLE "public"."ticket_progress_reports" TO "anon"; GRANT ALL ON TABLE "public"."ticket_progress_reports" TO "authenticated"; GRANT ALL ON TABLE "public"."ticket_progress_reports" TO "service_role"; GRANT ALL ON TABLE "public"."ticket_status_history" TO "anon"; GRANT ALL ON TABLE "public"."ticket_status_history" TO "authenticated"; GRANT ALL ON TABLE "public"."ticket_status_history" TO "service_role"; GRANT ALL ON TABLE "public"."tickets" TO "anon"; GRANT ALL ON TABLE "public"."tickets" TO "authenticated"; GRANT ALL ON TABLE "public"."tickets" TO "service_role"; GRANT ALL ON TABLE "public"."timesheets" TO "anon"; GRANT ALL ON TABLE "public"."timesheets" TO "authenticated"; GRANT ALL ON TABLE "public"."timesheets" TO "service_role"; GRANT ALL ON TABLE "public"."usage_metrics" TO "anon"; GRANT ALL ON TABLE "public"."usage_metrics" TO "authenticated"; GRANT ALL ON TABLE "public"."usage_metrics" TO "service_role"; GRANT ALL ON TABLE "public"."user_asset_assignments" TO "anon"; GRANT ALL ON TABLE "public"."user_asset_assignments" TO "authenticated"; GRANT ALL ON TABLE "public"."user_asset_assignments" TO "service_role"; GRANT ALL ON TABLE "public"."user_document_links" TO "anon"; GRANT ALL ON TABLE "public"."user_document_links" TO "authenticated"; GRANT ALL ON TABLE "public"."user_document_links" TO "service_role"; GRANT ALL ON TABLE "public"."user_financial_accounts" TO "anon"; GRANT ALL ON TABLE "public"."user_financial_accounts" TO "authenticated"; GRANT ALL ON TABLE "public"."user_financial_accounts" TO "service_role"; GRANT ALL ON TABLE "public"."user_invitations" TO "anon"; GRANT ALL ON TABLE "public"."user_invitations" TO "authenticated"; GRANT ALL ON TABLE "public"."user_invitations" TO "service_role"; GRANT ALL ON TABLE "public"."user_payroll" TO "anon"; GRANT ALL ON TABLE "public"."user_payroll" TO "authenticated"; GRANT ALL ON TABLE "public"."user_payroll" TO "service_role"; GRANT ALL ON TABLE "public"."user_preferences" TO "anon"; GRANT ALL ON TABLE "public"."user_preferences" TO "authenticated"; GRANT ALL ON TABLE "public"."user_preferences" TO "service_role"; GRANT ALL ON TABLE "public"."users" TO "anon"; GRANT ALL ON TABLE "public"."users" TO "authenticated"; GRANT ALL ON TABLE "public"."users" TO "service_role"; ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "postgres"; ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "anon"; ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "authenticated"; ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON SEQUENCES TO "service_role"; ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "postgres"; ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "anon"; ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "authenticated"; ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON FUNCTIONS TO "service_role"; ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "postgres"; ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "anon"; ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "authenticated"; ALTER DEFAULT PRIVILEGES FOR ROLE "postgres" IN SCHEMA "public" GRANT ALL ON TABLES TO "service_role";