set search_path to "$user",public,madlib;
-- Basic methods
select mfvsketch_top_histogram(i,5) 
  from (select * from generate_series(1,100) union all select * from generate_series(10,15)) as T(i);
             mfvsketch_top_histogram             
-------------------------------------------------
 [0:4][0:1]={{10,2},{11,2},{12,2},{13,2},{14,2}}
(1 row)

select mfvsketch_top_histogram(utc_offset,5) from pg_timezone_names;
                                      mfvsketch_top_histogram                                       
----------------------------------------------------------------------------------------------------
 [0:4][0:1]={{"@ 0",54},{"@ 1 hour",50},{"@ 2 hours",46},{"@ 5 hours ago",44},{"@ 4 hours ago",40}}
(1 row)

select mfvsketch_top_histogram(NULL::bytea,5) from generate_series(1,100);
 mfvsketch_top_histogram 
-------------------------
 
(1 row)

select mfvsketch_quick_histogram(i,5) 
  from (select * from generate_series(1,100) union all select * from generate_series(10,15)) as T(i);
            mfvsketch_quick_histogram            
-------------------------------------------------
 [0:4][0:1]={{10,2},{11,2},{12,2},{13,2},{14,2}}
(1 row)

select mfvsketch_quick_histogram(utc_offset,5) from pg_timezone_names;
                                     mfvsketch_quick_histogram                                      
----------------------------------------------------------------------------------------------------
 [0:4][0:1]={{"@ 0",54},{"@ 1 hour",50},{"@ 2 hours",46},{"@ 5 hours ago",44},{"@ 4 hours ago",40}}
(1 row)

select mfvsketch_quick_histogram(NULL::bytea,5) from generate_series(1,100);
 mfvsketch_quick_histogram 
---------------------------
 
(1 row)

