set dolphin.use_const_value_as_colname=false;
create schema conv_cast_test;
set current_schema to 'conv_cast_test';
select conv(-211111111111111111111111111111111111111111111111111111111177777,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(-366666666666666666666666666666666666666, 10, 8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(-266666666666666666666666666666666666666, 10, 8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(-170141183460469231731687303715884105729,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(-170141183460469231731687303715884105728,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(-170141183460469231731687303715884105727,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(-18446744073709551617,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(-18446744073709551616,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(-18446744073709551615,10,8);
 conv 
------
 1
(1 row)

select conv(-9223372036854775809,10,8);
         conv          
-----------------------
 777777777777777777777
(1 row)

select conv(-9223372036854775808,10,8);
          conv          
------------------------
 1000000000000000000000
(1 row)

select conv(-9223372036854775807,10,8);
          conv          
------------------------
 1000000000000000000001
(1 row)

select conv(-123456,10,8);
          conv          
------------------------
 1777777777777777416700
(1 row)

select conv(-1,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(0,10,8);
 conv 
------
 0
(1 row)

select conv(211111111111111111111111111111111111111111111111111111111177777,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(366666666666666666666666666666666666666, 10, 8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(266666666666666666666666666666666666666, 10, 8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(170141183460469231731687303715884105729,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(170141183460469231731687303715884105728,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(170141183460469231731687303715884105727,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(18446744073709551617,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(18446744073709551616,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(18446744073709551615,10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv(9223372036854775809,10,8);
          conv          
------------------------
 1000000000000000000001
(1 row)

select conv(9223372036854775808,10,8);
          conv          
------------------------
 1000000000000000000000
(1 row)

select conv(9223372036854775807,10,8);
         conv          
-----------------------
 777777777777777777777
(1 row)

select conv(123456,10,8);
  conv  
--------
 361100
(1 row)

select conv(1,10,8);
 conv 
------
 1
(1 row)

select time'-2 34:25:59'::float4;
 float4  
---------
 -822559
(1 row)

select time'-838:59:59'::float4;
    float4    
--------------
 -8.38596e+06
(1 row)

select time'0'::float4;
 float4 
--------
      0
(1 row)

select time'-0'::float4;
 float4 
--------
      0
(1 row)

select time'-2 34:25:59'::float8;
 float8  
---------
 -822559
(1 row)

select time'-838:59:59'::float8;
  float8  
----------
 -8385959
(1 row)

select time'0'::float8;
 float8 
--------
      0
(1 row)

select time'-0'::float8;
 float8 
--------
      0
(1 row)

select 127::tinyint::bit(64)::tinyint;
 int1 
------
 127
(1 row)

select 32767::smallint::bit(64)::smallint;
 int2  
-------
 32767
(1 row)

select 2147483647::int::bit(64)::int;
    int4    
------------
 2147483647
(1 row)

select 9223372036854775807::bigint::bit(64)::bigint;
        int8         
---------------------
 9223372036854775807
(1 row)

select '255'::uint1::time;
   time   
----------
 00:02:55
(1 row)

select '65535'::uint2::time;
   time   
----------
 06:55:35
(1 row)

select '4294967295'::uint4::time;
WARNING:  invalid input syntax for type time: "4294967295"
CONTEXT:  referenced column: time
 time 
------
 
(1 row)

select '18446744073709551615'::uint8::time;
   time    
-----------
 -00:00:01
(1 row)

select '4294967295'::uint1::time;
WARNING:  tinyint unsigned out of range
CONTEXT:  referenced column: time
   time   
----------
 00:02:55
(1 row)

select '4294967295'::uint2::time;
WARNING:  smallint unsigned out of range
CONTEXT:  referenced column: time
   time   
----------
 06:55:35
(1 row)

select '4294967295'::uint4::time;
WARNING:  invalid input syntax for type time: "4294967295"
CONTEXT:  referenced column: time
 time 
------
 
(1 row)

select '4294967295'::uint8::time;
WARNING:  invalid input syntax for type time: "4294967295"
CONTEXT:  referenced column: time
 time 
------
 
(1 row)

select '4294967295'::int1::time;
WARNING:  value "4294967295" is out of range for type tinyint
LINE 1: select '4294967295'::int1::time;
               ^
CONTEXT:  referenced column: time
   time   
----------
 00:01:27
(1 row)

select '4294967295'::int2::time;
WARNING:  value "4294967295" is out of range for type smallint
LINE 1: select '4294967295'::int2::time;
               ^
CONTEXT:  referenced column: time
WARNING:  invalid input syntax for type time: "32767"
CONTEXT:  referenced column: time
 time 
------
 
(1 row)

select '4294967295'::int4::time;
WARNING:  value "4294967295" is out of range for type integer
LINE 1: select '4294967295'::int4::time;
               ^
CONTEXT:  referenced column: time
WARNING:  invalid input syntax for type time: "2147483647"
CONTEXT:  referenced column: time
 time 
------
 
(1 row)

select '4294967295'::int8::time;
WARNING:  invalid input syntax for type time: "4294967295"
CONTEXT:  referenced column: time
 time 
------
 
(1 row)

select conv('-211111111111111111111111111111111111111111111111111111111177777',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('-366666666666666666666666666666666666666', 10, 8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('-266666666666666666666666666666666666666', 10, 8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('-170141183460469231731687303715884105729',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('-170141183460469231731687303715884105728',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('-170141183460469231731687303715884105727',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('-18446744073709551617',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('-18446744073709551616',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('-18446744073709551615',10,8);
 conv 
------
 1
(1 row)

select conv('-9223372036854775809',10,8);
         conv          
-----------------------
 777777777777777777777
(1 row)

select conv('-9223372036854775808',10,8);
          conv          
------------------------
 1000000000000000000000
(1 row)

select conv('-9223372036854775807',10,8);
          conv          
------------------------
 1000000000000000000001
(1 row)

select conv('-123456',10,8);
          conv          
------------------------
 1777777777777777416700
(1 row)

select conv('-1',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('0',10,8);
 conv 
------
 0
(1 row)

select conv('211111111111111111111111111111111111111111111111111111111177777',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('366666666666666666666666666666666666666', 10, 8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('266666666666666666666666666666666666666', 10, 8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('170141183460469231731687303715884105729',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('170141183460469231731687303715884105728',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('170141183460469231731687303715884105727',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('18446744073709551617',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('18446744073709551616',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('18446744073709551615',10,8);
          conv          
------------------------
 1777777777777777777777
(1 row)

select conv('9223372036854775809',10,8);
          conv          
------------------------
 1000000000000000000001
(1 row)

select conv('9223372036854775808',10,8);
          conv          
------------------------
 1000000000000000000000
(1 row)

select conv('9223372036854775807',10,8);
         conv          
-----------------------
 777777777777777777777
(1 row)

select conv('123456',10,8);
  conv  
--------
 361100
(1 row)

select conv('1',10,8);
 conv 
------
 1
(1 row)

select conv('10', 8, 10);
 conv 
------
 8
(1 row)

select conv('180', 8, 10);
 conv 
------
 1
(1 row)

select conv('910', 8, 10);
 conv 
------
 0
(1 row)

select conv('B1', 8, 10);
 conv 
------
 0
(1 row)

select conv('B1', 16, 10);
 conv 
------
 177
(1 row)

select ''::bit;
 bit 
-----
 0
(1 row)

select ''::bit(10);
    bit     
------------
 0000000000
(1 row)

select ''::bit(64);
                               bit                                
------------------------------------------------------------------
 0000000000000000000000000000000000000000000000000000000000000000
(1 row)

set dolphin.b_compatibility_mode to on;
select ''::bit;
 bit 
-----
 0
(1 row)

select ''::bit(10);
    bit     
------------
 0000000000
(1 row)

select ''::bit(64);
                               bit                                
------------------------------------------------------------------
 0000000000000000000000000000000000000000000000000000000000000000
(1 row)

select 8385959::char(30)::time;
   time    
-----------
 838:59:59
(1 row)

select -8385958.999999::char(30)::time(6);
  ?column?  
------------
 -838:59:59
(1 row)

select -8385959::varchar(30)::time;
  ?column?  
------------
 -838:59:59
(1 row)

select 8385958.999999::varchar(30)::time(6);
   time    
-----------
 838:59:59
(1 row)

select '838:59:59'::char(30)::time;
   time    
-----------
 838:59:59
(1 row)

select '-838:59:58.999999'::char(30)::time(6);
    time    
------------
 -838:59:59
(1 row)

select '-838:59:59'::varchar(30)::time;
    time    
------------
 -838:59:59
(1 row)

select '838:59:58.999999'::varchar(30)::time(6);
   time    
-----------
 838:59:59
(1 row)

SELECT '20220101121212'::date;
    date    
------------
 2022-01-01
(1 row)

SELECT '20220101121212.5'::date;
    date    
------------
 2022-01-01
(1 row)

select cast(b'1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111' as unsigned);
WARNING:  bigint unsigned out of range
CONTEXT:  referenced column: uint8
        uint8         
----------------------
 18446744073709551615
(1 row)

select cast(b'1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111' as signed);
WARNING:  bigint out of range
CONTEXT:  referenced column: int8
WARNING:  bigint out of range
CONTEXT:  referenced column: int8
 int8 
------
   -1
(1 row)

select cast(b'1111111111111111111111111111111111111111111111111111111111111111' as unsigned);
        uint8         
----------------------
 18446744073709551615
(1 row)

select cast(b'1111111111111111111111111111111111111111111111111111111111111111' as signed);
WARNING:  bigint out of range
CONTEXT:  referenced column: int8
 int8 
------
   -1
(1 row)

select cast(b'111111111111111111111111111111111111111111111111111111111111111' as unsigned);
        uint8        
---------------------
 9223372036854775807
(1 row)

select cast(b'111111111111111111111111111111111111111111111111111111111111111' as signed);
        int8         
---------------------
 9223372036854775807
(1 row)

select cast(b'11111111111111111111111111111111111111111111111111111111111111111' as unsigned);
WARNING:  bigint unsigned out of range
CONTEXT:  referenced column: uint8
        uint8         
----------------------
 18446744073709551615
(1 row)

select cast(b'11111111111111111111111111111111111111111111111111111111111111111' as signed);
WARNING:  bigint out of range
CONTEXT:  referenced column: int8
WARNING:  bigint out of range
CONTEXT:  referenced column: int8
 int8 
------
   -1
(1 row)

select hex('9999-12-31 23:59:59'::datetime::bit(64));
       hex        
------------------
 00005AF105D18777
(1 row)

select hex('99991231235959'::datetime::bit(64));
       hex        
------------------
 00005AF105D18777
(1 row)

select 'true'::bool::bit;
 bit 
-----
 1
(1 row)

select 'true'::bool::bit(10);
    bit     
------------
 0000000001
(1 row)

select 'true'::bool::bit(64);
                               bit                                
------------------------------------------------------------------
 0000000000000000000000000000000000000000000000000000000000000001
(1 row)

select 'true'::bool::float4;
 float4 
--------
      1
(1 row)

select 'true'::bool::float8;
 float8 
--------
      1
(1 row)

select 'false'::bool::bit;
 bit 
-----
 0
(1 row)

select 'false'::bool::bit(10);
    bit     
------------
 0000000000
(1 row)

select 'false'::bool::bit(64);
                               bit                                
------------------------------------------------------------------
 0000000000000000000000000000000000000000000000000000000000000000
(1 row)

select 'false'::bool::float4;
 float4 
--------
      0
(1 row)

select 'false'::bool::float8;
 float8 
--------
      0
(1 row)

create table test_date(a date);
set dolphin.sql_mode = sql_mode_strict,sql_mode_full_group,pipes_as_concat,ansi_quotes,no_zero_date,pad_char_to_full_length,auto_recompile_function;
select 0::date;
    date    
------------
 0000-00-00
(1 row)

insert into test_date values(0);
ERROR:  Out of range value for date
CONTEXT:  referenced column: a
select 1::date;
WARNING:  Out of range value for date
CONTEXT:  referenced column: date
 date 
------
 
(1 row)

insert into test_date values(1);
ERROR:  Out of range value for date
CONTEXT:  referenced column: a
set dolphin.sql_mode = sql_mode_strict,sql_mode_full_group,pipes_as_concat,ansi_quotes,pad_char_to_full_length,auto_recompile_function;
select 0::date;
    date    
------------
 0000-00-00
(1 row)

insert into test_date values(0);
select 1::date;
WARNING:  Out of range value for date
CONTEXT:  referenced column: date
 date 
------
 
(1 row)

insert into test_date values(1);
ERROR:  Out of range value for date
CONTEXT:  referenced column: a
set dolphin.sql_mode = sql_mode_full_group,pipes_as_concat,ansi_quotes,no_zero_date,pad_char_to_full_length,auto_recompile_function;
select 0::date;
    date    
------------
 0000-00-00
(1 row)

insert into test_date values(0);
WARNING:  Out of range value for date
CONTEXT:  referenced column: a
select 1::date;
WARNING:  Out of range value for date
CONTEXT:  referenced column: date
 date 
------
 
(1 row)

insert into test_date values(1);
WARNING:  Out of range value for date
CONTEXT:  referenced column: a
set dolphin.sql_mode = sql_mode_full_group,pipes_as_concat,ansi_quotes,pad_char_to_full_length,auto_recompile_function;
select 0::date;
    date    
------------
 0000-00-00
(1 row)

insert into test_date values(0);
select 1::date;
WARNING:  Out of range value for date
CONTEXT:  referenced column: date
 date 
------
 
(1 row)

insert into test_date values(1);
WARNING:  Out of range value for date
CONTEXT:  referenced column: a
reset dolphin.sql_mode;
select * from test_date;
     a      
------------
 0000-00-00
 0000-00-00
 0000-00-00
 0000-00-00
 0000-00-00
(5 rows)

select b'11100000111000';
    ?column?    
----------------
 11100000111000
(1 row)

select conv(b'11100000111000', 10, 8);
 conv  
-------
 34070
(1 row)

select conv(b'11100000111000', 20, 8);
 conv  
-------
 34070
(1 row)

select conv(b'11100000111000'::int8, 20, 8);
  conv  
--------
 571546
(1 row)

select x'4c';
 ?column? 
----------
 01001100
(1 row)

select conv(x'4c', 10, 8);
 conv 
------
 114
(1 row)

select conv(x'4c', 30, 8);
 conv 
------
 114
(1 row)

select conv(x'4c'::int8, 30, 8);
 conv 
------
 330
(1 row)

set dolphin.sql_mode = treat_bxconst_as_binary;
select b'11100000111000';
 ?column? 
----------
 \x3838
(1 row)

select conv(b'11100000111000', 10, 8);
 conv 
------
 130
(1 row)

select conv(b'11100000111000', 20, 8);
 conv 
------
 250
(1 row)

select conv(b'11100000111000'::int8, 20, 8);
 conv 
------
 250
(1 row)

select x'4c';
 ?column? 
----------
 \x4c
(1 row)

select conv(x'4c', 10, 8);
 conv 
------
 0
(1 row)

select conv(x'4c', 30, 8);
 conv 
------
 25
(1 row)

select conv(x'4c'::int8, 30, 8);
WARNING:  Truncated incorrect INTEGER value: 'L'
CONTEXT:  referenced column: conv
 conv 
------
 0
(1 row)

reset dolphin.sql_mode;
drop schema conv_cast_test cascade;
NOTICE:  drop cascades to table test_date
reset current_schema;