drop function if exists sys.day(timestamptz);
drop function if exists sys.day(abstime);
drop function if exists sys.day(date);
drop function if exists sys.day(timestamp(0) with time zone);

drop function if exists sys.rand();
drop function if exists sys.rand(int);
drop function if exists sys.rand(smallint);
drop function if exists sys.rand(tinyint);

drop function if exists sys.object_id(IN object_name VARCHAR, IN object_type VARCHAR);
drop function if exists sys.objectproperty(id INT, property VARCHAR);

drop function if exists sys.dbcc_check_ident_no_reseed(varchar, boolean, boolean);
drop function if exists sys.dbcc_check_ident_reseed(varchar, int16, boolean);
    
drop function if exists sys.fetch_status();
drop function if exists sys.rowcount();
drop function if exists sys.rowcount_big();
drop function if exists sys.spid();
drop function if exists sys.procid();

drop view if exists sys.sysobjects;
drop view if exists sys.syscolumns;
drop view if exists sys.sysindexes;
drop view if exists sys.sysindexkeys;
drop view if exists sys.databases;
drop view if exists sys.sysusers;
drop view if exists sys.schemas;
drop view if exists sys.sysdatabases;
drop view if exists information_schema_tsql.views;
drop view if exists information_schema_tsql.tables;
drop view if exists information_schema_tsql.columns;
drop view if exists sys.columns;
drop view if exists sys.all_columns;
drop view if exists sys.objects;
drop view if exists sys.views;
drop view if exists sys.tables;
drop view if exists sys.all_objects;
drop view if exists sys.procedures;
drop view if exists sys.indexes;
drop function if exists sys.tsql_type_max_length_helper(in type text, in typelen smallint, in typemod int);
drop function if exists sys.tsql_type_precision_helper(in type text, in typemod int);
drop function if exists sys.tsql_type_scale_helper(in type text, in typemod int);
drop function if exists sys.tsql_relation_reloptions_helper(in reloptions text[], in targetKey text);

drop view if exists information_schema_tsql.check_constraints;
drop function if exists information_schema_tsql.is_d_format_schema(nspoid oid, nspname name);
drop function if exists information_schema_tsql._pgtsql_datetime_precision(type text, typmod int4);
drop function if exists information_schema_tsql._pgtsql_numeric_scale(type text, typid oid, typmod int4);
drop function if exists information_schema_tsql._pgtsql_numeric_precision_radix(type text, typid oid, typmod int4);
drop function if exists information_schema_tsql._pgtsql_numeric_precision(type text, typid oid, typmod int4);
drop function if exists information_schema_tsql._pg_char_octet_length(type text, typmod int4);
drop function if exists information_schema_tsql._pg_char_max_length(type text, typmod int4);
drop schema information_schema_tsql;
drop function if exists sys.ts_procedure_object_internal();
drop function if exists sys.ts_index_type_helper(in indexid oid, in reloptions text[]);
drop function if exists sys.ts_numeric_scale_helper(in typname text, in typmod int);
drop function if exists sys.ts_numeric_precision_helper(in typname text, in typmod int);
drop function if exists sys.ts_tables_obj_internal();
drop function if exists sys.ts_graph_type_helper(in relid oid, in typ text);
drop function if exists sys.ts_is_publication_helper(in relid oid);
drop function if exists sys.ts_is_mot_table_helper(in reloid oid);

-- sql_variant
-- CAST functions from SQL_VARIANT
DROP CAST IF EXISTS (sys.SQL_VARIANT AS SMALLDATETIME);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS DATE);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS TIME);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS FLOAT);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS REAL);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS NUMERIC);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS MONEY);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS BIGINT);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS INT);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS SMALLINT);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS TINYINT);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS BIT);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS VARCHAR);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS NVARCHAR);
DROP CAST IF EXISTS (sys.SQL_VARIANT AS CHAR);
DROP FUNCTION IF EXISTS sys.sqlvariant_smalldatetime(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_date(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_time(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_float(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_real(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_numeric(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_money(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_bigint(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_int(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_smallint(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_tinyint(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_bit(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_sysvarchar(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_nvarchar(sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.sqlvariant_char(sys.SQL_VARIANT);
-- CAST FUNCTIONS to SQL_VARIANT
DROP CAST IF EXISTS (SMALLDATETIME AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (DATE AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (TIME AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (FLOAT AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (REAL AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (NUMERIC AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (money AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (BIGINT AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (INT AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (smallint AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (tinyint AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (BIT AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (VARCHAR AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (NVARCHAR AS sys.SQL_VARIANT);
DROP CAST IF EXISTS (CHAR AS sys.SQL_VARIANT);
DROP FUNCTION IF EXISTS sys.smalldatetime_sqlvariant(SMALLDATETIME, int);
DROP FUNCTION IF EXISTS sys.date_sqlvariant(DATE, int);
DROP FUNCTION IF EXISTS sys.time_sqlvariant(TIME, int);
DROP FUNCTION IF EXISTS sys.float_sqlvariant(FLOAT, int);
DROP FUNCTION IF EXISTS sys.real_sqlvariant(REAL, int);
DROP FUNCTION IF EXISTS sys.numeric_sqlvariant(NUMERIC, int);
DROP FUNCTION IF EXISTS sys.money_sqlvariant(money, int);
DROP FUNCTION IF EXISTS sys.bigint_sqlvariant(BIGINT, int);
DROP FUNCTION IF EXISTS sys.int_sqlvariant(INT, int);
DROP FUNCTION IF EXISTS sys.smallint_sqlvariant(smallint, int);
DROP FUNCTION IF EXISTS sys.tinyint_sqlvariant(tinyint, int);
DROP FUNCTION IF EXISTS sys.bit_sqlvariant(BIT, int);
DROP FUNCTION IF EXISTS sys.varchar_sqlvariant(varchar, int);
DROP FUNCTION IF EXISTS sys.nvarchar_sqlvariant(nvarchar, int);
DROP FUNCTION IF EXISTS sys.char_sqlvariant(CHAR, int);

DROP OPERATOR CLASS IF EXISTS sys.sqlvariant_ops USING btree;
DROP OPERATOR IF EXISTS sys.>= (sys.SQL_VARIANT,sys.SQL_VARIANT);
DROP OPERATOR IF EXISTS sys.> (sys.SQL_VARIANT,sys.SQL_VARIANT);
DROP OPERATOR IF EXISTS sys.<= (sys.SQL_VARIANT,sys.SQL_VARIANT);
DROP OPERATOR IF EXISTS sys.< (sys.SQL_VARIANT,sys.SQL_VARIANT);
DROP OPERATOR IF EXISTS sys.= (sys.SQL_VARIANT,sys.SQL_VARIANT);
DROP OPERATOR IF EXISTS sys.<> (sys.SQL_VARIANT,sys.SQL_VARIANT);

DROP FUNCTION IF EXISTS sys.sql_variantne(sys.sql_variant, sys.sql_variant);
DROP FUNCTION IF EXISTS sys.sql_variantlt(sys.sql_variant, sys.sql_variant);
DROP FUNCTION IF EXISTS sys.sql_variantle(sys.sql_variant, sys.sql_variant);
DROP FUNCTION IF EXISTS sys.sql_variantgt(sys.sql_variant, sys.sql_variant);
DROP FUNCTION IF EXISTS sys.sql_variantge(sys.sql_variant, sys.sql_variant);
DROP FUNCTION IF EXISTS sys.sql_varianteq(sys.sql_variant, sys.sql_variant);
DROP FUNCTION IF EXISTS sys.sql_variantcmp(sys.sql_variant, sys.sql_variant);

drop type IF EXISTS sys.sql_variant cascade;
DROP FUNCTION IF EXISTS sys.error_number();
DROP FUNCTION IF EXISTS sys.error_severity();
DROP FUNCTION IF EXISTS sys.error_state();
DROP FUNCTION IF EXISTS sys.error_procedure();
DROP FUNCTION IF EXISTS sys.error_line();
DROP FUNCTION IF EXISTS sys.error_message();
drop function if exists sys.databasepropertyex (nvarchar(128), nvarchar(128));
drop function if exists sys.suser_id_internal(IN login nvarchar(256));
drop function if exists sys.suser_id(IN login nvarchar(256));
drop function if exists sys.suser_id();
drop function if exists sys.suser_name_internal(IN server_user_id OID);
drop function if exists sys.suser_name(IN server_user_id OID);
drop function if exists sys.suser_name();
drop function if exists sys.suser_sname(IN server_user_sid varbinary(85));
drop function if exists sys.suser_sname();
drop function if exists sys.get_scope_identity();
drop function if exists sys.scope_identity();
drop function if exists sys.ident_current(IN tablename nvarchar(128));
drop function if exists sys.get_ident_current(IN tablename nvarchar(128));

DROP CAST IF EXISTS (sys.VARBINARY AS sys.VARBINARY) CASCADE;
DROP CAST IF EXISTS (pg_catalog.BYTEA AS sys.VARBINARY) CASCADE;
DROP CAST IF EXISTS (sys.VARBINARY AS pg_catalog.BYTEA) CASCADE;
DROP CAST IF EXISTS (pg_catalog.VARCHAR AS sys.VARBINARY) CASCADE;
DROP CAST IF EXISTS (pg_catalog.BPCHAR AS sys.VARBINARY) CASCADE;
DROP CAST IF EXISTS (sys.VARBINARY AS pg_catalog.BPCHAR) CASCADE;
DROP CAST IF EXISTS (sys.VARBINARY AS pg_catalog.VARCHAR) CASCADE;
DROP CAST IF EXISTS (INT2 AS sys.VARBINARY) CASCADE;
DROP CAST IF EXISTS (INT4 AS sys.VARBINARY) CASCADE;
DROP CAST IF EXISTS (INT8 AS sys.VARBINARY) CASCADE;
DROP CAST IF EXISTS (REAL AS sys.VARBINARY) CASCADE;
DROP CAST IF EXISTS (DOUBLE PRECISION AS sys.VARBINARY) CASCADE;
DROP CAST IF EXISTS (sys.VARBINARY as INT2) CASCADE;
DROP CAST IF EXISTS (sys.VARBINARY as INT4) CASCADE;
DROP CAST IF EXISTS (sys.VARBINARY as INT8) CASCADE;
DROP CAST IF EXISTS (sys.VARBINARY as numeric) CASCADE;
DROP CAST IF EXISTS (numeric AS sys.VARBINARY) CASCADE;
DROP CAST IF EXISTS (sys.VARBINARY as date) CASCADE;
DROP CAST IF EXISTS (date AS sys.VARBINARY) CASCADE;
DROP CAST IF EXISTS (sys.VARBINARY as time) CASCADE;
DROP CAST IF EXISTS (time AS sys.VARBINARY) CASCADE;
DROP CAST IF EXISTS (sys.VARBINARY as smalldatetime) CASCADE;
DROP CAST IF EXISTS (smalldatetime AS sys.VARBINARY) CASCADE;

drop function if exists sys.varbinary(sys.VARBINARY, integer, boolean);
drop function if exists sys.byteavarbinary(pg_catalog.BYTEA, integer, boolean);
drop function if exists sys.varbinarybytea(sys.VARBINARY, integer, boolean);
drop function if exists sys.varcharvarbinary(pg_catalog.VARCHAR, integer, boolean);
drop function if exists sys.bpcharvarbinary(pg_catalog.BPCHAR, integer, boolean);
drop function if exists sys.varbinarybpchar(sys.VARBINARY, integer, boolean);
drop function if exists sys.varbinaryvarchar(sys.VARBINARY, integer, boolean);
drop function if exists sys.int2varbinary(INT2, integer, boolean);
drop function if exists sys.int4varbinary(INT4, integer, boolean);
drop function if exists sys.int8varbinary(INT8, integer, boolean);
drop function if exists sys.float4varbinary(REAL, integer, boolean);
drop function if exists sys.float8varbinary(DOUBLE PRECISION, integer, boolean);
drop function if exists sys.varbinaryint2(sys.VARBINARY);
drop function if exists sys.varbinaryint4(sys.VARBINARY);
drop function if exists sys.varbinaryint8(sys.VARBINARY);
drop function if exists sys.varbinary_numeric(sys.VARBINARY);
drop function if exists sys.numeric_varbinary(numeric, integer, boolean);
drop function if exists sys.varbinary_date(sys.VARBINARY);
drop function if exists sys.date_varbinary(date, integer, boolean);
drop function if exists sys.varbinary_time(sys.VARBINARY);
drop function if exists sys.time_varbinary(time, integer, boolean);
drop function if exists sys.varbinary_smalldatetime(sys.VARBINARY);
drop function if exists sys.smalldatetime_varbinary(smalldatetime, integer, boolean);

drop table if exists sys.shark_syslanguages;
drop function if exists sys.log10(IN arg1 double precision);
drop function if exists sys.atn2(IN x double precision, IN y double precision);
drop function if exists sys.atn2(IN x money, IN y money);
drop function if exists sys.atn2(IN x varchar, IN y varchar);
drop function if exists sys.isnull(text,text);
drop function if exists sys.isnull(boolean,boolean);
drop function if exists sys.isnull(smallint,smallint);
drop function if exists sys.isnull(integer,integer);
drop function if exists sys.isnull(bigint,bigint);
drop function if exists sys.isnull(real,real);
drop function if exists sys.isnull(double precision, double precision);
drop function if exists sys.isnull(numeric,numeric);
drop function if exists sys.isnull(date, date);
drop function if exists sys.isnull(timestamp,timestamp);
drop function if exists sys.isnull(timestamp with time zone,timestamp with time zone);
drop function if exists sys.isnull(text,smallint);
drop function if exists sys.isnull(text,integer);
drop function if exists sys.isnull(text,bigint);
drop function if exists sys.isnull(text,real);
drop function if exists sys.isnull(text,double precision);
drop function if exists sys.isnull(text,numeric);
drop function if exists sys.charindex(expressionToFind PG_CATALOG.TEXT, expressionToSearch PG_CATALOG.TEXT, start_location INTEGER);
drop function if exists sys.shark_conv_helper_to_varbinary(IN typmod INTEGER, IN arg anyelement, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_varbinary(IN typmod INTEGER, IN arg VARCHAR, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_try_conv_string_to_varbinary(IN arg VARCHAR, IN p_style NUMERIC);
drop function if exists sys.shark_conv_string_to_varbinary(IN input_value VARCHAR, IN style NUMERIC);
drop function if exists sys.datetimefromparts(IN p_year NUMERIC, IN p_month NUMERIC, IN p_day NUMERIC, IN p_hour NUMERIC, IN p_minute NUMERIC, IN p_seconds NUMERIC, IN p_milliseconds NUMERIC);
drop function if exists sys.datetimefromparts(IN p_year TEXT, IN p_month TEXT, IN p_day TEXT, IN p_hour TEXT, IN p_minute TEXT, IN p_seconds TEXT, IN p_milliseconds TEXT);
drop function if exists sys.shark_round_fractseconds(IN p_fractseconds NUMERIC);
drop function if exists sys.shark_round_fractseconds(IN p_fractseconds TEXT);
drop function if exists sys.shark_conv_greg_to_hijri(IN p_dateval DATE);
drop function if exists sys.shark_conv_greg_to_hijri(IN p_day TEXT, IN p_month TEXT, IN p_year TEXT);
drop function if exists sys.shark_conv_greg_to_hijri(IN p_datetimeval TIMESTAMP WITHOUT TIME ZONE);
drop function if exists sys.shark_conv_greg_to_hijri(IN p_day NUMERIC, IN p_month NUMERIC, IN p_year NUMERIC);
drop function if exists sys.shark_get_microsecs_from_fractsecs_v2(IN p_fractsecs TEXT, IN p_scale NUMERIC);
drop function if exists sys.shark_get_int_part(IN p_srcnumber DOUBLE PRECISION);
drop function if exists sys.shark_get_full_year(IN p_short_year TEXT, IN p_base_century TEXT, IN p_year_cutoff NUMERIC);
drop function if exists sys.shark_get_monthnum_by_name(IN p_monthname TEXT, IN p_lang_metadata_json JSON);
drop function if exists sys.shark_get_timeunit_from_string(IN p_timepart TEXT, IN p_timeunit TEXT);

drop function if exists sys.datediff_internal(IN datepart PG_CATALOG.TEXT, IN startdate anyelement, IN enddate anyelement);
drop function if exists sys.datediff_internal_big(IN datepart PG_CATALOG.TEXT, IN startdate anyelement, IN enddate anyelement);
drop function if exists sys.datediff(IN datepart PG_CATALOG.TEXT, IN startdate PG_CATALOG.date, IN enddate PG_CATALOG.date);
drop function if exists sys.datediff(IN datepart PG_CATALOG.TEXT, IN startdate PG_CATALOG.timestamp, IN enddate PG_CATALOG.timestamp);
drop function if exists sys.datediff(IN datepart PG_CATALOG.TEXT, IN startdate PG_CATALOG.timestamptz, IN enddate PG_CATALOG.timestamptz);
drop function if exists sys.datediff(IN datepart PG_CATALOG.TEXT, IN startdate PG_CATALOG.smalldatetime, IN enddate PG_CATALOG.smalldatetime);
drop function if exists sys.datediff(IN datepart PG_CATALOG.TEXT, IN startdate PG_CATALOG.time, IN enddate PG_CATALOG.time);
drop function if exists sys.datediff_big(IN datepart PG_CATALOG.TEXT, IN startdate PG_CATALOG.date, IN enddate PG_CATALOG.date);
drop function if exists sys.datediff_big(IN datepart PG_CATALOG.TEXT, IN startdate PG_CATALOG.time, IN enddate PG_CATALOG.time);
drop function if exists sys.datediff_big(IN datepart PG_CATALOG.TEXT, IN startdate PG_CATALOG.timestamp, IN enddate PG_CATALOG.timestamp);
drop function if exists sys.datediff_big(IN datepart PG_CATALOG.TEXT, IN startdate PG_CATALOG.timestamptz, IN enddate PG_CATALOG.timestamptz);
drop function if exists sys.datediff_big(IN datepart PG_CATALOG.TEXT, IN startdate PG_CATALOG.smalldatetime, IN enddate PG_CATALOG.smalldatetime);

drop function if exists sys.shark_get_lang_metadata_json(IN p_lang_spec_culture TEXT);
drop function if exists sys.shark_cast_floor_smallint(IN arg TEXT);
drop function if exists sys.shark_cast_floor_smallint(IN arg ANYELEMENT);
drop function if exists sys.shark_cast_floor_int(IN arg TEXT);
drop function if exists sys.shark_cast_floor_int(IN arg ANYELEMENT);
drop function if exists sys.shark_cast_floor_bigint(IN arg TEXT);
drop function if exists sys.shark_cast_floor_bigint(IN arg ANYELEMENT);
drop function if exists sys.shark_try_cast_floor_smallint(IN arg TEXT);
drop function if exists sys.shark_try_cast_floor_smallint(IN arg ANYELEMENT);
drop function if exists sys.shark_try_cast_floor_int(IN arg TEXT);
drop function if exists sys.shark_try_cast_floor_int(IN arg ANYELEMENT);
drop function if exists sys.shark_try_cast_floor_bigint(IN arg TEXT);
drop function if exists sys.shark_try_cast_floor_bigint(IN arg ANYELEMENT);
drop function if exists sys.shark_try_cast_to_any(IN arg SMALLINT, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg TINYINT, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg INT, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg BIGINT, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg NUMERIC, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg TEXT, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg VARCHAR, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg BPCHAR, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg NVARCHAR2, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg CHAR, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg REAL, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg DOUBLE PRECISION, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg BOOL, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg TIME, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg TIMETZ, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg TIMESTAMP, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg TIMESTAMPTZ, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg DATE, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_try_cast_to_any(IN arg SMALLDATETIME, INOUT output ANYELEMENT, IN typmod INT);
drop function if exists sys.shark_conv_date_to_string(IN p_datatype TEXT, IN p_dateval DATE, IN p_style NUMERIC);
drop function if exists sys.shark_conv_time_to_string(IN p_datatype TEXT, IN p_src_datatype TEXT, IN p_timeval TIME(6) WITHOUT TIME ZONE, IN p_style NUMERIC);

drop function if exists sys.shark_conv_string_to_datetime_v2(IN p_datatype TEXT, IN p_datetimestring TEXT, IN p_style NUMERIC);
drop function if exists sys.shark_try_conv_string_to_datetime_v2(IN p_datatype TEXT, IN p_datetimestring TEXT, IN p_style NUMERIC);
drop function if exists sys.shark_conv_string_to_datetimeoffset(IN p_datatype TEXT, IN p_datetimestring TEXT, IN p_style NUMERIC);
drop function if exists sys.shark_try_conv_string_to_datetimeoffset(IN p_datatype TEXT, IN p_datetimestring TEXT, IN p_style NUMERIC);

drop function if exists sys.shark_conv_helper_to_datetimeoffset(IN typmod INTEGER, IN arg TEXT, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_datetimeoffset(IN typmod INTEGER, IN arg VARCHAR, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_datetimeoffset(IN typmod INTEGER, IN arg NVARCHAR2, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_datetimeoffset(IN typmod INTEGER, IN arg BPCHAR, IN p_try BOOL, IN p_style NUMERIC);

drop function if exists sys.shark_conv_helper_to_smalldatetime(IN typmod INTEGER, IN arg TEXT, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_smalldatetime(IN typmod INTEGER, IN arg VARCHAR, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_smalldatetime(IN typmod INTEGER, IN arg NVARCHAR2, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_smalldatetime(IN typmod INTEGER, IN arg BPCHAR, IN p_try BOOL, IN p_style NUMERIC);

drop function if exists sys.shark_conv_datetime_to_string(IN p_datatype TEXT, IN p_src_datatype TEXT, IN p_datetimeval TIMESTAMP(6) WITHOUT TIME ZONE, IN p_style NUMERIC);
drop function if exists sys.shark_conv_string_to_datetime2(IN p_datatype TEXT, IN p_datetimestring TEXT, IN p_style NUMERIC);

drop function if exists sys.shark_conv_helper_to_varchar(IN typename TEXT, IN arg ANYELEMENT, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_varchar(typename UNKNOWN, arg UNKNOWN, p_try BOOL, p_style NUMERIC);
drop function if exists sys.shark_conv_to_varchar(IN typename TEXT, IN arg anyelement, IN p_style NUMERIC);
drop function if exists sys.shark_try_conv_money_to_string(IN p_datatype TEXT, IN p_moneyval NUMERIC, IN p_style NUMERIC);
drop function if exists sys.shark_try_conv_float_to_string(IN p_datatype TEXT, IN p_floatval FLOAT, IN p_style NUMERIC);
drop function if exists sys.shark_try_conv_datetime_to_string(IN p_datatype TEXT, IN p_src_datatype TEXT, IN p_datetimeval TIMESTAMP WITHOUT TIME ZONE, IN p_style NUMERIC);
drop function if exists sys.shark_try_conv_to_varchar(IN typename TEXT, IN arg TEXT, IN p_style NUMERIC);
drop function if exists sys.shark_try_conv_to_varchar(IN typename TEXT, IN arg anyelement, IN p_style NUMERIC);
drop function if exists sys.shark_try_conv_date_to_string(IN p_datatype TEXT, IN p_dateval DATE, IN p_style NUMERIC);

drop function if exists sys.shark_try_conv_time_to_string(IN p_datatype TEXT, IN p_src_datatype TEXT, IN p_timeval TIME WITHOUT TIME ZONE, IN p_style NUMERIC);
drop function if exists sys.shark_try_conv_string_to_datetime2(IN p_datatype TEXT, IN p_datetimestring TEXT, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_date(IN arg TEXT, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_date(IN arg VARCHAR, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_date(IN arg NVARCHAR2, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_date(IN arg BPCHAR, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_date(IN arg anyelement, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_time(IN typmod INTEGER, IN arg TEXT, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_time(IN typmod INTEGER, IN arg VARCHAR, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_time(IN typmod INTEGER, IN arg BPCHAR, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_time(IN typmod INTEGER, IN arg NVARCHAR2, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_datetime2(IN typmod INTEGER, IN arg TEXT, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_datetime2(IN typmod INTEGER, IN arg VARCHAR, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_datetime2(IN typmod INTEGER, IN arg NVARCHAR2, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.shark_conv_helper_to_datetime2(IN typmod INTEGER, IN arg BPCHAR, IN p_try BOOL, IN p_style NUMERIC);
drop function if exists sys.dateadd(cstring,integer,date);
drop function if exists sys.dateadd(cstring,integer,timestamp without time zone);
drop function if exists sys.dateadd(cstring,integer,timestamp with time zone);
drop function if exists sys.dateadd(cstring,integer,time without time zone);
drop function if exists sys.dateadd(cstring,integer,time with time zone);
drop function if exists sys.datepart(cstring,date);
drop function if exists sys.datepart(cstring,timestamp without time zone);
drop function if exists sys.datepart(cstring,timestamp with time zone);
drop function if exists sys.datepart(cstring,time without time zone);
drop function if exists sys.datepart(cstring,time with time zone);
drop function if exists sys.getdate();
drop function if exists sys.datename(cstring,date);
drop function if exists sys.datename(cstring,timestamp without time zone);
drop function if exists sys.datename(cstring,timestamp with time zone);
drop function if exists sys.datename(cstring,time without time zone);
drop function if exists sys.datename(cstring,time with time zone);
drop function if exists sys.len(TEXT);
drop function if exists sys.len(sys.VARBINARY);

drop type if exists sys.varbinary cascade;
drop function if exists sys.varbinarytypmodin(cstring[]);
drop function if exists sys.varbinarytypmodout(integer);
drop function if exists sys.varbinaryrecv(internal, oid, integer);
drop function if exists sys.varbinaryin(cstring, oid, integer);
