New version. Add support for int2, int8, float4, float8, timestamp with/without time zone, time with/without time zone, date, interval, oid, money and macaddr, char, varchar/text, bytea, numeric, bit, varbit, inet/cidr types for GiST
This commit is contained in:
parent
1a321f26d8
commit
42d069886f
|
@ -3,27 +3,17 @@ subdir = contrib/btree_gist
|
|||
top_builddir = ../..
|
||||
include $(top_builddir)/src/Makefile.global
|
||||
|
||||
MODULE_big = btree_gist
|
||||
OBJS= btree_common.o btree_int2.o btree_int4.o btree_int8.o btree_float4.o btree_float8.o btree_ts.o
|
||||
DATA_built = btree_gist.sql
|
||||
DOCS = README.btree_gist
|
||||
REGRESS = btree_gist
|
||||
MODULE_big = btree_gist
|
||||
|
||||
EXTRA_CLEAN = btree_int2.c btree_int4.c btree_int8.c btree_float4.c btree_float8.c
|
||||
OBJS = btree_gist.o btree_utils_num.o btree_utils_var.o btree_int2.o btree_int4.o btree_int8.o \
|
||||
btree_float4.o btree_float8.o btree_cash.o btree_oid.o btree_ts.o btree_time.o \
|
||||
btree_date.o btree_interval.o btree_macaddr.o btree_inet.o btree_text.o \
|
||||
btree_bytea.o btree_bit.o btree_numeric.o
|
||||
|
||||
DATA_built = btree_gist.sql
|
||||
DOCS = README.btree_gist
|
||||
|
||||
REGRESS = init int2 int4 int8 float4 float8 cash oid timestamp timestamptz time timetz \
|
||||
date interval macaddr inet cidr text varchar char bytea bit varbit numeric
|
||||
|
||||
include $(top_srcdir)/contrib/contrib-global.mk
|
||||
|
||||
btree_int2.c: btree_num.c.in
|
||||
sed 's,__DEFINE_BTREE_TYPE_HERE__,BTREE_GIST_INT2,g;s,__BTREE_GIST_TYPE__,int16,g;s,__BTREE_GIST_TYPE2__,int2,g' < $< > $@
|
||||
|
||||
btree_int4.c: btree_num.c.in
|
||||
sed 's,__DEFINE_BTREE_TYPE_HERE__,BTREE_GIST_INT4,g;s,__BTREE_GIST_TYPE__,int32,g;s,__BTREE_GIST_TYPE2__,int4,g' < $< > $@
|
||||
|
||||
btree_int8.c: btree_num.c.in
|
||||
sed 's,__DEFINE_BTREE_TYPE_HERE__,BTREE_GIST_INT8,g;s,__BTREE_GIST_TYPE__,int64,g;s,__BTREE_GIST_TYPE2__,int8,g' < $< > $@
|
||||
|
||||
btree_float4.c: btree_num.c.in
|
||||
sed 's,__DEFINE_BTREE_TYPE_HERE__,BTREE_GIST_FLOAT4,g;s,__BTREE_GIST_TYPE__,float4,g;s,__BTREE_GIST_TYPE2__,float4,g' < $< > $@
|
||||
|
||||
btree_float8.c: btree_num.c.in
|
||||
sed 's,__DEFINE_BTREE_TYPE_HERE__,BTREE_GIST_FLOAT8,g;s,__BTREE_GIST_TYPE__,float8,g;s,__BTREE_GIST_TYPE2__,float8,g' < $< > $@
|
||||
|
|
|
@ -1,19 +1,38 @@
|
|||
This is B-Tree implementation using GiST for int2, int4, int8, float4, float8
|
||||
timestamp types.
|
||||
timestamp with/without time zone, time with/without time zone, date,
|
||||
interval, oid, money and macaddr, char, varchar/text, bytea, numeric,
|
||||
bit, varbit, inet/cidr types.
|
||||
|
||||
All work was done by Teodor Sigaev (teodor@stack.net) and Oleg Bartunov
|
||||
(oleg@sai.msu.su). See http://www.sai.msu.su/~megera/postgres/gist
|
||||
for additional information.
|
||||
All work was done by Teodor Sigaev (teodor@stack.net) , Oleg Bartunov
|
||||
(oleg@sai.msu.su), Janko Richter (jankorichter@yahoo.de).
|
||||
See http://www.sai.msu.su/~megera/postgres/gist for additional
|
||||
information.
|
||||
|
||||
NEWS:
|
||||
Feb 5, 2003 - btree_gist now support int2, int8, float4, float8 !
|
||||
Thank Janko Richter <jankorichter@yahoo.de> for
|
||||
contribution.
|
||||
|
||||
Apr 17, 2004 - Performance optimizing
|
||||
|
||||
Jan 21, 2004 - add support for bytea, numeric, bit, varbit, inet/cidr
|
||||
|
||||
Jan 17, 2004 - Reorganizing code and add support for char, varchar/text
|
||||
|
||||
Jan 10, 2004 - btree_gist now support oid , timestamp with time zone ,
|
||||
time with and without time zone, date , interval
|
||||
money, macaddr
|
||||
|
||||
Feb 5, 2003 - btree_gist now support int2, int8, float4, float8
|
||||
|
||||
NOTICE:
|
||||
This version will works only with postgresql version 7.3 and above
|
||||
This version will works only with postgresql version 7.4 and above
|
||||
because of changes in interface of function calling and in system
|
||||
tables.
|
||||
|
||||
If you want to index varchar attributes, you have to index using
|
||||
the function text(<varchar>):
|
||||
Example:
|
||||
CREATE TABLE test ( a varchar(23) );
|
||||
CREATE INDEX testidx ON test USING GIST ( text(a) );
|
||||
|
||||
|
||||
INSTALLATION:
|
||||
|
||||
|
|
|
@ -0,0 +1,185 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_var.h"
|
||||
#include "utils/builtins.h"
|
||||
#include "utils/varbit.h"
|
||||
|
||||
|
||||
/*
|
||||
** Bit ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_bit_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_bit_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_bit_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_bit_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_bit_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_bit_same);
|
||||
|
||||
Datum gbt_bit_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_bit_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_bit_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_bit_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_bit_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_bit_same(PG_FUNCTION_ARGS);
|
||||
|
||||
|
||||
|
||||
/* define for comparison */
|
||||
|
||||
static bool gbt_bitgt (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( bitgt ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_bitge (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( bitge ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_biteq (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( biteq ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_bitle (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( bitle ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_bitlt (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( bitlt ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static int32 gbt_bitcmp ( const bytea * a , const bytea * b )
|
||||
{
|
||||
return
|
||||
( DatumGetInt32(DirectFunctionCall2(byteacmp,PointerGetDatum(a),PointerGetDatum(b) ) ) );
|
||||
}
|
||||
|
||||
|
||||
static bytea *
|
||||
gbt_bit_xfrm ( bytea * leaf )
|
||||
{
|
||||
bytea * out = leaf;
|
||||
int s = VARBITBYTES(leaf) + VARHDRSZ;
|
||||
|
||||
out = palloc ( s );
|
||||
VARATT_SIZEP(out) = s;
|
||||
memcpy ( (void*)VARDATA(out), (void*)VARBITS(leaf), VARBITBYTES(leaf) );
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static GBT_VARKEY * gbt_bit_l2n ( GBT_VARKEY * leaf )
|
||||
{
|
||||
|
||||
GBT_VARKEY *out = leaf ;
|
||||
GBT_VARKEY_R r = gbt_var_key_readable ( leaf );
|
||||
bytea *o ;
|
||||
|
||||
o = gbt_bit_xfrm (r.lower);
|
||||
r.upper = r.lower = o;
|
||||
out = gbt_var_key_copy( &r, TRUE );
|
||||
pfree(o);
|
||||
|
||||
return out;
|
||||
|
||||
}
|
||||
|
||||
static const gbtree_vinfo tinfo =
|
||||
{
|
||||
gbt_t_bit,
|
||||
FALSE,
|
||||
TRUE,
|
||||
gbt_bitgt,
|
||||
gbt_bitge,
|
||||
gbt_biteq,
|
||||
gbt_bitle,
|
||||
gbt_bitlt,
|
||||
gbt_bitcmp,
|
||||
gbt_bit_l2n
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* Bit ops
|
||||
**************************************************/
|
||||
|
||||
Datum
|
||||
gbt_bit_compress (PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
PG_RETURN_POINTER ( gbt_var_compress( entry, &tinfo ) );
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_bit_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GBT_VARKEY *ktst = (GBT_VARKEY *) DatumGetPointer ( entry->key ) ;
|
||||
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer ( PG_DETOAST_DATUM( entry->key ) );
|
||||
void *qtst = ( void * ) DatumGetPointer( PG_GETARG_DATUM(1) );
|
||||
void *query = ( void * ) DatumGetByteaP ( PG_GETARG_DATUM(1) );
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
bool retval = FALSE;
|
||||
GBT_VARKEY_R r = gbt_var_key_readable ( key );
|
||||
|
||||
if ( GIST_LEAF(entry) )
|
||||
{
|
||||
retval = gbt_var_consistent( &r, query, &strategy, TRUE, &tinfo );
|
||||
} else {
|
||||
bytea * q = gbt_bit_xfrm ( ( bytea * ) query );
|
||||
retval = gbt_var_consistent( &r, (void*)q, &strategy, FALSE, &tinfo );
|
||||
pfree(q);
|
||||
}
|
||||
|
||||
if ( ktst != key ){
|
||||
pfree ( key );
|
||||
}
|
||||
if ( qtst != query ){
|
||||
pfree ( query );
|
||||
}
|
||||
PG_RETURN_BOOL(retval);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_bit_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector * entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
int32 * size = (int *) PG_GETARG_POINTER(1);
|
||||
PG_RETURN_POINTER( gbt_var_union ( entryvec , size , &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_bit_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
GIST_SPLITVEC *v = (GIST_SPLITVEC *) PG_GETARG_POINTER(1);
|
||||
gbt_var_picksplit ( entryvec, v, &tinfo );
|
||||
PG_RETURN_POINTER(v);
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_bit_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Datum d1 = PG_GETARG_DATUM(0);
|
||||
Datum d2 = PG_GETARG_DATUM(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
PG_RETURN_POINTER( gbt_var_same ( result, d1 , d2 , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_bit_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
GISTENTRY * o = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY * n = (GISTENTRY *) PG_GETARG_POINTER(1);
|
||||
PG_RETURN_POINTER( gbt_var_penalty ( result ,o , n, &tinfo ) );
|
||||
}
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_var.h"
|
||||
#include "utils/builtins.h"
|
||||
|
||||
|
||||
/*
|
||||
** Bytea ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_bytea_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_bytea_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_bytea_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_bytea_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_bytea_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_bytea_same);
|
||||
|
||||
Datum gbt_bytea_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_bytea_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_bytea_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_bytea_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_bytea_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_bytea_same(PG_FUNCTION_ARGS);
|
||||
|
||||
|
||||
/* define for comparison */
|
||||
|
||||
static bool gbt_byteagt (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( byteagt ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_byteage (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( byteage ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_byteaeq (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( byteaeq ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_byteale (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( byteale ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_bytealt (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( bytealt ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
|
||||
static int32 gbt_byteacmp ( const bytea * a , const bytea * b )
|
||||
{
|
||||
return
|
||||
( DatumGetInt32(DirectFunctionCall2(byteacmp,PointerGetDatum(a),PointerGetDatum(b) ) ) );
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_vinfo tinfo =
|
||||
{
|
||||
gbt_t_bytea,
|
||||
FALSE,
|
||||
TRUE,
|
||||
gbt_byteagt,
|
||||
gbt_byteage,
|
||||
gbt_byteaeq,
|
||||
gbt_byteale,
|
||||
gbt_bytealt,
|
||||
gbt_byteacmp,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* Text ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
Datum
|
||||
gbt_bytea_compress (PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
PG_RETURN_POINTER ( gbt_var_compress( entry, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_bytea_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GBT_VARKEY *ktst = (GBT_VARKEY *) DatumGetPointer ( entry->key ) ;
|
||||
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer ( PG_DETOAST_DATUM( entry->key ) );
|
||||
void *qtst = ( void * ) DatumGetPointer( PG_GETARG_DATUM(1) );
|
||||
void *query = ( void * ) DatumGetByteaP ( PG_GETARG_DATUM(1) );
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
bool retval = FALSE;
|
||||
GBT_VARKEY_R r = gbt_var_key_readable ( key );
|
||||
|
||||
retval = gbt_var_consistent( &r, query, &strategy, GIST_LEAF(entry), &tinfo );
|
||||
|
||||
if ( ktst != key ){
|
||||
pfree ( key );
|
||||
}
|
||||
if ( qtst != query ){
|
||||
pfree ( query );
|
||||
}
|
||||
PG_RETURN_BOOL(retval);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_bytea_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector * entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
int32 * size = (int *) PG_GETARG_POINTER(1);
|
||||
PG_RETURN_POINTER( gbt_var_union ( entryvec , size , &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_bytea_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
GIST_SPLITVEC *v = (GIST_SPLITVEC *) PG_GETARG_POINTER(1);
|
||||
gbt_var_picksplit ( entryvec, v, &tinfo );
|
||||
PG_RETURN_POINTER(v);
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_bytea_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Datum d1 = PG_GETARG_DATUM(0);
|
||||
Datum d2 = PG_GETARG_DATUM(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
PG_RETURN_POINTER( gbt_var_same ( result, d1 , d2 , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_bytea_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
GISTENTRY * o = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY * n = (GISTENTRY *) PG_GETARG_POINTER(1);
|
||||
PG_RETURN_POINTER( gbt_var_penalty ( result ,o , n, &tinfo ) );
|
||||
}
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
#include "utils/cash.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Cash lower;
|
||||
Cash upper;
|
||||
} cashKEY;
|
||||
|
||||
/*
|
||||
** Cash ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_cash_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_cash_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_cash_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_cash_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_cash_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_cash_same);
|
||||
|
||||
Datum gbt_cash_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_cash_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_cash_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_cash_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_cash_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_cash_same(PG_FUNCTION_ARGS);
|
||||
|
||||
static bool gbt_cashgt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((Cash*)a) > *((Cash*)b) );
|
||||
}
|
||||
static bool gbt_cashge (const void *a, const void *b)
|
||||
{
|
||||
return ( *((Cash*)a) >= *((Cash*)b) );
|
||||
}
|
||||
static bool gbt_casheq (const void *a, const void *b)
|
||||
{
|
||||
return ( *((Cash*)a) == *((Cash*)b) );
|
||||
}
|
||||
static bool gbt_cashle (const void *a, const void *b)
|
||||
{
|
||||
return ( *((Cash*)a) <= *((Cash*)b) );
|
||||
}
|
||||
static bool gbt_cashlt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((Cash*)a) < *((Cash*)b) );
|
||||
}
|
||||
|
||||
static int
|
||||
gbt_cashkey_cmp(const void *a, const void *b)
|
||||
{
|
||||
|
||||
if ( *(Cash*)&(((Nsrt *) a)->t[0]) > *(Cash*)&(((Nsrt *) b)->t[0]) ){
|
||||
return 1;
|
||||
} else
|
||||
if ( *(Cash*)&(((Nsrt *) a)->t[0]) < *(Cash*)&(((Nsrt *) b)->t[0]) ){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_cash,
|
||||
sizeof(Cash),
|
||||
gbt_cashgt,
|
||||
gbt_cashge,
|
||||
gbt_casheq,
|
||||
gbt_cashle,
|
||||
gbt_cashlt,
|
||||
gbt_cashkey_cmp
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* Cash ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
Datum
|
||||
gbt_cash_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_num_compress( retval , entry , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_cash_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
Cash query = (*((Cash *) PG_GETARG_POINTER(1)));
|
||||
cashKEY *kkk = (cashKEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_cash_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc(sizeof(cashKEY));
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(cashKEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_cash_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
cashKEY *origentry = (cashKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
cashKEY *newentry = (cashKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
|
||||
Cash res ;
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
res = Max(newentry->upper - origentry->upper, 0) +
|
||||
Max(origentry->lower - newentry->lower, 0);
|
||||
|
||||
if ( res > 0 ){
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + origentry->upper - origentry->lower ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_cash_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_cash_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
cashKEY *b1 = (cashKEY *) PG_GETARG_POINTER(0);
|
||||
cashKEY *b2 = (cashKEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
#include "btree_gist.h"
|
||||
|
||||
PG_FUNCTION_INFO_V1(btree_decompress);
|
||||
Datum btree_decompress(PG_FUNCTION_ARGS);
|
||||
|
||||
/*
|
||||
** GiST DeCompress methods
|
||||
** do not do anything.
|
||||
*/
|
||||
Datum
|
||||
btree_decompress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(PG_GETARG_POINTER(0));
|
||||
}
|
||||
|
||||
|
||||
/**************************************************
|
||||
* Common btree-function (for all ops)
|
||||
**************************************************/
|
||||
|
||||
/*
|
||||
** The GiST PickSplit method
|
||||
*/
|
||||
extern GIST_SPLITVEC *
|
||||
btree_picksplit(GistEntryVector *entryvec, GIST_SPLITVEC *v, BINARY_UNION bu, CMPFUNC cmp)
|
||||
{
|
||||
OffsetNumber i;
|
||||
RIX *array;
|
||||
OffsetNumber maxoff;
|
||||
int nbytes;
|
||||
|
||||
maxoff = entryvec->n - 1;
|
||||
nbytes = (maxoff + 2) * sizeof(OffsetNumber);
|
||||
v->spl_left = (OffsetNumber *) palloc(nbytes);
|
||||
v->spl_right = (OffsetNumber *) palloc(nbytes);
|
||||
v->spl_nleft = 0;
|
||||
v->spl_nright = 0;
|
||||
v->spl_ldatum = PointerGetDatum(0);
|
||||
v->spl_rdatum = PointerGetDatum(0);
|
||||
array = (RIX *) palloc(sizeof(RIX) * (maxoff + 1));
|
||||
|
||||
/* copy the data into RIXes, and sort the RIXes */
|
||||
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
|
||||
{
|
||||
array[i].index = i;
|
||||
array[i].r = (char *) DatumGetPointer((entryvec->vector[i].key));
|
||||
}
|
||||
qsort((void *) &array[FirstOffsetNumber], maxoff - FirstOffsetNumber + 1,
|
||||
sizeof(RIX), cmp);
|
||||
|
||||
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
|
||||
{
|
||||
if (i <= (maxoff - FirstOffsetNumber + 1) / 2)
|
||||
{
|
||||
v->spl_left[v->spl_nleft] = array[i].index;
|
||||
v->spl_nleft++;
|
||||
(*bu) (&v->spl_ldatum, array[i].r);
|
||||
}
|
||||
else
|
||||
{
|
||||
v->spl_right[v->spl_nright] = array[i].index;
|
||||
v->spl_nright++;
|
||||
(*bu) (&v->spl_rdatum, array[i].r);
|
||||
}
|
||||
}
|
||||
pfree(array);
|
||||
|
||||
return (v);
|
||||
}
|
|
@ -0,0 +1,191 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
#include "utils/date.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DateADT lower;
|
||||
DateADT upper;
|
||||
} dateKEY;
|
||||
|
||||
/*
|
||||
** date ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_date_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_date_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_date_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_date_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_date_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_date_same);
|
||||
|
||||
Datum gbt_date_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_date_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_date_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_date_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_date_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_date_same(PG_FUNCTION_ARGS);
|
||||
|
||||
static bool gbt_dategt (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(date_gt,DateADTGetDatum( *((DateADT*)a) ), DateADTGetDatum( *((DateADT*)b) ) )
|
||||
);
|
||||
}
|
||||
|
||||
static bool gbt_datege (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(date_ge,DateADTGetDatum( *((DateADT*)a) ), DateADTGetDatum( *((DateADT*)b) ) )
|
||||
);
|
||||
}
|
||||
|
||||
static bool gbt_dateeq (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(date_eq,DateADTGetDatum( *((DateADT*)a) ), DateADTGetDatum( *((DateADT*)b) ) )
|
||||
);
|
||||
}
|
||||
|
||||
static bool gbt_datele (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(date_le,DateADTGetDatum( *((DateADT*)a) ), DateADTGetDatum( *((DateADT*)b) ) )
|
||||
);
|
||||
}
|
||||
|
||||
static bool gbt_datelt (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(date_lt,DateADTGetDatum( *((DateADT*)a) ), DateADTGetDatum( *((DateADT*)b) ) )
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
gbt_datekey_cmp(const void *a, const void *b)
|
||||
{
|
||||
if ( gbt_dategt( (void*)&(((Nsrt *) a)->t[0]) , (void*)&(((Nsrt *) b)->t[0]) ) ){
|
||||
return 1;
|
||||
} else
|
||||
if ( gbt_datelt( (void*)&(((Nsrt *) a)->t[0]) , (void*)&(((Nsrt *) b)->t[0]) ) ){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_date,
|
||||
sizeof(DateADT),
|
||||
gbt_dategt,
|
||||
gbt_datege,
|
||||
gbt_dateeq,
|
||||
gbt_datele,
|
||||
gbt_datelt,
|
||||
gbt_datekey_cmp
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* date ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_date_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_num_compress( retval , entry , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_date_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
DateADT query = PG_GETARG_DATEADT( 1 );
|
||||
dateKEY *kkk = (dateKEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_date_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc(sizeof(dateKEY));
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(dateKEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_date_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
dateKEY *origentry = (dateKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
dateKEY *newentry = (dateKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
int32 diff, res ;
|
||||
|
||||
diff = DatumGetInt32(DirectFunctionCall2(
|
||||
date_mi,
|
||||
DateADTGetDatum(newentry->upper),
|
||||
DateADTGetDatum(origentry->upper)));
|
||||
|
||||
res = Max(diff, 0);
|
||||
|
||||
diff = DatumGetInt32(DirectFunctionCall2(
|
||||
date_mi,
|
||||
DateADTGetDatum(origentry->lower),
|
||||
DateADTGetDatum(newentry->lower)));
|
||||
|
||||
res += Max(diff, 0);
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
if ( res > 0 ){
|
||||
diff = DatumGetInt32(DirectFunctionCall2(
|
||||
date_mi,
|
||||
DateADTGetDatum(origentry->upper),
|
||||
DateADTGetDatum(origentry->lower)));
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + diff ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_date_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_date_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
dateKEY *b1 = (dateKEY *) PG_GETARG_POINTER(0);
|
||||
dateKEY *b2 = (dateKEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
|
@ -0,0 +1,161 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
|
||||
typedef struct float4key
|
||||
{
|
||||
float4 lower;
|
||||
float4 upper;
|
||||
} float4KEY;
|
||||
|
||||
/*
|
||||
** float4 ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_float4_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_float4_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_float4_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_float4_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_float4_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_float4_same);
|
||||
|
||||
Datum gbt_float4_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_float4_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_float4_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_float4_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_float4_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_float4_same(PG_FUNCTION_ARGS);
|
||||
|
||||
static bool gbt_float4gt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((float4*)a) > *((float4*)b) );
|
||||
}
|
||||
static bool gbt_float4ge (const void *a, const void *b)
|
||||
{
|
||||
return ( *((float4*)a) >= *((float4*)b) );
|
||||
}
|
||||
static bool gbt_float4eq (const void *a, const void *b)
|
||||
{
|
||||
return ( *((float4*)a) == *((float4*)b) );
|
||||
}
|
||||
static bool gbt_float4le (const void *a, const void *b)
|
||||
{
|
||||
return ( *((float4*)a) <= *((float4*)b) );
|
||||
}
|
||||
static bool gbt_float4lt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((float4*)a) < *((float4*)b) );
|
||||
}
|
||||
|
||||
static int
|
||||
gbt_float4key_cmp(const void *a, const void *b)
|
||||
{
|
||||
|
||||
if ( *(float4*)&(((Nsrt *) a)->t[0]) > *(float4*)&(((Nsrt *) b)->t[0]) ){
|
||||
return 1;
|
||||
} else
|
||||
if ( *(float4*)&(((Nsrt *) a)->t[0]) < *(float4*)&(((Nsrt *) b)->t[0]) ){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_float4,
|
||||
sizeof(float4),
|
||||
gbt_float4gt,
|
||||
gbt_float4ge,
|
||||
gbt_float4eq,
|
||||
gbt_float4le,
|
||||
gbt_float4lt,
|
||||
gbt_float4key_cmp
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* float4 ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
Datum
|
||||
gbt_float4_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_num_compress( retval , entry , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_float4_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
float4 query = PG_GETARG_FLOAT4(1);
|
||||
float4KEY *kkk = (float4KEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_float4_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc(sizeof(float4KEY));
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(float4KEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_float4_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
float4KEY *origentry = (float4KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
float4KEY *newentry = (float4KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
|
||||
float4 res ;
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
res = Max(newentry->upper - origentry->upper, 0) +
|
||||
Max(origentry->lower - newentry->lower, 0);
|
||||
|
||||
if ( res > 0 ){
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + origentry->upper - origentry->lower ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_float4_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_float4_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
float4KEY *b1 = (float4KEY *) PG_GETARG_POINTER(0);
|
||||
float4KEY *b2 = (float4KEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
|
||||
typedef struct float8key
|
||||
{
|
||||
float8 lower;
|
||||
float8 upper;
|
||||
} float8KEY;
|
||||
|
||||
/*
|
||||
** float8 ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_float8_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_float8_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_float8_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_float8_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_float8_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_float8_same);
|
||||
|
||||
Datum gbt_float8_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_float8_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_float8_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_float8_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_float8_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_float8_same(PG_FUNCTION_ARGS);
|
||||
|
||||
|
||||
static bool gbt_float8gt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((float8*)a) > *((float8*)b) );
|
||||
}
|
||||
static bool gbt_float8ge (const void *a, const void *b)
|
||||
{
|
||||
return ( *((float8*)a) >= *((float8*)b) );
|
||||
}
|
||||
static bool gbt_float8eq (const void *a, const void *b)
|
||||
{
|
||||
return ( *((float8*)a) == *((float8*)b) );
|
||||
}
|
||||
static bool gbt_float8le (const void *a, const void *b)
|
||||
{
|
||||
return ( *((float8*)a) <= *((float8*)b) );
|
||||
}
|
||||
static bool gbt_float8lt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((float8*)a) < *((float8*)b) );
|
||||
}
|
||||
|
||||
static int
|
||||
gbt_float8key_cmp(const void *a, const void *b)
|
||||
{
|
||||
|
||||
if ( *(float8*)&(((Nsrt *) a)->t[0]) > *(float8*)&(((Nsrt *) b)->t[0]) ){
|
||||
return 1;
|
||||
} else
|
||||
if ( *(float8*)&(((Nsrt *) a)->t[0]) < *(float8*)&(((Nsrt *) b)->t[0]) ){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_float8,
|
||||
sizeof(float8),
|
||||
gbt_float8gt,
|
||||
gbt_float8ge,
|
||||
gbt_float8eq,
|
||||
gbt_float8le,
|
||||
gbt_float8lt,
|
||||
gbt_float8key_cmp
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* float8 ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
Datum
|
||||
gbt_float8_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_num_compress( retval , entry , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_float8_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
float8 query = PG_GETARG_FLOAT8(1);
|
||||
float8KEY *kkk = (float8KEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_float8_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc(sizeof(float8KEY));
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(float8KEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_float8_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
float8KEY *origentry = (float8KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
float8KEY *newentry = (float8KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
|
||||
float8 res ;
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
res = Max(newentry->upper - origentry->upper, 0) +
|
||||
Max(origentry->lower - newentry->lower, 0);
|
||||
|
||||
if ( res > 0 ){
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + origentry->upper - origentry->lower ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_float8_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_float8_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
float8KEY *b1 = (float8KEY *) PG_GETARG_POINTER(0);
|
||||
float8KEY *b2 = (float8KEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
#include "btree_gist.h"
|
||||
|
||||
PG_FUNCTION_INFO_V1(gbt_decompress);
|
||||
PG_FUNCTION_INFO_V1(gbtreekey_in);
|
||||
PG_FUNCTION_INFO_V1(gbtreekey_out);
|
||||
|
||||
Datum gbt_decompress(PG_FUNCTION_ARGS);
|
||||
|
||||
/**************************************************
|
||||
* In/Out for keys
|
||||
**************************************************/
|
||||
|
||||
|
||||
Datum
|
||||
gbtreekey_in(PG_FUNCTION_ARGS)
|
||||
{
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("<datatype>key_in() not implemented")));
|
||||
|
||||
PG_RETURN_POINTER(NULL);
|
||||
}
|
||||
|
||||
#include "btree_utils_var.h"
|
||||
#include "utils/builtins.h"
|
||||
Datum
|
||||
gbtreekey_out(PG_FUNCTION_ARGS)
|
||||
{
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("<datatype>key_out() not implemented")));
|
||||
PG_RETURN_POINTER(NULL);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
** GiST DeCompress methods
|
||||
** do not do anything.
|
||||
*/
|
||||
Datum
|
||||
gbt_decompress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(PG_GETARG_POINTER(0));
|
||||
}
|
||||
|
|
@ -1,25 +1,39 @@
|
|||
#include "postgres.h"
|
||||
|
||||
#include "access/gist.h"
|
||||
#include "access/itup.h"
|
||||
#include "access/nbtree.h"
|
||||
#include "utils/geo_decls.h"
|
||||
|
||||
typedef int (*CMPFUNC) (const void *a, const void *b);
|
||||
typedef void (*BINARY_UNION) (Datum *, char *);
|
||||
/* indexed types */
|
||||
|
||||
|
||||
/* used for sorting */
|
||||
|
||||
typedef struct rix
|
||||
enum gbtree_type
|
||||
{
|
||||
int index;
|
||||
char *r;
|
||||
} RIX;
|
||||
gbt_t_var ,
|
||||
gbt_t_int2 ,
|
||||
gbt_t_int4 ,
|
||||
gbt_t_int8 ,
|
||||
gbt_t_float4 ,
|
||||
gbt_t_float8 ,
|
||||
gbt_t_numeric,
|
||||
gbt_t_ts,
|
||||
gbt_t_cash,
|
||||
gbt_t_oid,
|
||||
gbt_t_time,
|
||||
gbt_t_date,
|
||||
gbt_t_intv,
|
||||
gbt_t_macad,
|
||||
gbt_t_text,
|
||||
gbt_t_bpchar,
|
||||
gbt_t_bytea,
|
||||
gbt_t_bit,
|
||||
gbt_t_inet
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
** Common btree-function (for all ops)
|
||||
*/
|
||||
* Generic btree functions
|
||||
*/
|
||||
|
||||
extern GIST_SPLITVEC *btree_picksplit(GistEntryVector *entryvec, GIST_SPLITVEC *v,
|
||||
BINARY_UNION bu, CMPFUNC cmp);
|
||||
Datum gbtreekey_in (PG_FUNCTION_ARGS);
|
||||
|
||||
Datum gbtreekey_out(PG_FUNCTION_ARGS);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,224 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
#include "utils/builtins.h"
|
||||
#include "utils/inet.h"
|
||||
#include "catalog/pg_type.h"
|
||||
|
||||
typedef struct inetkey
|
||||
{
|
||||
double lower;
|
||||
double upper;
|
||||
} inetKEY;
|
||||
|
||||
/*
|
||||
** inet ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_inet_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_cidr_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_inet_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_inet_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_inet_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_cidr_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_inet_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_inet_same);
|
||||
|
||||
Datum gbt_inet_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_cidr_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_inet_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_inet_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_inet_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_cidr_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_inet_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_inet_same(PG_FUNCTION_ARGS);
|
||||
|
||||
|
||||
static bool gbt_inetgt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((double*)a) > *((double*)b) );
|
||||
}
|
||||
static bool gbt_inetge (const void *a, const void *b)
|
||||
{
|
||||
return ( *((double*)a) >= *((double*)b) );
|
||||
}
|
||||
static bool gbt_ineteq (const void *a, const void *b)
|
||||
{
|
||||
return ( *((double*)a) == *((double*)b) );
|
||||
}
|
||||
static bool gbt_inetle (const void *a, const void *b)
|
||||
{
|
||||
return ( *((double*)a) <= *((double*)b) );
|
||||
}
|
||||
static bool gbt_inetlt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((double*)a) < *((double*)b) );
|
||||
}
|
||||
|
||||
static int
|
||||
gbt_inetkey_cmp(const void *a, const void *b)
|
||||
{
|
||||
|
||||
if ( *(double*)(&((Nsrt *) a)->t[0]) > *(double*)(&((Nsrt *) b)->t[0]) ){
|
||||
return 1;
|
||||
} else
|
||||
if ( *(double*)(&((Nsrt *) a)->t[0]) < *(double*)(&((Nsrt *) b)->t[0]) ){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_inet,
|
||||
sizeof(double),
|
||||
gbt_inetgt,
|
||||
gbt_inetge,
|
||||
gbt_ineteq,
|
||||
gbt_inetle,
|
||||
gbt_inetlt,
|
||||
gbt_inetkey_cmp
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* inet ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
|
||||
static GISTENTRY *
|
||||
gbt_inet_compress_inetrnal(GISTENTRY *retval , GISTENTRY *entry , Oid typid)
|
||||
{
|
||||
|
||||
if (entry->leafkey)
|
||||
{
|
||||
inetKEY *r = (inetKEY *) palloc(sizeof(inetKEY));
|
||||
retval = palloc(sizeof(GISTENTRY));
|
||||
r->lower = convert_network_to_scalar(entry->key, typid );
|
||||
r->upper = r->lower ;
|
||||
gistentryinit(*retval, PointerGetDatum(r),
|
||||
entry->rel, entry->page,
|
||||
entry->offset, sizeof(inetKEY), FALSE);
|
||||
}
|
||||
else
|
||||
retval = entry;
|
||||
|
||||
return ( retval );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_inet_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_inet_compress_inetrnal(retval ,entry ,INETOID ) );
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_cidr_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_inet_compress_inetrnal(retval ,entry ,CIDROID ) );
|
||||
}
|
||||
|
||||
|
||||
static bool
|
||||
gbt_inet_consistent_internal (
|
||||
const GISTENTRY * entry,
|
||||
const double * query,
|
||||
const StrategyNumber * strategy
|
||||
){
|
||||
inetKEY *kkk = (inetKEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
return (
|
||||
gbt_num_consistent( &key, (void*)query,strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_inet_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
double query = convert_network_to_scalar( PG_GETARG_DATUM(1) ,INETOID );
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_inet_consistent_internal ( entry, &query, &strategy )
|
||||
);
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_cidr_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
double query = convert_network_to_scalar( PG_GETARG_DATUM(1) ,CIDROID );
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_inet_consistent_internal ( entry, &query, &strategy )
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_inet_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc(sizeof(inetKEY));
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(inetKEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_inet_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
inetKEY *origentry = (inetKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
inetKEY *newentry = (inetKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
|
||||
double res ;
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
res = Max(newentry->upper - origentry->upper, 0) +
|
||||
Max(origentry->lower - newentry->lower, 0);
|
||||
|
||||
if ( res > 0 ){
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + origentry->upper - origentry->lower ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_inet_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_inet_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
inetKEY *b1 = (inetKEY *) PG_GETARG_POINTER(0);
|
||||
inetKEY *b2 = (inetKEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
|
@ -0,0 +1,162 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
|
||||
typedef struct int16key
|
||||
{
|
||||
int16 lower;
|
||||
int16 upper;
|
||||
} int16KEY;
|
||||
|
||||
/*
|
||||
** int16 ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_int2_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_int2_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_int2_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_int2_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_int2_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_int2_same);
|
||||
|
||||
Datum gbt_int2_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int2_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int2_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int2_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int2_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int2_same(PG_FUNCTION_ARGS);
|
||||
|
||||
static bool gbt_int2gt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int16*)a) > *((int16*)b) );
|
||||
}
|
||||
static bool gbt_int2ge (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int16*)a) >= *((int16*)b) );
|
||||
}
|
||||
static bool gbt_int2eq (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int16*)a) == *((int16*)b) );
|
||||
}
|
||||
static bool gbt_int2le (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int16*)a) <= *((int16*)b) );
|
||||
}
|
||||
static bool gbt_int2lt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int16*)a) < *((int16*)b) );
|
||||
}
|
||||
|
||||
static int
|
||||
gbt_int2key_cmp(const void *a, const void *b)
|
||||
{
|
||||
|
||||
if ( *(int16*)(&((Nsrt *) a)->t[0]) > *(int16*)&(((Nsrt *) b)->t[0]) ){
|
||||
return 1;
|
||||
} else
|
||||
if ( *(int16*)&(((Nsrt *) a)->t[0]) < *(int16*)&(((Nsrt *) b)->t[0]) ){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_int2,
|
||||
sizeof(int16),
|
||||
gbt_int2gt,
|
||||
gbt_int2ge,
|
||||
gbt_int2eq,
|
||||
gbt_int2le,
|
||||
gbt_int2lt,
|
||||
gbt_int2key_cmp
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**************************************************
|
||||
* int16 ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
Datum
|
||||
gbt_int2_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_num_compress( retval , entry , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_int2_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
int16 query = PG_GETARG_INT16(1);
|
||||
int16KEY *kkk = (int16KEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_int2_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc(sizeof(int16KEY));
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(int16KEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_int2_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int16KEY *origentry = (int16KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
int16KEY *newentry = (int16KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
int2 res ;
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
res = Max(newentry->upper - origentry->upper, 0) +
|
||||
Max(origentry->lower - newentry->lower, 0);
|
||||
|
||||
if ( res > 0 ){
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + origentry->upper - origentry->lower ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_int2_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_int2_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int16KEY *b1 = (int16KEY *) PG_GETARG_POINTER(0);
|
||||
int16KEY *b2 = (int16KEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
|
@ -0,0 +1,159 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
|
||||
typedef struct int32key
|
||||
{
|
||||
int32 lower;
|
||||
int32 upper;
|
||||
} int32KEY;
|
||||
|
||||
/*
|
||||
** int32 ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_int4_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_int4_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_int4_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_int4_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_int4_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_int4_same);
|
||||
|
||||
Datum gbt_int4_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int4_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int4_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int4_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int4_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int4_same(PG_FUNCTION_ARGS);
|
||||
|
||||
|
||||
static bool gbt_int4gt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int32*)a) > *((int32*)b) );
|
||||
}
|
||||
static bool gbt_int4ge (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int32*)a) >= *((int32*)b) );
|
||||
}
|
||||
static bool gbt_int4eq (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int32*)a) == *((int32*)b) );
|
||||
}
|
||||
static bool gbt_int4le (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int32*)a) <= *((int32*)b) );
|
||||
}
|
||||
static bool gbt_int4lt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int32*)a) < *((int32*)b) );
|
||||
}
|
||||
|
||||
static int
|
||||
gbt_int4key_cmp(const void *a, const void *b)
|
||||
{
|
||||
|
||||
if ( *(int32*)&(((Nsrt *) a)->t[0]) > *(int32*)&(((Nsrt *) b)->t[0]) ){
|
||||
return 1;
|
||||
} else
|
||||
if ( *(int32*)&(((Nsrt *) a)->t[0]) < *(int32*)&(((Nsrt *) b)->t[0]) ){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_int4,
|
||||
sizeof(int32),
|
||||
gbt_int4gt,
|
||||
gbt_int4ge,
|
||||
gbt_int4eq,
|
||||
gbt_int4le,
|
||||
gbt_int4lt,
|
||||
gbt_int4key_cmp
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* int32 ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
Datum
|
||||
gbt_int4_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_num_compress( retval , entry , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_int4_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
int32 query = PG_GETARG_INT32(1);
|
||||
int32KEY *kkk = (int32KEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_int4_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc( sizeof(int32KEY) );
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(int32KEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_int4_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int32KEY *origentry = (int32KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
int32KEY *newentry = (int32KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
int4 res ;
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
res = Max(newentry->upper - origentry->upper, 0) +
|
||||
Max(origentry->lower - newentry->lower, 0);
|
||||
|
||||
if ( res > 0 ){
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + origentry->upper - origentry->lower ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_int4_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_int4_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int32KEY *b1 = (int32KEY *) PG_GETARG_POINTER(0);
|
||||
int32KEY *b2 = (int32KEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
|
@ -0,0 +1,161 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
|
||||
typedef struct int64key
|
||||
{
|
||||
int64 lower;
|
||||
int64 upper;
|
||||
} int64KEY;
|
||||
|
||||
/*
|
||||
** int64 ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_int8_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_int8_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_int8_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_int8_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_int8_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_int8_same);
|
||||
|
||||
Datum gbt_int8_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int8_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int8_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int8_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int8_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_int8_same(PG_FUNCTION_ARGS);
|
||||
|
||||
|
||||
static bool gbt_int8gt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int64*)a) > *((int64*)b) );
|
||||
}
|
||||
static bool gbt_int8ge (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int64*)a) >= *((int64*)b) );
|
||||
}
|
||||
static bool gbt_int8eq (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int64*)a) == *((int64*)b) );
|
||||
}
|
||||
static bool gbt_int8le (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int64*)a) <= *((int64*)b) );
|
||||
}
|
||||
static bool gbt_int8lt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((int64*)a) < *((int64*)b) );
|
||||
}
|
||||
|
||||
static int
|
||||
gbt_int8key_cmp(const void *a, const void *b)
|
||||
{
|
||||
|
||||
if ( *(int64*)&(((Nsrt *) a)->t[0]) > *(int64*)&(((Nsrt *) b)->t[0]) ){
|
||||
return 1;
|
||||
} else
|
||||
if ( *(int64*)&(((Nsrt *) a)->t[0]) < *(int64*)&(((Nsrt *) b)->t[0]) ){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_int8,
|
||||
sizeof(int64),
|
||||
gbt_int8gt,
|
||||
gbt_int8ge,
|
||||
gbt_int8eq,
|
||||
gbt_int8le,
|
||||
gbt_int8lt,
|
||||
gbt_int8key_cmp
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* int64 ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
Datum
|
||||
gbt_int8_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_num_compress( retval , entry , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_int8_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
int64 query = PG_GETARG_INT64(1);
|
||||
int64KEY *kkk = (int64KEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_int8_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc(sizeof(int64KEY));
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(int64KEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_int8_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int64KEY *origentry = (int64KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
int64KEY *newentry = (int64KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
int64 res ;
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
res = Max(newentry->upper - origentry->upper, 0) +
|
||||
Max(origentry->lower - newentry->lower, 0);
|
||||
|
||||
if ( res > 0 ){
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + origentry->upper - origentry->lower ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_int8_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_int8_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
int64KEY *b1 = (int64KEY *) PG_GETARG_POINTER(0);
|
||||
int64KEY *b2 = (int64KEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
|
@ -0,0 +1,196 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Interval lower,
|
||||
upper;
|
||||
} intvKEY;
|
||||
|
||||
|
||||
/*
|
||||
** Interval ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_intv_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_intv_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_intv_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_intv_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_intv_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_intv_same);
|
||||
|
||||
Datum gbt_intv_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_intv_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_intv_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_intv_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_intv_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_intv_same(PG_FUNCTION_ARGS);
|
||||
|
||||
|
||||
static bool gbt_intvgt (const void *a, const void *b)
|
||||
{
|
||||
return DirectFunctionCall2 ( interval_gt , IntervalPGetDatum ( a ) , IntervalPGetDatum ( b ) );
|
||||
}
|
||||
|
||||
static bool gbt_intvge (const void *a, const void *b)
|
||||
{
|
||||
return DirectFunctionCall2 ( interval_ge , IntervalPGetDatum ( a ) , IntervalPGetDatum ( b ) );
|
||||
}
|
||||
|
||||
static bool gbt_intveq (const void *a, const void *b)
|
||||
{
|
||||
return DirectFunctionCall2 ( interval_eq , IntervalPGetDatum ( a ) , IntervalPGetDatum ( b ) );
|
||||
}
|
||||
|
||||
static bool gbt_intvle (const void *a, const void *b)
|
||||
{
|
||||
return DirectFunctionCall2 ( interval_le , IntervalPGetDatum ( a ) , IntervalPGetDatum ( b ) );
|
||||
}
|
||||
|
||||
static bool gbt_intvlt (const void *a, const void *b)
|
||||
{
|
||||
return DirectFunctionCall2 ( interval_lt , IntervalPGetDatum ( a ) , IntervalPGetDatum ( b ) );
|
||||
}
|
||||
|
||||
static int
|
||||
gbt_intvkey_cmp(const void *a, const void *b)
|
||||
{
|
||||
return DatumGetInt32 (
|
||||
DirectFunctionCall2 ( interval_cmp ,
|
||||
IntervalPGetDatum(&((Nsrt *) a)->t[0]) ,
|
||||
IntervalPGetDatum(&((Nsrt *) b)->t[0])
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_intv,
|
||||
sizeof(Interval),
|
||||
gbt_intvgt,
|
||||
gbt_intvge,
|
||||
gbt_intveq,
|
||||
gbt_intvle,
|
||||
gbt_intvlt,
|
||||
gbt_intvkey_cmp
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* interval ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
Datum
|
||||
gbt_intv_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_num_compress( retval , entry , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_intv_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
Interval *query = PG_GETARG_INTERVAL_P(1);
|
||||
intvKEY *kkk = (intvKEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)query ,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_intv_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc(sizeof(intvKEY));
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(intvKEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_intv_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
intvKEY *origentry = (intvKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
intvKEY *newentry = (intvKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
Interval *intr;
|
||||
#ifdef HAVE_INT64_TIMESTAMP
|
||||
int64 res;
|
||||
#else
|
||||
double res;
|
||||
#endif
|
||||
|
||||
intr = DatumGetIntervalP(DirectFunctionCall2(
|
||||
interval_mi,
|
||||
IntervalPGetDatum(&newentry->upper),
|
||||
IntervalPGetDatum(&origentry->upper)
|
||||
));
|
||||
|
||||
/* see interval_larger */
|
||||
|
||||
res = Max(intr->time + intr->month * (30 * 86400), 0);
|
||||
pfree(intr);
|
||||
|
||||
intr = DatumGetIntervalP(DirectFunctionCall2(
|
||||
interval_mi,
|
||||
IntervalPGetDatum(&origentry->lower),
|
||||
IntervalPGetDatum(&newentry->lower)
|
||||
));
|
||||
|
||||
/* see interval_larger */
|
||||
res += Max(intr->time + intr->month * (30 * 86400), 0);
|
||||
pfree(intr);
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
if ( res > 0 ){
|
||||
|
||||
intr = DatumGetIntervalP(DirectFunctionCall2(
|
||||
interval_mi,
|
||||
IntervalPGetDatum(&origentry->upper),
|
||||
IntervalPGetDatum(&origentry->lower)
|
||||
));
|
||||
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + intr->time + intr->month * (30 * 86400) ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
|
||||
pfree ( intr );
|
||||
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
|
||||
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_intv_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_intv_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
intvKEY *b1 = (intvKEY *) PG_GETARG_POINTER(0);
|
||||
intvKEY *b2 = (intvKEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
|
@ -0,0 +1,183 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
#include "utils/builtins.h"
|
||||
#include "utils/inet.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
macaddr lower;
|
||||
macaddr upper;
|
||||
} macKEY;
|
||||
|
||||
/*
|
||||
** OID ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_macad_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_macad_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_macad_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_macad_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_macad_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_macad_same);
|
||||
|
||||
Datum gbt_macad_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_macad_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_macad_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_macad_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_macad_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_macad_same(PG_FUNCTION_ARGS);
|
||||
|
||||
|
||||
static bool gbt_macadgt (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(DirectFunctionCall2(macaddr_gt,PointerGetDatum(a),PointerGetDatum(b)));
|
||||
}
|
||||
static bool gbt_macadge (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(DirectFunctionCall2(macaddr_ge,PointerGetDatum(a),PointerGetDatum(b)));
|
||||
}
|
||||
|
||||
static bool gbt_macadeq (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(DirectFunctionCall2(macaddr_eq,PointerGetDatum(a),PointerGetDatum(b)));
|
||||
}
|
||||
|
||||
static bool gbt_macadle (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(DirectFunctionCall2(macaddr_le,PointerGetDatum(a),PointerGetDatum(b)));
|
||||
}
|
||||
|
||||
static bool gbt_macadlt (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(DirectFunctionCall2(macaddr_lt,PointerGetDatum(a),PointerGetDatum(b)));
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
gbt_macadkey_cmp(const void *a, const void *b)
|
||||
{
|
||||
return DatumGetInt32(
|
||||
DirectFunctionCall2(
|
||||
macaddr_cmp ,
|
||||
PointerGetDatum (&((Nsrt *) a)->t[0]),
|
||||
PointerGetDatum (&((Nsrt *) b)->t[0])
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_macad,
|
||||
sizeof(macaddr),
|
||||
gbt_macadgt,
|
||||
gbt_macadge,
|
||||
gbt_macadeq,
|
||||
gbt_macadle,
|
||||
gbt_macadlt,
|
||||
gbt_macadkey_cmp
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* macaddr ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
|
||||
static int64 mac_2_int64 ( macaddr * m ){
|
||||
unsigned char * mi = ( unsigned char * ) m;
|
||||
int64 res = 0;
|
||||
int i;
|
||||
for (i=0; i<6; i++ ){
|
||||
res += mi[i] << ( (5-i)*8 );
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_macad_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_num_compress( retval , entry , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_macad_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
macaddr *query = (macaddr *) PG_GETARG_POINTER(1);
|
||||
macKEY *kkk = (macKEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)query,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_macad_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc(sizeof(macKEY));
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(macKEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_macad_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
macKEY *origentry = (macKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
macKEY *newentry = (macKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
int64 iorg[2], inew[2], res ;
|
||||
|
||||
iorg[0] = mac_2_int64 ( &origentry->lower );
|
||||
iorg[1] = mac_2_int64 ( &origentry->upper );
|
||||
inew[0] = mac_2_int64 ( &newentry->lower );
|
||||
inew[1] = mac_2_int64 ( &newentry->upper );
|
||||
|
||||
res = Max(inew[1] - iorg[1], 0) +
|
||||
Max(iorg[0] - inew[0] , 0);
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
if ( res > 0 ){
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + iorg[1] - iorg[0] ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_macad_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_macad_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
macKEY *b1 = (macKEY *) PG_GETARG_POINTER(0);
|
||||
macKEY *b2 = (macKEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
|
@ -1,266 +0,0 @@
|
|||
#include "btree_gist.h"
|
||||
|
||||
#define __DEFINE_BTREE_TYPE_HERE__ 1
|
||||
|
||||
typedef struct __BTREE_GIST_TYPE__key
|
||||
{
|
||||
__BTREE_GIST_TYPE__ lower;
|
||||
__BTREE_GIST_TYPE__ upper;
|
||||
} __BTREE_GIST_TYPE__KEY;
|
||||
|
||||
|
||||
/*
|
||||
** __BTREE_GIST_TYPE__key in/out
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(__BTREE_GIST_TYPE2__key_in);
|
||||
PG_FUNCTION_INFO_V1(__BTREE_GIST_TYPE2__key_out);
|
||||
Datum __BTREE_GIST_TYPE2__key_in(PG_FUNCTION_ARGS);
|
||||
Datum __BTREE_GIST_TYPE2__key_out(PG_FUNCTION_ARGS);
|
||||
|
||||
/*
|
||||
** __BTREE_GIST_TYPE__ ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(g__BTREE_GIST_TYPE2___compress);
|
||||
PG_FUNCTION_INFO_V1(g__BTREE_GIST_TYPE2___union);
|
||||
PG_FUNCTION_INFO_V1(g__BTREE_GIST_TYPE2___picksplit);
|
||||
PG_FUNCTION_INFO_V1(g__BTREE_GIST_TYPE2___consistent);
|
||||
PG_FUNCTION_INFO_V1(g__BTREE_GIST_TYPE2___penalty);
|
||||
PG_FUNCTION_INFO_V1(g__BTREE_GIST_TYPE2___same);
|
||||
|
||||
Datum g__BTREE_GIST_TYPE2___compress(PG_FUNCTION_ARGS);
|
||||
Datum g__BTREE_GIST_TYPE2___union(PG_FUNCTION_ARGS);
|
||||
Datum g__BTREE_GIST_TYPE2___picksplit(PG_FUNCTION_ARGS);
|
||||
Datum g__BTREE_GIST_TYPE2___consistent(PG_FUNCTION_ARGS);
|
||||
Datum g__BTREE_GIST_TYPE2___penalty(PG_FUNCTION_ARGS);
|
||||
Datum g__BTREE_GIST_TYPE2___same(PG_FUNCTION_ARGS);
|
||||
|
||||
static void g__BTREE_GIST_TYPE2___binary_union(Datum *r1, char *r2);
|
||||
static int __BTREE_GIST_TYPE2__key_cmp(const void *a, const void *b);
|
||||
|
||||
|
||||
/**************************************************
|
||||
* __BTREE_GIST_TYPE__ ops
|
||||
**************************************************/
|
||||
|
||||
Datum
|
||||
g__BTREE_GIST_TYPE2___compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval;
|
||||
|
||||
if (entry->leafkey)
|
||||
{
|
||||
__BTREE_GIST_TYPE__KEY *r = ( __BTREE_GIST_TYPE__KEY * ) palloc(sizeof(__BTREE_GIST_TYPE__KEY));
|
||||
#ifdef BTREE_GIST_INT2
|
||||
int16 leaf = DatumGetInt16(entry->key);
|
||||
#endif
|
||||
#ifdef BTREE_GIST_INT4
|
||||
int32 leaf = DatumGetInt32(entry->key);
|
||||
#endif
|
||||
#ifdef BTREE_GIST_INT8
|
||||
int64 leaf = DatumGetInt64(entry->key);
|
||||
#endif
|
||||
#ifdef BTREE_GIST_FLOAT4
|
||||
float4 leaf = DatumGetFloat4(entry->key);
|
||||
#endif
|
||||
#ifdef BTREE_GIST_FLOAT8
|
||||
float8 leaf = DatumGetFloat8(entry->key);
|
||||
#endif
|
||||
|
||||
retval = palloc(sizeof(GISTENTRY));
|
||||
r->lower = r->upper = leaf ;
|
||||
|
||||
gistentryinit(*retval, PointerGetDatum(r), entry->rel, entry->page,
|
||||
entry->offset, sizeof(__BTREE_GIST_TYPE__KEY), FALSE);
|
||||
|
||||
}
|
||||
else
|
||||
retval = entry;
|
||||
PG_RETURN_POINTER(retval);
|
||||
}
|
||||
|
||||
Datum
|
||||
g__BTREE_GIST_TYPE2___consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
#ifdef BTREE_GIST_INT2
|
||||
int16 query = PG_GETARG_INT16(1);
|
||||
#endif
|
||||
#ifdef BTREE_GIST_INT4
|
||||
int32 query = PG_GETARG_INT32(1);
|
||||
#endif
|
||||
#ifdef BTREE_GIST_INT8
|
||||
int64 query = PG_GETARG_INT64(1);
|
||||
#endif
|
||||
#ifdef BTREE_GIST_FLOAT4
|
||||
float4 query = PG_GETARG_FLOAT4(1);
|
||||
#endif
|
||||
#ifdef BTREE_GIST_FLOAT8
|
||||
float8 query = PG_GETARG_FLOAT8(1);
|
||||
#endif
|
||||
__BTREE_GIST_TYPE__KEY *kkk = (__BTREE_GIST_TYPE__KEY *) DatumGetPointer(entry->key);
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
bool retval;
|
||||
|
||||
switch (strategy)
|
||||
{
|
||||
case BTLessEqualStrategyNumber:
|
||||
retval = (query >= kkk->lower);
|
||||
break;
|
||||
case BTLessStrategyNumber:
|
||||
if (GIST_LEAF(entry))
|
||||
retval = (query > kkk->lower);
|
||||
else
|
||||
retval = (query >= kkk->lower);
|
||||
break;
|
||||
case BTEqualStrategyNumber:
|
||||
/* in leaf page kkk->lower always = kkk->upper */
|
||||
if (GIST_LEAF(entry))
|
||||
retval = (query == kkk->lower);
|
||||
else
|
||||
retval = (kkk->lower <= query && query <= kkk->upper);
|
||||
break;
|
||||
case BTGreaterStrategyNumber:
|
||||
if (GIST_LEAF(entry))
|
||||
retval = (query < kkk->upper);
|
||||
else
|
||||
retval = (query <= kkk->upper);
|
||||
break;
|
||||
case BTGreaterEqualStrategyNumber:
|
||||
retval = (query <= kkk->upper);
|
||||
break;
|
||||
default:
|
||||
retval = FALSE;
|
||||
}
|
||||
PG_RETURN_BOOL(retval);
|
||||
}
|
||||
|
||||
Datum
|
||||
g__BTREE_GIST_TYPE2___union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
int i,
|
||||
numranges;
|
||||
__BTREE_GIST_TYPE__KEY *cur,
|
||||
*out = palloc(sizeof(__BTREE_GIST_TYPE__KEY));
|
||||
|
||||
numranges = entryvec->n;
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(__BTREE_GIST_TYPE__KEY);
|
||||
|
||||
cur = (__BTREE_GIST_TYPE__KEY *) DatumGetPointer((entryvec->vector[0].key));
|
||||
out->lower = cur->lower;
|
||||
out->upper = cur->upper;
|
||||
|
||||
for (i = 1; i < numranges; i++)
|
||||
{
|
||||
cur = (__BTREE_GIST_TYPE__KEY *) DatumGetPointer((entryvec->vector[i].key));
|
||||
if (out->lower > cur->lower)
|
||||
out->lower = cur->lower;
|
||||
if (out->upper < cur->upper)
|
||||
out->upper = cur->upper;
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(out);
|
||||
}
|
||||
|
||||
Datum
|
||||
g__BTREE_GIST_TYPE2___penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
__BTREE_GIST_TYPE__KEY *origentry = (__BTREE_GIST_TYPE__KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
__BTREE_GIST_TYPE__KEY *newentry = (__BTREE_GIST_TYPE__KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = Max(newentry->upper - origentry->upper, 0) +
|
||||
Max(origentry->lower - newentry->lower, 0);
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
Datum
|
||||
g__BTREE_GIST_TYPE2___picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(btree_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
g__BTREE_GIST_TYPE2___binary_union,
|
||||
__BTREE_GIST_TYPE2__key_cmp
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
g__BTREE_GIST_TYPE2___same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
__BTREE_GIST_TYPE__KEY *b1 = (__BTREE_GIST_TYPE__KEY *) PG_GETARG_POINTER(0);
|
||||
__BTREE_GIST_TYPE__KEY *b2 = (__BTREE_GIST_TYPE__KEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = (b1->lower == b2->lower && b1->upper == b2->upper) ? TRUE : FALSE;
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
static void
|
||||
g__BTREE_GIST_TYPE2___binary_union(Datum *r1, char *r2)
|
||||
{
|
||||
__BTREE_GIST_TYPE__KEY *b1;
|
||||
__BTREE_GIST_TYPE__KEY *b2 = (__BTREE_GIST_TYPE__KEY *) r2;
|
||||
|
||||
if (!DatumGetPointer(*r1))
|
||||
{
|
||||
*r1 = PointerGetDatum(palloc(sizeof(__BTREE_GIST_TYPE__KEY)));
|
||||
b1 = (__BTREE_GIST_TYPE__KEY *) DatumGetPointer(*r1);
|
||||
b1->upper = b2->upper;
|
||||
b1->lower = b2->lower;
|
||||
}
|
||||
else
|
||||
{
|
||||
b1 = (__BTREE_GIST_TYPE__KEY *) DatumGetPointer(*r1);
|
||||
|
||||
b1->lower = (b1->lower > b2->lower) ?
|
||||
b2->lower : b1->lower;
|
||||
b1->upper = (b1->upper > b2->upper) ?
|
||||
b1->upper : b2->upper;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
__BTREE_GIST_TYPE2__key_cmp(const void *a, const void *b)
|
||||
{
|
||||
|
||||
|
||||
if (((__BTREE_GIST_TYPE__KEY *) (((RIX *) a)->r))->lower > ((__BTREE_GIST_TYPE__KEY *) (((RIX *) b)->r))->lower){
|
||||
return 1;
|
||||
} else if (((__BTREE_GIST_TYPE__KEY *) (((RIX *) a)->r))->lower < ((__BTREE_GIST_TYPE__KEY *) (((RIX *) b)->r))->lower){
|
||||
return -1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**************************************************
|
||||
* In/Out for keys
|
||||
**************************************************/
|
||||
|
||||
Datum
|
||||
__BTREE_GIST_TYPE2__key_in(PG_FUNCTION_ARGS)
|
||||
{
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("<datatype>key_in() not implemented")));
|
||||
|
||||
PG_RETURN_POINTER(NULL);
|
||||
}
|
||||
|
||||
Datum
|
||||
__BTREE_GIST_TYPE2__key_out(PG_FUNCTION_ARGS)
|
||||
{
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("<datatype>key_out() not implemented")));
|
||||
|
||||
PG_RETURN_POINTER(NULL);
|
||||
}
|
||||
|
|
@ -0,0 +1,227 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_var.h"
|
||||
#include "utils/builtins.h"
|
||||
#include "utils/numeric.h"
|
||||
|
||||
/*
|
||||
** Bytea ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_numeric_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_numeric_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_numeric_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_numeric_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_numeric_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_numeric_same);
|
||||
|
||||
Datum gbt_numeric_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_numeric_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_numeric_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_numeric_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_numeric_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_numeric_same(PG_FUNCTION_ARGS);
|
||||
|
||||
|
||||
/* define for comparison */
|
||||
|
||||
static bool gbt_numeric_gt (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( numeric_gt ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_numeric_ge (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( numeric_ge ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_numeric_eq (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( numeric_eq ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_numeric_le (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( numeric_le ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_numeric_lt (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( numeric_lt ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
|
||||
static int32 gbt_numeric_cmp ( const bytea * a , const bytea * b )
|
||||
{
|
||||
return
|
||||
( DatumGetInt32(DirectFunctionCall2(numeric_cmp,PointerGetDatum(a),PointerGetDatum(b) ) ) );
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_vinfo tinfo =
|
||||
{
|
||||
gbt_t_numeric,
|
||||
FALSE,
|
||||
FALSE,
|
||||
gbt_numeric_gt,
|
||||
gbt_numeric_ge,
|
||||
gbt_numeric_eq,
|
||||
gbt_numeric_le,
|
||||
gbt_numeric_lt,
|
||||
gbt_numeric_cmp,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* Text ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
Datum
|
||||
gbt_numeric_compress (PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
PG_RETURN_POINTER ( gbt_var_compress( entry, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_numeric_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GBT_VARKEY *ktst = (GBT_VARKEY *) DatumGetPointer ( entry->key ) ;
|
||||
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer ( PG_DETOAST_DATUM( entry->key ) );
|
||||
void *qtst = ( void * ) DatumGetPointer ( PG_GETARG_DATUM(1) );
|
||||
void *query = ( void * ) DatumGetNumeric ( PG_GETARG_DATUM(1) );
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
bool retval = FALSE;
|
||||
GBT_VARKEY_R r = gbt_var_key_readable ( key );
|
||||
|
||||
retval = gbt_var_consistent( &r, query, &strategy, GIST_LEAF(entry), &tinfo );
|
||||
|
||||
if ( ktst != key ){
|
||||
pfree ( key );
|
||||
}
|
||||
if ( qtst != query ){
|
||||
pfree ( query );
|
||||
}
|
||||
PG_RETURN_BOOL(retval);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_numeric_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
int32 * size = (int *) PG_GETARG_POINTER(1);
|
||||
PG_RETURN_POINTER( gbt_var_union ( entryvec , size , &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_numeric_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Datum d1 = PG_GETARG_DATUM(0);
|
||||
Datum d2 = PG_GETARG_DATUM(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
PG_RETURN_POINTER( gbt_var_same ( result, d1 , d2 , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_numeric_penalty (PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY * o = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY * n = (GISTENTRY *) PG_GETARG_POINTER(1);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
|
||||
Numeric us, os, ds ;
|
||||
|
||||
GBT_VARKEY *org = (GBT_VARKEY *) DatumGetPointer(o->key);
|
||||
GBT_VARKEY *newe = (GBT_VARKEY *) DatumGetPointer(n->key);
|
||||
Datum uni ;
|
||||
GBT_VARKEY_R rk , ok, uk ;
|
||||
|
||||
rk = gbt_var_key_readable ( org );
|
||||
uni = PointerGetDatum( gbt_var_key_copy( &rk, TRUE ) );
|
||||
gbt_var_bin_union ( &uni , newe, &tinfo );
|
||||
ok = gbt_var_key_readable ( org );
|
||||
uk = gbt_var_key_readable ( (GBT_VARKEY *) DatumGetPointer(uni) );
|
||||
|
||||
us = DatumGetNumeric(DirectFunctionCall2(
|
||||
numeric_sub,
|
||||
PointerGetDatum(uk.upper),
|
||||
PointerGetDatum(uk.lower)
|
||||
));
|
||||
|
||||
pfree ( DatumGetPointer(uni) );
|
||||
|
||||
os = DatumGetNumeric(DirectFunctionCall2(
|
||||
numeric_sub,
|
||||
PointerGetDatum(ok.upper),
|
||||
PointerGetDatum(ok.lower)
|
||||
));
|
||||
|
||||
ds = DatumGetNumeric(DirectFunctionCall2(
|
||||
numeric_sub,
|
||||
NumericGetDatum(us),
|
||||
NumericGetDatum(os)
|
||||
));
|
||||
|
||||
pfree ( os );
|
||||
|
||||
if ( NUMERIC_IS_NAN( us ) )
|
||||
{
|
||||
|
||||
if ( NUMERIC_IS_NAN( os ) )
|
||||
{
|
||||
*result = 0.0;
|
||||
} else {
|
||||
*result = 1.0;
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
Numeric nul = DatumGetNumeric(DirectFunctionCall1( int4_numeric , Int32GetDatum (0) ) );
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
if ( DirectFunctionCall2( numeric_gt , NumericGetDatum(ds), NumericGetDatum(nul) ) )
|
||||
{
|
||||
|
||||
*result += FLT_MIN ;
|
||||
os = DatumGetNumeric(DirectFunctionCall2(
|
||||
numeric_div,
|
||||
NumericGetDatum(ds),
|
||||
NumericGetDatum(us)
|
||||
));
|
||||
*result += ( float4 ) DatumGetFloat8( DirectFunctionCall1( numeric_float8_no_overflow , NumericGetDatum(os) ) );
|
||||
pfree ( os );
|
||||
|
||||
}
|
||||
|
||||
pfree ( nul );
|
||||
}
|
||||
|
||||
if ( *result > 0 )
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
|
||||
pfree ( us );
|
||||
pfree ( ds );
|
||||
|
||||
PG_RETURN_POINTER( result );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_numeric_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
GIST_SPLITVEC *v = (GIST_SPLITVEC *) PG_GETARG_POINTER(1);
|
||||
gbt_var_picksplit ( entryvec, v, &tinfo );
|
||||
PG_RETURN_POINTER(v);
|
||||
}
|
||||
|
|
@ -0,0 +1,160 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Oid lower;
|
||||
Oid upper;
|
||||
} oidKEY;
|
||||
|
||||
/*
|
||||
** OID ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_oid_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_oid_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_oid_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_oid_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_oid_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_oid_same);
|
||||
|
||||
Datum gbt_oid_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_oid_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_oid_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_oid_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_oid_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_oid_same(PG_FUNCTION_ARGS);
|
||||
|
||||
|
||||
static bool gbt_oidgt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((Oid*)a) > *((Oid*)b) );
|
||||
}
|
||||
static bool gbt_oidge (const void *a, const void *b)
|
||||
{
|
||||
return ( *((Oid*)a) >= *((Oid*)b) );
|
||||
}
|
||||
static bool gbt_oideq (const void *a, const void *b)
|
||||
{
|
||||
return ( *((Oid*)a) == *((Oid*)b) );
|
||||
}
|
||||
static bool gbt_oidle (const void *a, const void *b)
|
||||
{
|
||||
return ( *((Oid*)a) <= *((Oid*)b) );
|
||||
}
|
||||
static bool gbt_oidlt (const void *a, const void *b)
|
||||
{
|
||||
return ( *((Oid*)a) < *((Oid*)b) );
|
||||
}
|
||||
|
||||
static int
|
||||
gbt_oidkey_cmp(const void *a, const void *b)
|
||||
{
|
||||
|
||||
if ( *(Oid*)&(((Nsrt *) a)->t[0]) > *(Oid*)&(((Nsrt *) b)->t[0]) ){
|
||||
return 1;
|
||||
} else
|
||||
if ( *(Oid*)&(((Nsrt *) a)->t[0]) < *(Oid*)&(((Nsrt *) b)->t[0]) ){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_oid,
|
||||
sizeof(Oid),
|
||||
gbt_oidgt,
|
||||
gbt_oidge,
|
||||
gbt_oideq,
|
||||
gbt_oidle,
|
||||
gbt_oidlt,
|
||||
gbt_oidkey_cmp
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* Oid ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
Datum
|
||||
gbt_oid_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_num_compress( retval , entry , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_oid_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
Oid query = PG_GETARG_OID(1);
|
||||
oidKEY *kkk = (oidKEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_oid_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc(sizeof(oidKEY));
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(oidKEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_oid_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
oidKEY *origentry = (oidKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
oidKEY *newentry = (oidKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
|
||||
Oid res ;
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
res = Max(newentry->upper - origentry->upper, 0) +
|
||||
Max(origentry->lower - newentry->lower, 0);
|
||||
|
||||
if ( res > 0 ){
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + origentry->upper - origentry->lower ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_oid_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_oid_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
oidKEY *b1 = (oidKEY *) PG_GETARG_POINTER(0);
|
||||
oidKEY *b2 = (oidKEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
|
@ -0,0 +1,271 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_var.h"
|
||||
#include "utils/builtins.h"
|
||||
|
||||
/*
|
||||
** Text ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_text_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_bpchar_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_text_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_text_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_text_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_bpchar_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_text_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_text_same);
|
||||
|
||||
Datum gbt_text_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_bpchar_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_text_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_text_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_text_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_bpchar_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_text_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_text_same(PG_FUNCTION_ARGS);
|
||||
|
||||
|
||||
/* define for comparison */
|
||||
|
||||
static bool gbt_textgt (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( text_gt ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_textge (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( text_ge ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_texteq (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( texteq ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_textle (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( text_le ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static bool gbt_textlt (const void *a, const void *b)
|
||||
{
|
||||
return ( DatumGetBool(DirectFunctionCall2( text_lt ,PointerGetDatum( a ),PointerGetDatum( b ) ) ) );
|
||||
}
|
||||
|
||||
static int32 gbt_textcmp ( const bytea * a , const bytea * b )
|
||||
{
|
||||
return strcmp( VARDATA(a), VARDATA(b) );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Converts data of leaf using strxfrm ( locale support )
|
||||
*/
|
||||
|
||||
static bytea *
|
||||
gbt_text_xfrm ( bytea * leaf )
|
||||
{
|
||||
bytea * out = leaf;
|
||||
|
||||
int32 ilen = VARSIZE (leaf) - VARHDRSZ;
|
||||
int32 olen ;
|
||||
char sin[ilen+1];
|
||||
char * sou = NULL;
|
||||
memcpy ( (void*)&sin[0], (void*) VARDATA(leaf) ,ilen );
|
||||
sin[ilen] = '\0';
|
||||
olen = strxfrm ( NULL, &sin[0], 0 ) + 1;
|
||||
sou = palloc ( olen );
|
||||
olen = strxfrm ( sou , &sin[0] , olen );
|
||||
olen += VARHDRSZ;
|
||||
out = palloc ( olen + 1 );
|
||||
out->vl_len = olen+1;
|
||||
memcpy( (void*) VARDATA(out), sou, olen-VARHDRSZ );
|
||||
((char*)out)[olen] = '\0';
|
||||
pfree(sou);
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
static GBT_VARKEY * gbt_text_l2n ( GBT_VARKEY * leaf )
|
||||
{
|
||||
|
||||
GBT_VARKEY *out = leaf ;
|
||||
GBT_VARKEY_R r = gbt_var_key_readable ( leaf );
|
||||
bytea * o ;
|
||||
|
||||
o = gbt_text_xfrm ( r.lower );
|
||||
r.lower = r.upper = o;
|
||||
out = gbt_var_key_copy ( &r , TRUE );
|
||||
pfree(o);
|
||||
|
||||
return out;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static const gbtree_vinfo tinfo =
|
||||
{
|
||||
gbt_t_text,
|
||||
TRUE,
|
||||
TRUE,
|
||||
gbt_textgt,
|
||||
gbt_textge,
|
||||
gbt_texteq,
|
||||
gbt_textle,
|
||||
gbt_textlt,
|
||||
gbt_textcmp,
|
||||
gbt_text_l2n
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**************************************************
|
||||
* Text ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
Datum
|
||||
gbt_text_compress (PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
PG_RETURN_POINTER ( gbt_var_compress( entry, &tinfo ) );
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_bpchar_compress (PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY * retval ;
|
||||
|
||||
if (entry->leafkey)
|
||||
{
|
||||
|
||||
Datum d = DirectFunctionCall1 ( rtrim1, entry->key );
|
||||
GISTENTRY * trim = palloc(sizeof(GISTENTRY));
|
||||
|
||||
gistentryinit(*trim, d ,
|
||||
entry->rel, entry->page,
|
||||
entry->offset, VARSIZE(DatumGetPointer(d)), TRUE);
|
||||
retval = gbt_var_compress( trim , &tinfo ) ;
|
||||
|
||||
pfree ( trim );
|
||||
pfree ( DatumGetPointer(d) );
|
||||
} else
|
||||
retval = entry;
|
||||
|
||||
PG_RETURN_POINTER ( retval );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_text_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GBT_VARKEY *ktst = (GBT_VARKEY *) DatumGetPointer ( entry->key ) ;
|
||||
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer ( PG_DETOAST_DATUM( entry->key ) );
|
||||
void *qtst = ( void * ) DatumGetPointer( PG_GETARG_DATUM(1) );
|
||||
void *query = ( void * ) DatumGetTextP ( PG_GETARG_DATUM(1) );
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
bool retval = FALSE;
|
||||
GBT_VARKEY_R r = gbt_var_key_readable ( key );
|
||||
|
||||
if ( GIST_LEAF(entry) )
|
||||
{
|
||||
retval = gbt_var_consistent( &r, query, &strategy, TRUE, &tinfo );
|
||||
} else {
|
||||
bytea * q = gbt_text_xfrm ( ( bytea * ) query );
|
||||
retval = gbt_var_consistent( &r, (void*)q, &strategy, FALSE, &tinfo );
|
||||
if ( q != query )
|
||||
pfree(q);
|
||||
}
|
||||
|
||||
if ( ktst != key ){
|
||||
pfree ( key );
|
||||
}
|
||||
if ( qtst != query ){
|
||||
pfree ( query );
|
||||
}
|
||||
|
||||
PG_RETURN_BOOL(retval);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_bpchar_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GBT_VARKEY *ktst = (GBT_VARKEY *) DatumGetPointer ( entry->key ) ;
|
||||
GBT_VARKEY *key = (GBT_VARKEY *) DatumGetPointer ( PG_DETOAST_DATUM( entry->key ) );
|
||||
void *qtst = ( void * ) DatumGetPointer ( PG_GETARG_DATUM(1) );
|
||||
void *query = ( void * ) DatumGetPointer (PG_DETOAST_DATUM( PG_GETARG_DATUM(1) ) );
|
||||
void *trim = ( void * ) DatumGetPointer ( DirectFunctionCall1 ( rtrim1, PointerGetDatum ( query ) ) ) ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
bool retval = FALSE;
|
||||
GBT_VARKEY_R r = gbt_var_key_readable ( key );
|
||||
|
||||
if ( GIST_LEAF(entry) )
|
||||
{
|
||||
retval = gbt_var_consistent( &r, trim , &strategy, TRUE, &tinfo );
|
||||
} else {
|
||||
bytea * q = gbt_text_xfrm ( ( bytea * ) trim );
|
||||
retval = gbt_var_consistent( &r, (void*)q, &strategy, FALSE, &tinfo );
|
||||
if ( q != trim )
|
||||
pfree(q);
|
||||
}
|
||||
|
||||
pfree(trim);
|
||||
|
||||
if ( ktst != key ){
|
||||
pfree ( key );
|
||||
}
|
||||
if ( qtst != query ){
|
||||
pfree ( query );
|
||||
}
|
||||
PG_RETURN_BOOL(retval);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_text_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
int32 *size = (int *) PG_GETARG_POINTER(1);
|
||||
PG_RETURN_POINTER( gbt_var_union ( entryvec , size , &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_text_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
GIST_SPLITVEC *v = (GIST_SPLITVEC *) PG_GETARG_POINTER(1);
|
||||
gbt_var_picksplit ( entryvec, v, &tinfo );
|
||||
PG_RETURN_POINTER(v);
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_text_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
Datum d1 = PG_GETARG_DATUM(0);
|
||||
Datum d2 = PG_GETARG_DATUM(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
PG_RETURN_POINTER( gbt_var_same ( result, d1 , d2 , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_text_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
GISTENTRY * o = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY * n = (GISTENTRY *) PG_GETARG_POINTER(1);
|
||||
PG_RETURN_POINTER( gbt_var_penalty ( result ,o , n, &tinfo ) );
|
||||
}
|
||||
|
|
@ -0,0 +1,248 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
#include "utils/date.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
TimeADT lower;
|
||||
TimeADT upper;
|
||||
} timeKEY;
|
||||
|
||||
/*
|
||||
** time ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gbt_time_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_timetz_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_time_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_time_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_time_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_timetz_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_time_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_time_same);
|
||||
|
||||
Datum gbt_time_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_timetz_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_time_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_time_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_time_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_timetz_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_time_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_time_same(PG_FUNCTION_ARGS);
|
||||
|
||||
|
||||
static bool gbt_timegt (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(time_gt,TimeADTGetDatum( *((TimeADT*)a) ), TimeADTGetDatum( *((TimeADT*)b) ) )
|
||||
);
|
||||
}
|
||||
|
||||
static bool gbt_timege (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(time_ge,TimeADTGetDatum( *((TimeADT*)a) ), TimeADTGetDatum( *((TimeADT*)b) ) )
|
||||
);
|
||||
}
|
||||
|
||||
static bool gbt_timeeq (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(time_eq,TimeADTGetDatum( *((TimeADT*)a) ), TimeADTGetDatum( *((TimeADT*)b) ) )
|
||||
);
|
||||
}
|
||||
|
||||
static bool gbt_timele (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(time_le,TimeADTGetDatum( *((TimeADT*)a) ), TimeADTGetDatum( *((TimeADT*)b) ) )
|
||||
);
|
||||
}
|
||||
|
||||
static bool gbt_timelt (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(time_lt,TimeADTGetDatum( *((TimeADT*)a) ), TimeADTGetDatum( *((TimeADT*)b) ) )
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static int
|
||||
gbt_timekey_cmp(const void *a, const void *b)
|
||||
{
|
||||
if ( gbt_timegt( (void*)&(((Nsrt *) a)->t[0]) , (void*)&(((Nsrt *) b)->t[0]) ) ){
|
||||
return 1;
|
||||
} else
|
||||
if ( gbt_timelt( (void*)&(((Nsrt *) a)->t[0]) , (void*)&(((Nsrt *) b)->t[0]) ) ){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_time,
|
||||
sizeof(TimeADT),
|
||||
gbt_timegt,
|
||||
gbt_timege,
|
||||
gbt_timeeq,
|
||||
gbt_timele,
|
||||
gbt_timelt,
|
||||
gbt_timekey_cmp
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* time ops
|
||||
**************************************************/
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_time_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_num_compress( retval , entry , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_timetz_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval;
|
||||
|
||||
if (entry->leafkey)
|
||||
{
|
||||
timeKEY *r = (timeKEY *) palloc(sizeof(timeKEY));
|
||||
TimeTzADT *tz = DatumGetTimeTzADTP(entry->key);
|
||||
|
||||
retval = palloc(sizeof(GISTENTRY));
|
||||
|
||||
/* We are using the time + zone only to compress */
|
||||
r->lower = r->upper = ( tz->time + tz->zone ) ;
|
||||
gistentryinit(*retval, PointerGetDatum(r),
|
||||
entry->rel, entry->page,
|
||||
entry->offset, sizeof(timeKEY), FALSE);
|
||||
}
|
||||
else
|
||||
retval = entry;
|
||||
PG_RETURN_POINTER(retval);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_time_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
TimeADT query = PG_GETARG_TIMEADT( 1 );
|
||||
timeKEY *kkk = (timeKEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)&query,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_timetz_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
TimeTzADT *query = PG_GETARG_TIMETZADT_P( 1 );
|
||||
TimeADT qqq = query->time + query->zone ;
|
||||
timeKEY *kkk = (timeKEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)&qqq, &strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_time_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc(sizeof(timeKEY));
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(timeKEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_time_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
timeKEY *origentry = (timeKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
timeKEY *newentry = (timeKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
Interval *intr;
|
||||
#ifdef HAVE_INT64_TIMESTAMP
|
||||
int64 res;
|
||||
#else
|
||||
double res;
|
||||
#endif
|
||||
|
||||
intr = DatumGetIntervalP(DirectFunctionCall2(
|
||||
time_mi_time,
|
||||
TimeADTGetDatum(newentry->upper),
|
||||
TimeADTGetDatum(origentry->upper)));
|
||||
|
||||
/* see interval_larger */
|
||||
res = Max(intr->time + intr->month * (30 * 86400), 0);
|
||||
pfree(intr);
|
||||
|
||||
intr = DatumGetIntervalP(DirectFunctionCall2(
|
||||
time_mi_time,
|
||||
TimeADTGetDatum(origentry->lower),
|
||||
TimeADTGetDatum(newentry->lower)));
|
||||
|
||||
/* see interval_larger */
|
||||
res += Max(intr->time + intr->month * (30 * 86400), 0);
|
||||
pfree(intr);
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
if ( res > 0 ){
|
||||
intr = DatumGetIntervalP(DirectFunctionCall2(
|
||||
time_mi_time,
|
||||
TimeADTGetDatum(origentry->upper),
|
||||
TimeADTGetDatum(origentry->lower)));
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + intr->time + intr->month * (30 * 86400) ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
pfree ( intr );
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_time_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gbt_time_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
timeKEY *b1 = (timeKEY *) PG_GETARG_POINTER(0);
|
||||
timeKEY *b2 = (timeKEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
|
@ -1,288 +1,281 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
|
||||
|
||||
typedef struct tskey
|
||||
typedef struct
|
||||
{
|
||||
Timestamp lower;
|
||||
Timestamp upper;
|
||||
} TSKEY;
|
||||
|
||||
|
||||
/*
|
||||
** tskey in/out
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(tskey_in);
|
||||
PG_FUNCTION_INFO_V1(tskey_out);
|
||||
Datum tskey_in(PG_FUNCTION_ARGS);
|
||||
Datum tskey_out(PG_FUNCTION_ARGS);
|
||||
|
||||
Timestamp lower;
|
||||
Timestamp upper;
|
||||
} tsKEY;
|
||||
|
||||
/*
|
||||
** timestamp ops
|
||||
*/
|
||||
PG_FUNCTION_INFO_V1(gts_compress);
|
||||
PG_FUNCTION_INFO_V1(gts_union);
|
||||
PG_FUNCTION_INFO_V1(gts_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gts_consistent);
|
||||
PG_FUNCTION_INFO_V1(gts_penalty);
|
||||
PG_FUNCTION_INFO_V1(gts_same);
|
||||
PG_FUNCTION_INFO_V1(gbt_ts_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_tstz_compress);
|
||||
PG_FUNCTION_INFO_V1(gbt_ts_union);
|
||||
PG_FUNCTION_INFO_V1(gbt_ts_picksplit);
|
||||
PG_FUNCTION_INFO_V1(gbt_ts_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_tstz_consistent);
|
||||
PG_FUNCTION_INFO_V1(gbt_ts_penalty);
|
||||
PG_FUNCTION_INFO_V1(gbt_ts_same);
|
||||
|
||||
Datum gts_compress(PG_FUNCTION_ARGS);
|
||||
Datum gts_union(PG_FUNCTION_ARGS);
|
||||
Datum gts_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gts_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gts_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gts_same(PG_FUNCTION_ARGS);
|
||||
Datum gbt_ts_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_tstz_compress(PG_FUNCTION_ARGS);
|
||||
Datum gbt_ts_union(PG_FUNCTION_ARGS);
|
||||
Datum gbt_ts_picksplit(PG_FUNCTION_ARGS);
|
||||
Datum gbt_ts_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_tstz_consistent(PG_FUNCTION_ARGS);
|
||||
Datum gbt_ts_penalty(PG_FUNCTION_ARGS);
|
||||
Datum gbt_ts_same(PG_FUNCTION_ARGS);
|
||||
|
||||
static void gts_binary_union(Datum *r1, char *r2);
|
||||
static int tskey_cmp(const void *a, const void *b);
|
||||
|
||||
#define TimestampGetDatumFast(X) Float8GetDatumFast(X)
|
||||
static bool gbt_tsgt (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(timestamp_gt,PointerGetDatum( a ), PointerGetDatum( b ) )
|
||||
);
|
||||
}
|
||||
|
||||
/* define for comparison */
|
||||
#define TSGE( ts1, ts2 ) (DatumGetBool(DirectFunctionCall2( \
|
||||
timestamp_ge, \
|
||||
PointerGetDatum( ts1 ), \
|
||||
PointerGetDatum( ts2 ) \
|
||||
)))
|
||||
#define TSGT( ts1, ts2 ) (DatumGetBool(DirectFunctionCall2( \
|
||||
timestamp_gt, \
|
||||
PointerGetDatum( ts1 ), \
|
||||
PointerGetDatum( ts2 ) \
|
||||
)))
|
||||
#define TSEQ( ts1, ts2 ) (DatumGetBool(DirectFunctionCall2( \
|
||||
timestamp_eq, \
|
||||
PointerGetDatum( ts1 ), \
|
||||
PointerGetDatum( ts2 ) \
|
||||
)))
|
||||
#define TSLT( ts1, ts2 ) (DatumGetBool(DirectFunctionCall2( \
|
||||
timestamp_lt, \
|
||||
PointerGetDatum( ts1 ), \
|
||||
PointerGetDatum( ts2 ) \
|
||||
)))
|
||||
#define TSLE( ts1, ts2 ) (DatumGetBool(DirectFunctionCall2( \
|
||||
timestamp_le, \
|
||||
PointerGetDatum( ts1 ), \
|
||||
PointerGetDatum( ts2 ) \
|
||||
)))
|
||||
static bool gbt_tsge (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(timestamp_ge,PointerGetDatum( a ), PointerGetDatum( b ) )
|
||||
);
|
||||
}
|
||||
|
||||
static bool gbt_tseq (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(timestamp_eq,PointerGetDatum( a ), PointerGetDatum( b ) )
|
||||
);
|
||||
}
|
||||
|
||||
static bool gbt_tsle (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(timestamp_le,PointerGetDatum( a ), PointerGetDatum( b ) )
|
||||
);
|
||||
}
|
||||
|
||||
static bool gbt_tslt (const void *a, const void *b)
|
||||
{
|
||||
return DatumGetBool(
|
||||
DirectFunctionCall2(timestamp_lt,PointerGetDatum( a ), PointerGetDatum( b ) )
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
gbt_tskey_cmp(const void *a, const void *b)
|
||||
{
|
||||
if ( gbt_tsgt( (void*)&(((Nsrt *) a)->t[0]) , (void*)&(((Nsrt *) b)->t[0]) ) ){
|
||||
return 1;
|
||||
} else
|
||||
if ( gbt_tslt( (void*)&(((Nsrt *) a)->t[0]) , (void*)&(((Nsrt *) b)->t[0]) ) ){
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static const gbtree_ninfo tinfo =
|
||||
{
|
||||
gbt_t_ts,
|
||||
sizeof(Timestamp),
|
||||
gbt_tsgt,
|
||||
gbt_tsge,
|
||||
gbt_tseq,
|
||||
gbt_tsle,
|
||||
gbt_tslt,
|
||||
gbt_tskey_cmp
|
||||
};
|
||||
|
||||
|
||||
/**************************************************
|
||||
* timestamp ops
|
||||
**************************************************/
|
||||
|
||||
Datum
|
||||
gts_compress(PG_FUNCTION_ARGS)
|
||||
|
||||
|
||||
static Timestamp * tstz_to_ts_gmt ( Timestamp * gmt, TimestampTz * ts )
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval;
|
||||
int val, tz ;
|
||||
|
||||
if (entry->leafkey)
|
||||
{
|
||||
TSKEY *r = (TSKEY *) palloc(sizeof(TSKEY));
|
||||
*gmt = *ts;
|
||||
DecodeSpecial(0, "gmt", &val);
|
||||
|
||||
if ( ! TIMESTAMP_NOT_FINITE(*ts))
|
||||
{
|
||||
tz = val * 60;
|
||||
|
||||
retval = palloc(sizeof(GISTENTRY));
|
||||
r->lower = r->upper = *(Timestamp *) (entry->key);
|
||||
gistentryinit(*retval, PointerGetDatum(r),
|
||||
entry->rel, entry->page,
|
||||
entry->offset, sizeof(TSKEY), FALSE);
|
||||
}
|
||||
else
|
||||
retval = entry;
|
||||
PG_RETURN_POINTER(retval);
|
||||
#ifdef HAVE_INT64_TIMESTAMP
|
||||
*gmt -= (tz * INT64CONST(1000000));
|
||||
#else
|
||||
*gmt -= tz;
|
||||
*gmt = JROUND(*gmt);
|
||||
#endif
|
||||
|
||||
}
|
||||
return gmt;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Datum
|
||||
gbt_ts_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval = NULL;
|
||||
PG_RETURN_POINTER( gbt_num_compress( retval , entry , &tinfo ));
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_tstz_compress(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
GISTENTRY *retval ;
|
||||
|
||||
if (entry->leafkey)
|
||||
{
|
||||
tsKEY *r = (tsKEY *) palloc(sizeof(tsKEY));
|
||||
|
||||
TimestampTz ts = *(TimestampTz *) DatumGetPointer(entry->key);
|
||||
Timestamp gmt ;
|
||||
|
||||
tstz_to_ts_gmt ( &gmt, &ts );
|
||||
|
||||
retval = palloc(sizeof(GISTENTRY));
|
||||
r->lower = r->upper = gmt ;
|
||||
gistentryinit(*retval, PointerGetDatum(r),
|
||||
entry->rel, entry->page,
|
||||
entry->offset, sizeof(tsKEY), FALSE);
|
||||
}
|
||||
else
|
||||
retval = entry;
|
||||
|
||||
PG_RETURN_POINTER( retval );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_ts_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
Timestamp *query = (Timestamp *) PG_GETARG_POINTER(1);
|
||||
tsKEY *kkk = (tsKEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)query,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
Datum
|
||||
gts_consistent(PG_FUNCTION_ARGS)
|
||||
gbt_tstz_consistent(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
Timestamp *query = (Timestamp *) PG_GETARG_POINTER(1);
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
bool retval;
|
||||
TSKEY *key;
|
||||
GISTENTRY *entry = (GISTENTRY *) PG_GETARG_POINTER(0);
|
||||
TimestampTz *query = (Timestamp *) PG_GETARG_POINTER(1);
|
||||
tsKEY *kkk = (tsKEY *) DatumGetPointer(entry->key);
|
||||
GBT_NUMKEY_R key ;
|
||||
StrategyNumber strategy = (StrategyNumber) PG_GETARG_UINT16(2);
|
||||
Timestamp qqq ;
|
||||
key.lower = (GBT_NUMKEY*) &kkk->lower ;
|
||||
key.upper = (GBT_NUMKEY*) &kkk->upper ;
|
||||
tstz_to_ts_gmt ( &qqq, query );
|
||||
|
||||
/*
|
||||
* * if entry is not leaf, use gbox_internal_consistent, * else use
|
||||
* gbox_leaf_consistent
|
||||
*/
|
||||
if (!entry->key)
|
||||
return FALSE;
|
||||
key = (TSKEY *) DatumGetPointer(entry->key);
|
||||
PG_RETURN_BOOL(
|
||||
gbt_num_consistent( &key, (void*)&qqq,&strategy,GIST_LEAF(entry),&tinfo)
|
||||
);
|
||||
}
|
||||
|
||||
switch (strategy)
|
||||
{
|
||||
case BTLessEqualStrategyNumber:
|
||||
retval = TSGE(query, &(key->lower));
|
||||
break;
|
||||
case BTLessStrategyNumber:
|
||||
if (GIST_LEAF(entry))
|
||||
retval = TSGT(query, &(key->lower));
|
||||
else
|
||||
retval = TSGE(query, &(key->lower));
|
||||
break;
|
||||
case BTEqualStrategyNumber:
|
||||
/* in leaf page key->lower always = key->upper */
|
||||
if (GIST_LEAF(entry))
|
||||
retval = TSEQ(query, &(key->lower));
|
||||
else
|
||||
retval = (TSLE(&(key->lower), query) && TSLE(query, &(key->upper)));
|
||||
break;
|
||||
case BTGreaterStrategyNumber:
|
||||
if (GIST_LEAF(entry))
|
||||
retval = TSLT(query, &(key->upper));
|
||||
else
|
||||
retval = TSLE(query, &(key->upper));
|
||||
break;
|
||||
case BTGreaterEqualStrategyNumber:
|
||||
retval = TSLE(query, &(key->upper));
|
||||
break;
|
||||
default:
|
||||
retval = FALSE;
|
||||
}
|
||||
PG_RETURN_BOOL(retval);
|
||||
|
||||
Datum
|
||||
gbt_ts_union(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
void *out = palloc(sizeof(tsKEY));
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(tsKEY);
|
||||
PG_RETURN_POINTER( gbt_num_union ( (void*)out, entryvec, &tinfo ) );
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_ts_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
|
||||
tsKEY *origentry = (tsKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
tsKEY *newentry = (tsKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
Interval *intr;
|
||||
#ifdef HAVE_INT64_TIMESTAMP
|
||||
int64 res;
|
||||
#else
|
||||
double res;
|
||||
#endif
|
||||
|
||||
intr = DatumGetIntervalP(DirectFunctionCall2(
|
||||
timestamp_mi,
|
||||
TimestampGetDatum(newentry->upper),
|
||||
TimestampGetDatum(origentry->upper)
|
||||
));
|
||||
|
||||
/* see interval_larger */
|
||||
|
||||
res = Max(intr->time + intr->month * (30 * 86400), 0);
|
||||
pfree(intr);
|
||||
|
||||
intr = DatumGetIntervalP(DirectFunctionCall2(
|
||||
timestamp_mi,
|
||||
TimestampGetDatum(origentry->lower),
|
||||
TimestampGetDatum(newentry->lower)
|
||||
));
|
||||
|
||||
/* see interval_larger */
|
||||
res += Max(intr->time + intr->month * (30 * 86400), 0);
|
||||
pfree(intr);
|
||||
|
||||
*result = 0.0;
|
||||
|
||||
if ( res > 0 ){
|
||||
intr = DatumGetIntervalP(DirectFunctionCall2(
|
||||
timestamp_mi,
|
||||
TimestampGetDatum(origentry->upper),
|
||||
TimestampGetDatum(origentry->lower)
|
||||
));
|
||||
*result += FLT_MIN ;
|
||||
*result += (float) ( res / ( (double) ( res + intr->time + intr->month * (30 * 86400) ) ) );
|
||||
*result *= ( FLT_MAX / ( ( (GISTENTRY *) PG_GETARG_POINTER(0))->rel->rd_att->natts + 1 ) );
|
||||
pfree(intr);
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
|
||||
}
|
||||
|
||||
|
||||
Datum
|
||||
gbt_ts_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(gbt_num_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
&tinfo
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gts_union(PG_FUNCTION_ARGS)
|
||||
gbt_ts_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
GistEntryVector *entryvec = (GistEntryVector *) PG_GETARG_POINTER(0);
|
||||
int i,
|
||||
numranges;
|
||||
TSKEY *cur,
|
||||
*out = palloc(sizeof(TSKEY));
|
||||
tsKEY *b1 = (tsKEY *) PG_GETARG_POINTER(0);
|
||||
tsKEY *b2 = (tsKEY *) PG_GETARG_POINTER(1);
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
numranges = entryvec->n;
|
||||
*(int *) PG_GETARG_POINTER(1) = sizeof(TSKEY);
|
||||
|
||||
cur = (TSKEY *) DatumGetPointer((entryvec->vector[0].key));
|
||||
out->lower = cur->lower;
|
||||
out->upper = cur->upper;
|
||||
|
||||
for (i = 1; i < numranges; i++)
|
||||
{
|
||||
cur = (TSKEY *) DatumGetPointer((entryvec->vector[i].key));
|
||||
if (TSGT(&out->lower, &cur->lower))
|
||||
out->lower = cur->lower;
|
||||
if (TSLT(&out->upper, &cur->upper))
|
||||
out->upper = cur->upper;
|
||||
}
|
||||
|
||||
PG_RETURN_POINTER(out);
|
||||
*result = gbt_num_same ( (void*)b1, (void*)b2, &tinfo );
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
Datum
|
||||
gts_penalty(PG_FUNCTION_ARGS)
|
||||
{
|
||||
TSKEY *origentry = (TSKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(0))->key);
|
||||
TSKEY *newentry = (TSKEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
|
||||
float *result = (float *) PG_GETARG_POINTER(2);
|
||||
Interval *intr;
|
||||
|
||||
intr = DatumGetIntervalP(DirectFunctionCall2(
|
||||
timestamp_mi,
|
||||
TimestampGetDatumFast(newentry->upper),
|
||||
TimestampGetDatumFast(origentry->upper)));
|
||||
|
||||
/* see interval_larger */
|
||||
*result = Max(intr->time + intr->month * (30.0 * 86400), 0);
|
||||
pfree(intr);
|
||||
|
||||
intr = DatumGetIntervalP(DirectFunctionCall2(
|
||||
timestamp_mi,
|
||||
TimestampGetDatumFast(origentry->lower),
|
||||
TimestampGetDatumFast(newentry->lower)));
|
||||
|
||||
/* see interval_larger */
|
||||
*result += Max(intr->time + intr->month * (30.0 * 86400), 0);
|
||||
pfree(intr);
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
Datum
|
||||
gts_picksplit(PG_FUNCTION_ARGS)
|
||||
{
|
||||
PG_RETURN_POINTER(btree_picksplit(
|
||||
(GistEntryVector *) PG_GETARG_POINTER(0),
|
||||
(GIST_SPLITVEC *) PG_GETARG_POINTER(1),
|
||||
gts_binary_union,
|
||||
tskey_cmp
|
||||
));
|
||||
}
|
||||
|
||||
Datum
|
||||
gts_same(PG_FUNCTION_ARGS)
|
||||
{
|
||||
TSKEY *b1 = (TSKEY *) PG_GETARG_POINTER(0);
|
||||
TSKEY *b2 = (TSKEY *) PG_GETARG_POINTER(1);
|
||||
|
||||
bool *result = (bool *) PG_GETARG_POINTER(2);
|
||||
|
||||
if (b1 && b2)
|
||||
*result = (TSEQ(&(b1->lower), &(b2->lower)) && TSEQ(&(b1->upper), &(b2->upper))) ? TRUE : FALSE;
|
||||
else
|
||||
*result = (b1 == NULL && b2 == NULL) ? TRUE : FALSE;
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
static void
|
||||
gts_binary_union(Datum *r1, char *r2)
|
||||
{
|
||||
TSKEY *b1;
|
||||
TSKEY *b2 = (TSKEY *) r2;
|
||||
|
||||
if (!DatumGetPointer(*r1))
|
||||
{
|
||||
*r1 = PointerGetDatum(palloc(sizeof(TSKEY)));
|
||||
b1 = (TSKEY *) DatumGetPointer(*r1);
|
||||
b1->upper = b2->upper;
|
||||
b1->lower = b2->lower;
|
||||
}
|
||||
else
|
||||
{
|
||||
b1 = (TSKEY *) DatumGetPointer(*r1);
|
||||
|
||||
b1->lower = (TSGT(&b1->lower, &b2->lower)) ?
|
||||
b2->lower : b1->lower;
|
||||
b1->upper = (TSGT(&b1->upper, &b2->upper)) ?
|
||||
b1->upper : b2->upper;
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
tskey_cmp(const void *a, const void *b)
|
||||
{
|
||||
return DatumGetInt32(
|
||||
DirectFunctionCall2(
|
||||
timestamp_cmp,
|
||||
TimestampGetDatumFast(((TSKEY *) (((RIX *) a)->r))->lower),
|
||||
TimestampGetDatumFast(((TSKEY *) (((RIX *) b)->r))->lower)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**************************************************
|
||||
* In/Out for keys, not really needed
|
||||
**************************************************/
|
||||
|
||||
Datum
|
||||
tskey_in(PG_FUNCTION_ARGS)
|
||||
{
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("feature not implemented")));
|
||||
|
||||
PG_RETURN_POINTER(NULL);
|
||||
}
|
||||
|
||||
Datum
|
||||
tskey_out(PG_FUNCTION_ARGS)
|
||||
{
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
|
||||
errmsg("feature not implemented")));
|
||||
|
||||
PG_RETURN_POINTER(NULL);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,255 @@
|
|||
#include "btree_gist.h"
|
||||
#include "btree_utils_num.h"
|
||||
#include "utils/date.h"
|
||||
|
||||
extern GISTENTRY *
|
||||
gbt_num_compress( GISTENTRY *retval , GISTENTRY *entry , const gbtree_ninfo * tinfo )
|
||||
{
|
||||
|
||||
if (entry->leafkey)
|
||||
{
|
||||
|
||||
union {
|
||||
int16 i2;
|
||||
int32 i4;
|
||||
TimeADT ts;
|
||||
DateADT dt;
|
||||
} v ;
|
||||
|
||||
GBT_NUMKEY *r = ( GBT_NUMKEY * ) palloc(2 * tinfo->size);
|
||||
void *leaf = NULL;
|
||||
|
||||
switch ( tinfo->t )
|
||||
{
|
||||
case gbt_t_int2 :
|
||||
v.i2 = DatumGetInt16(entry->key);
|
||||
leaf = &v.i2;
|
||||
break;
|
||||
case gbt_t_int4 :
|
||||
v.i4 = DatumGetInt32(entry->key);
|
||||
leaf = &v.i4;
|
||||
break;
|
||||
case gbt_t_oid :
|
||||
v.i4 = DatumGetObjectId(entry->key);
|
||||
leaf = &v.i4;
|
||||
break;
|
||||
case gbt_t_time :
|
||||
v.ts = DatumGetTimeADT(entry->key);
|
||||
leaf = &v.ts;
|
||||
break;
|
||||
case gbt_t_date :
|
||||
v.dt = DatumGetDateADT(entry->key);
|
||||
leaf = &v.dt;
|
||||
break;
|
||||
default :
|
||||
leaf = DatumGetPointer(entry->key);
|
||||
}
|
||||
|
||||
memcpy ( (void*) &r[0] , leaf, tinfo->size );
|
||||
memcpy ( (void*) &r[tinfo->size] , leaf, tinfo->size );
|
||||
|
||||
retval = palloc(sizeof(GISTENTRY));
|
||||
gistentryinit(*retval, PointerGetDatum(r), entry->rel, entry->page,
|
||||
entry->offset,( 2 * tinfo->size), FALSE);
|
||||
} else
|
||||
retval = entry;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
** The GiST union method for numerical values
|
||||
*/
|
||||
|
||||
extern void *
|
||||
gbt_num_union( GBT_NUMKEY * out, const GistEntryVector * entryvec, const gbtree_ninfo * tinfo )
|
||||
{
|
||||
int i,
|
||||
numranges;
|
||||
GBT_NUMKEY * cur ;
|
||||
GBT_NUMKEY_R o, c;
|
||||
|
||||
numranges = entryvec->n;
|
||||
cur = (GBT_NUMKEY *) DatumGetPointer((entryvec->vector[0].key));
|
||||
|
||||
|
||||
o.lower = &((GBT_NUMKEY *)out)[0];
|
||||
o.upper = &((GBT_NUMKEY *)out)[tinfo->size];
|
||||
|
||||
memcpy( (void*)out, (void*) cur, 2*tinfo->size );
|
||||
|
||||
for (i = 1; i < numranges; i++)
|
||||
{
|
||||
cur = (GBT_NUMKEY *) DatumGetPointer((entryvec->vector[i].key));
|
||||
c.lower = &cur[0];
|
||||
c.upper = &cur[tinfo->size];
|
||||
|
||||
if ( (*tinfo->f_gt)(o.lower, c.lower) ) /* out->lower > cur->lower */
|
||||
memcpy( (void* ) o.lower, (void*) c.lower, tinfo->size );
|
||||
if ( (*tinfo->f_lt)(o.upper, c.upper) ) /* out->upper < cur->upper */
|
||||
memcpy( (void*) o.upper, (void*) c.upper, tinfo->size );
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
** The GiST same method for numerical values
|
||||
*/
|
||||
|
||||
extern bool gbt_num_same ( const GBT_NUMKEY * a, const GBT_NUMKEY * b, const gbtree_ninfo * tinfo )
|
||||
{
|
||||
|
||||
GBT_NUMKEY_R b1, b2 ;
|
||||
|
||||
b1.lower = &(((GBT_NUMKEY *)a)[0]);
|
||||
b1.upper = &(((GBT_NUMKEY *)a)[tinfo->size]);
|
||||
b2.lower = &(((GBT_NUMKEY *)b)[0]);
|
||||
b2.upper = &(((GBT_NUMKEY *)b)[tinfo->size]);
|
||||
|
||||
if (
|
||||
(*tinfo->f_eq)( b1.lower, b2.lower) &&
|
||||
(*tinfo->f_eq)( b1.upper, b2.upper)
|
||||
)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
|
||||
|
||||
extern void
|
||||
gbt_num_bin_union(Datum * u , GBT_NUMKEY * e , const gbtree_ninfo * tinfo )
|
||||
{
|
||||
|
||||
GBT_NUMKEY_R rd;
|
||||
rd.lower = &e[0];
|
||||
rd.upper = &e[tinfo->size];
|
||||
|
||||
if (!DatumGetPointer(*u))
|
||||
{
|
||||
*u = PointerGetDatum(palloc(2 * tinfo->size));
|
||||
memcpy( (void* ) &( ( (GBT_NUMKEY *) DatumGetPointer(*u) )[0] ) , (void*)rd.lower , tinfo->size );
|
||||
memcpy( (void* ) &( ( (GBT_NUMKEY *) DatumGetPointer(*u) )[tinfo->size]) , (void*)rd.upper , tinfo->size );
|
||||
}
|
||||
else
|
||||
{
|
||||
GBT_NUMKEY_R ur ;
|
||||
ur.lower = &( ( (GBT_NUMKEY *) DatumGetPointer(*u) )[0] ) ;
|
||||
ur.upper = &( ( (GBT_NUMKEY *) DatumGetPointer(*u) )[tinfo->size]) ;
|
||||
if ( (*tinfo->f_gt)((void*)ur.lower, (void*)rd.lower) )
|
||||
memcpy( (void*) ur.lower, (void*) rd.lower, tinfo->size );
|
||||
if ( (*tinfo->f_lt)((void*)ur.upper, (void*)rd.upper) )
|
||||
memcpy( (void*) ur.upper, (void*) rd.upper, tinfo->size );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
** The GiST consistent method
|
||||
*/
|
||||
|
||||
extern bool
|
||||
gbt_num_consistent(
|
||||
const GBT_NUMKEY_R * key,
|
||||
const void * query,
|
||||
const StrategyNumber * strategy,
|
||||
bool is_leaf,
|
||||
const gbtree_ninfo * tinfo
|
||||
)
|
||||
{
|
||||
|
||||
bool retval = FALSE;
|
||||
|
||||
switch (*strategy)
|
||||
{
|
||||
case BTLessEqualStrategyNumber:
|
||||
retval = (*tinfo->f_ge)(query, key->lower);
|
||||
break;
|
||||
case BTLessStrategyNumber:
|
||||
if ( is_leaf )
|
||||
retval = (*tinfo->f_gt)(query, key->lower);
|
||||
else
|
||||
retval = (*tinfo->f_ge)(query, key->lower);
|
||||
break;
|
||||
case BTEqualStrategyNumber:
|
||||
if ( is_leaf )
|
||||
retval = (*tinfo->f_eq)(query, key->lower);
|
||||
else
|
||||
retval = (*tinfo->f_le)(key->lower, query) && (*tinfo->f_le)(query, key->upper );
|
||||
break;
|
||||
case BTGreaterStrategyNumber:
|
||||
if ( is_leaf )
|
||||
retval = (*tinfo->f_lt)(query, key->upper);
|
||||
else
|
||||
retval = (*tinfo->f_le)(query, key->upper);
|
||||
break;
|
||||
case BTGreaterEqualStrategyNumber:
|
||||
retval = (*tinfo->f_le)(query, key->upper);
|
||||
break;
|
||||
default:
|
||||
retval = FALSE;
|
||||
}
|
||||
|
||||
return (retval);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
GIST_SPLITVEC *
|
||||
gbt_num_picksplit( const GistEntryVector *entryvec, GIST_SPLITVEC *v, const gbtree_ninfo * tinfo )
|
||||
{
|
||||
|
||||
OffsetNumber i ,
|
||||
|
||||
maxoff = entryvec->n - 1;
|
||||
|
||||
Nsrt arr[maxoff+1] ;
|
||||
int nbytes ;
|
||||
|
||||
nbytes = (maxoff + 2) * sizeof(OffsetNumber);
|
||||
v->spl_left = (OffsetNumber *) palloc(nbytes);
|
||||
v->spl_right = (OffsetNumber *) palloc(nbytes);
|
||||
v->spl_ldatum = PointerGetDatum(0);
|
||||
v->spl_rdatum = PointerGetDatum(0);
|
||||
v->spl_nleft = 0;
|
||||
v->spl_nright = 0;
|
||||
|
||||
/* Sort entries */
|
||||
|
||||
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
|
||||
{
|
||||
arr[i].t = (GBT_NUMKEY *) DatumGetPointer((entryvec->vector[i].key));
|
||||
arr[i].i = i;
|
||||
}
|
||||
qsort ( (void*) &arr[FirstOffsetNumber], maxoff-FirstOffsetNumber+1,sizeof(Nsrt), tinfo->f_cmp );
|
||||
|
||||
/* We do simply create two parts */
|
||||
|
||||
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
|
||||
{
|
||||
if (i <= (maxoff - FirstOffsetNumber + 1) / 2)
|
||||
{
|
||||
gbt_num_bin_union(&v->spl_ldatum, arr[i].t, tinfo);
|
||||
v->spl_left[v->spl_nleft] = arr[i].i;
|
||||
v->spl_nleft++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gbt_num_bin_union(&v->spl_rdatum, arr[i].t, tinfo);
|
||||
v->spl_right[v->spl_nright] = arr[i].i;
|
||||
v->spl_nright++;
|
||||
}
|
||||
}
|
||||
|
||||
return v;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
|
||||
typedef char GBT_NUMKEY;
|
||||
|
||||
/* Better readable key */
|
||||
typedef struct
|
||||
{
|
||||
const GBT_NUMKEY * lower, * upper;
|
||||
} GBT_NUMKEY_R;
|
||||
|
||||
|
||||
/* for sorting */
|
||||
typedef struct
|
||||
{
|
||||
int i;
|
||||
GBT_NUMKEY * t;
|
||||
} Nsrt;
|
||||
|
||||
|
||||
/* type description */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
/* Attribs */
|
||||
|
||||
enum gbtree_type t ; /* data type */
|
||||
int32 size ; /* size of type , 0 means variable */
|
||||
|
||||
/* Methods */
|
||||
|
||||
bool (*f_gt) ( const void * , const void * ); /* greater then */
|
||||
bool (*f_ge) ( const void * , const void * ); /* greater equal */
|
||||
bool (*f_eq) ( const void * , const void * ); /* equal */
|
||||
bool (*f_le) ( const void * , const void * ); /* less equal */
|
||||
bool (*f_lt) ( const void * , const void * ); /* less then */
|
||||
int (*f_cmp) ( const void * , const void * ); /* key compare function */
|
||||
} gbtree_ninfo;
|
||||
|
||||
|
||||
/*
|
||||
* Numeric btree functions
|
||||
*/
|
||||
|
||||
extern bool gbt_num_consistent( const GBT_NUMKEY_R * key , const void * query,
|
||||
const StrategyNumber * strategy , bool is_leaf,
|
||||
const gbtree_ninfo * tinfo );
|
||||
|
||||
extern GIST_SPLITVEC *gbt_num_picksplit ( const GistEntryVector *entryvec, GIST_SPLITVEC *v,
|
||||
const gbtree_ninfo * tinfo );
|
||||
|
||||
extern GISTENTRY *gbt_num_compress( GISTENTRY *retval , GISTENTRY *entry ,
|
||||
const gbtree_ninfo * tinfo );
|
||||
|
||||
|
||||
extern void *gbt_num_union ( GBT_NUMKEY * out, const GistEntryVector * entryvec,
|
||||
const gbtree_ninfo * tinfo );
|
||||
|
||||
extern bool gbt_num_same ( const GBT_NUMKEY * a, const GBT_NUMKEY * b,
|
||||
const gbtree_ninfo * tinfo );
|
||||
|
||||
extern void gbt_num_bin_union(Datum * u , GBT_NUMKEY * e ,
|
||||
const gbtree_ninfo * tinfo );
|
|
@ -0,0 +1,617 @@
|
|||
#include "btree_gist.h"
|
||||
#include "utils/pg_locale.h"
|
||||
#include "btree_utils_var.h"
|
||||
|
||||
/* Returns a better readable representaion of variable key ( sets pointer ) */
|
||||
|
||||
extern GBT_VARKEY_R gbt_var_key_readable ( const GBT_VARKEY * k ){
|
||||
|
||||
GBT_VARKEY_R r ;
|
||||
r.lower = ( bytea * ) &(((char*)k)[VARHDRSZ] ) ;
|
||||
if ( VARSIZE(k) > ( VARHDRSZ+(VARSIZE(r.lower)) ) )
|
||||
r.upper = ( bytea * ) &(((char*)k)[VARHDRSZ+(VARSIZE(r.lower))] ) ;
|
||||
else
|
||||
r.upper = r.lower;
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
extern GBT_VARKEY * gbt_var_key_copy ( const GBT_VARKEY_R * u , bool force_node ){
|
||||
|
||||
GBT_VARKEY * r = NULL;
|
||||
|
||||
if ( u->lower == u->upper && !force_node ){ /* leaf key mode */
|
||||
|
||||
r = (GBT_VARKEY *) palloc(VARSIZE(u->lower) + VARHDRSZ );
|
||||
memcpy ( (void*) VARDATA(r), (void*) u->lower , VARSIZE(u->lower) );
|
||||
r->vl_len = VARSIZE(u->lower) + VARHDRSZ ;
|
||||
|
||||
} else { /* node key mode */
|
||||
|
||||
r = (GBT_VARKEY *) palloc(VARSIZE(u->lower) + VARSIZE(u->upper) + VARHDRSZ );
|
||||
memcpy ( (void*) VARDATA(r) , (void*) u->lower , VARSIZE(u->lower) );
|
||||
memcpy ( (void*)&(((char *)r)[VARHDRSZ+VARSIZE(u->lower)]), (void*) u->upper , VARSIZE(u->upper) );
|
||||
r->vl_len = VARSIZE(u->lower) + VARSIZE(u->upper) + VARHDRSZ ;
|
||||
|
||||
}
|
||||
return r;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static GBT_VARKEY * gbt_var_leaf2node ( GBT_VARKEY * leaf, const gbtree_vinfo * tinfo )
|
||||
{
|
||||
|
||||
GBT_VARKEY *out = leaf ;
|
||||
|
||||
if ( tinfo->f_l2n )
|
||||
{
|
||||
out = (*tinfo->f_l2n) (leaf);
|
||||
}
|
||||
|
||||
return out;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* returns the common prefix length of a node key
|
||||
*/
|
||||
static int32 gbt_var_node_cp_len ( const GBT_VARKEY * node , const gbtree_vinfo * tinfo )
|
||||
{
|
||||
int32 i ;
|
||||
int32 s = (tinfo->str)?(1):(0);
|
||||
GBT_VARKEY_R r = gbt_var_key_readable ( node );
|
||||
int32 t1len = VARSIZE(r.lower) - VARHDRSZ - s;
|
||||
int32 t2len = VARSIZE(r.upper) - VARHDRSZ - s;
|
||||
int32 ml = Min(t1len,t2len) ;
|
||||
|
||||
char * p1 = VARDATA(r.lower) ,
|
||||
* p2 = VARDATA(r.upper) ;
|
||||
|
||||
for ( i=0 ; i<ml; i++ )
|
||||
{
|
||||
if ( *p1 != *p2 )
|
||||
{
|
||||
return i;
|
||||
}
|
||||
p1++;
|
||||
p2++;
|
||||
}
|
||||
return ( ml );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* returns true, if query matches prefix using common prefix
|
||||
*/
|
||||
|
||||
static bool gbt_bytea_pf_match ( const bytea * pf , const bytea * query , const gbtree_vinfo * tinfo )
|
||||
{
|
||||
|
||||
int k ;
|
||||
int32 s = (tinfo->str)?(1):(0);
|
||||
bool out = FALSE ;
|
||||
int32 qlen = VARSIZE(query) - VARHDRSZ - s ;
|
||||
int32 nlen = VARSIZE(pf) - VARHDRSZ - s ;
|
||||
if ( nlen <= qlen )
|
||||
{
|
||||
char *q = VARDATA(query) ;
|
||||
char *n = VARDATA(pf) ;
|
||||
out = TRUE;
|
||||
for ( k=0 ; k<nlen; k++ )
|
||||
{
|
||||
if ( *n != *q ){
|
||||
out = FALSE;
|
||||
break;
|
||||
}
|
||||
if ( k < (nlen-1) )
|
||||
{
|
||||
q++;
|
||||
n++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* returns true, if query matches node using common prefix
|
||||
*/
|
||||
|
||||
static bool gbt_var_node_pf_match ( const GBT_VARKEY_R * node , const bytea * query , const gbtree_vinfo * tinfo )
|
||||
{
|
||||
|
||||
return (
|
||||
gbt_bytea_pf_match ( node->lower, query , tinfo ) ||
|
||||
gbt_bytea_pf_match ( node->upper, query , tinfo )
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* truncates / compresses the node key
|
||||
*/
|
||||
static GBT_VARKEY * gbt_var_node_truncate ( const GBT_VARKEY * node , int32 length , const gbtree_vinfo * tinfo )
|
||||
{
|
||||
|
||||
int32 s = (tinfo->str)?(1):(0);
|
||||
GBT_VARKEY * out = NULL;
|
||||
GBT_VARKEY_R r = gbt_var_key_readable ( node );
|
||||
int32 len1 = VARSIZE(r.lower) - VARHDRSZ;
|
||||
int32 len2 = VARSIZE(r.upper) - VARHDRSZ;
|
||||
int32 si = 0;
|
||||
|
||||
if (tinfo->str)
|
||||
length++; /* because of tailing '\0' */
|
||||
|
||||
len1 = Min( len1, length ) ;
|
||||
len2 = Min( len2, length ) ;
|
||||
si = 3*VARHDRSZ + len1 + len2;
|
||||
out = (GBT_VARKEY *) palloc ( si );
|
||||
out->vl_len = si;
|
||||
memcpy ( (void*) &(((char*)out)[VARHDRSZ]) , (void*)r.lower, len1+VARHDRSZ-s );
|
||||
memcpy ( (void*) &(((char*)out)[2*VARHDRSZ+len1]) , (void*)r.upper, len2+VARHDRSZ-s );
|
||||
|
||||
if (tinfo->str)
|
||||
{
|
||||
((char*)out)[2*VARHDRSZ+len1-1] = '\0';
|
||||
((char*)out)[3*VARHDRSZ+len1+len2-1] = '\0';
|
||||
}
|
||||
*((int32*)&(((char*)out)[VARHDRSZ])) = len1 + VARHDRSZ;
|
||||
*((int32*)&(((char*)out)[2*VARHDRSZ+len1])) = len2 + VARHDRSZ;
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern void
|
||||
gbt_var_bin_union ( Datum * u , GBT_VARKEY * e , const gbtree_vinfo * tinfo )
|
||||
{
|
||||
|
||||
GBT_VARKEY * nk = NULL;
|
||||
GBT_VARKEY * tmp = NULL;
|
||||
GBT_VARKEY_R nr ;
|
||||
GBT_VARKEY_R eo = gbt_var_key_readable ( e );
|
||||
|
||||
|
||||
if ( eo.lower == eo.upper ) /* leaf */
|
||||
{
|
||||
tmp = gbt_var_leaf2node ( e , tinfo );
|
||||
if ( tmp != e )
|
||||
eo = gbt_var_key_readable ( tmp );
|
||||
}
|
||||
|
||||
if ( DatumGetPointer(*u))
|
||||
{
|
||||
|
||||
GBT_VARKEY_R ro = gbt_var_key_readable ( ( GBT_VARKEY *) DatumGetPointer (*u) );
|
||||
|
||||
if ( (*tinfo->f_cmp) ( (bytea*)ro.lower, (bytea*)eo.lower ) > 0 ) {
|
||||
nr.lower = eo.lower;
|
||||
nr.upper = ro.upper;
|
||||
nk = gbt_var_key_copy ( &nr, TRUE );
|
||||
}
|
||||
if ( (*tinfo->f_cmp) ( (bytea*)ro.upper, (bytea*)eo.upper ) < 0 ) {
|
||||
nr.upper = eo.upper;
|
||||
nr.lower = ro.lower;
|
||||
nk = gbt_var_key_copy ( &nr, TRUE );
|
||||
}
|
||||
if ( nk )
|
||||
{
|
||||
pfree( DatumGetPointer (*u) );
|
||||
*u = PointerGetDatum(nk);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
nr.lower = eo.lower;
|
||||
nr.upper = eo.upper;
|
||||
*u = PointerGetDatum( gbt_var_key_copy ( &nr, TRUE ) );
|
||||
}
|
||||
|
||||
if ( tmp && tmp != e )
|
||||
pfree ( tmp );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern GISTENTRY *
|
||||
gbt_var_compress ( GISTENTRY *entry , const gbtree_vinfo * tinfo )
|
||||
{
|
||||
|
||||
GISTENTRY * retval;
|
||||
|
||||
if (entry->leafkey)
|
||||
{
|
||||
GBT_VARKEY * r = NULL;
|
||||
bytea * tstd = ( bytea * ) DatumGetPointer ( entry->key ); /* toasted */
|
||||
bytea * leaf = ( bytea * ) DatumGetPointer ( PG_DETOAST_DATUM ( entry->key ) ); /* untoasted */
|
||||
GBT_VARKEY_R u ;
|
||||
|
||||
u.lower = u.upper = leaf;
|
||||
r = gbt_var_key_copy ( &u , FALSE );
|
||||
|
||||
if ( tstd != leaf ){
|
||||
pfree(leaf);
|
||||
}
|
||||
retval = palloc(sizeof(GISTENTRY));
|
||||
gistentryinit(*retval, PointerGetDatum(r),
|
||||
entry->rel, entry->page,
|
||||
entry->offset, VARSIZE(r), TRUE);
|
||||
} else {
|
||||
retval = entry;
|
||||
|
||||
|
||||
}
|
||||
|
||||
return (retval);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern GBT_VARKEY *
|
||||
gbt_var_union ( const GistEntryVector * entryvec , int32 * size , const gbtree_vinfo * tinfo )
|
||||
{
|
||||
|
||||
int i = 0,
|
||||
numranges = entryvec->n;
|
||||
GBT_VARKEY *cur,
|
||||
*tst=NULL;
|
||||
Datum out;
|
||||
GBT_VARKEY_R rk;
|
||||
|
||||
*size = sizeof(GBT_VARKEY);
|
||||
|
||||
tst = (GBT_VARKEY *) DatumGetPointer((entryvec->vector[0].key));
|
||||
cur = (GBT_VARKEY *) DatumGetPointer(PG_DETOAST_DATUM((entryvec->vector[0].key)));
|
||||
rk = gbt_var_key_readable ( cur );
|
||||
out = PointerGetDatum ( gbt_var_key_copy( &rk, TRUE ) );
|
||||
if ( tst != cur ) pfree ( cur );
|
||||
|
||||
for (i = 1; i < numranges; i++)
|
||||
{
|
||||
tst = (GBT_VARKEY *) DatumGetPointer((entryvec->vector[i].key));
|
||||
cur = (GBT_VARKEY *) DatumGetPointer(PG_DETOAST_DATUM((entryvec->vector[i].key)));
|
||||
gbt_var_bin_union ( &out , cur , tinfo );
|
||||
if ( tst != cur ) pfree ( cur );
|
||||
}
|
||||
|
||||
|
||||
/* Truncate (=compress) key */
|
||||
|
||||
if ( tinfo->trnc )
|
||||
{
|
||||
int32 plen ;
|
||||
GBT_VARKEY *trc = NULL;
|
||||
|
||||
plen = gbt_var_node_cp_len ( (GBT_VARKEY *) DatumGetPointer(out) , tinfo );
|
||||
trc = gbt_var_node_truncate ( (GBT_VARKEY *) DatumGetPointer(out) , plen+1 , tinfo ) ;
|
||||
|
||||
pfree ( DatumGetPointer(out) );
|
||||
out = PointerGetDatum ( trc );
|
||||
}
|
||||
|
||||
return ( (GBT_VARKEY *) DatumGetPointer ( out ) );
|
||||
}
|
||||
|
||||
|
||||
extern bool gbt_var_same ( bool * result, const Datum d1 , const Datum d2 , const gbtree_vinfo * tinfo ){
|
||||
|
||||
GBT_VARKEY *tst1 = (GBT_VARKEY *) DatumGetPointer(d1);
|
||||
GBT_VARKEY *t1 = (GBT_VARKEY *) DatumGetPointer( PG_DETOAST_DATUM(d1) );
|
||||
GBT_VARKEY *tst2 = (GBT_VARKEY *) DatumGetPointer(d2);
|
||||
GBT_VARKEY *t2 = (GBT_VARKEY *) DatumGetPointer( PG_DETOAST_DATUM(d2) );
|
||||
GBT_VARKEY_R r1, r2;
|
||||
r1 = gbt_var_key_readable ( t1 );
|
||||
r2 = gbt_var_key_readable ( t2 );
|
||||
|
||||
if (t1 && t2){
|
||||
*result = ( ( (*tinfo->f_cmp ) ( (bytea*)r1.lower, (bytea*)r2.lower) == 0
|
||||
&& (*tinfo->f_cmp) ( (bytea*)r1.upper, (bytea*)r2.upper) == 0 ) ? TRUE : FALSE );
|
||||
} else
|
||||
*result = (t1 == NULL && t2 == NULL) ? TRUE : FALSE;
|
||||
|
||||
if ( tst1 != t1 ) pfree (t1);
|
||||
if ( tst2 != t2 ) pfree (t2);
|
||||
|
||||
PG_RETURN_POINTER(result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern float *
|
||||
gbt_var_penalty ( float * res , const GISTENTRY * o , const GISTENTRY * n, const gbtree_vinfo * tinfo )
|
||||
{
|
||||
|
||||
GBT_VARKEY *orgt = (GBT_VARKEY *) DatumGetPointer(o->key);
|
||||
GBT_VARKEY *orge = (GBT_VARKEY *) DatumGetPointer( PG_DETOAST_DATUM(o->key) );
|
||||
GBT_VARKEY *newt = (GBT_VARKEY *) DatumGetPointer(n->key);
|
||||
GBT_VARKEY *newe = (GBT_VARKEY *) DatumGetPointer( PG_DETOAST_DATUM(n->key) );
|
||||
GBT_VARKEY_R ok , nk;
|
||||
GBT_VARKEY *tmp = NULL;
|
||||
int32 s = (tinfo->str)?(1):(0);
|
||||
|
||||
*res = 0.0;
|
||||
|
||||
nk = gbt_var_key_readable ( newe );
|
||||
if ( nk.lower == nk.upper ) /* leaf */
|
||||
{
|
||||
tmp = gbt_var_leaf2node ( newe , tinfo );
|
||||
if ( tmp != newe )
|
||||
nk = gbt_var_key_readable ( tmp );
|
||||
}
|
||||
ok = gbt_var_key_readable ( orge );
|
||||
|
||||
if ( ( VARSIZE(ok.lower) - VARHDRSZ ) == s && ( VARSIZE(ok.upper) - VARHDRSZ ) == s )
|
||||
{
|
||||
*res = 0.0;
|
||||
} else
|
||||
if ( ! (
|
||||
(
|
||||
( (*tinfo->f_cmp) (nk.lower, ok.lower)>=0 || gbt_bytea_pf_match(ok.lower, nk.lower, tinfo ) ) &&
|
||||
( (*tinfo->f_cmp) (nk.upper, ok.upper)<=0 || gbt_bytea_pf_match(ok.upper, nk.upper, tinfo ) )
|
||||
)
|
||||
) )
|
||||
{
|
||||
Datum d = PointerGetDatum (0);
|
||||
double dres = 0.0;
|
||||
int32 ol, ul;
|
||||
|
||||
gbt_var_bin_union ( &d , orge , tinfo );
|
||||
ol = gbt_var_node_cp_len ( ( GBT_VARKEY *) DatumGetPointer(d), tinfo );
|
||||
gbt_var_bin_union ( &d , newe , tinfo );
|
||||
ul = gbt_var_node_cp_len ( ( GBT_VARKEY *) DatumGetPointer(d), tinfo );
|
||||
|
||||
if ( ul < ol ) {
|
||||
dres = ( ol-ul ) ; /* lost of common prefix len */
|
||||
} else {
|
||||
GBT_VARKEY_R uk = gbt_var_key_readable ( ( GBT_VARKEY *) DatumGetPointer(d) );
|
||||
if ( tinfo->str )
|
||||
{
|
||||
dres = ( VARDATA(ok.lower)[ul]-VARDATA(uk.lower)[ul] ) +
|
||||
( VARDATA(uk.upper)[ul]-VARDATA(ok.upper)[ul] );
|
||||
} else {
|
||||
char tmp[4];
|
||||
tmp[0] = ( ( VARSIZE(ok.lower) - VARHDRSZ ) == ul )?(CHAR_MIN):(VARDATA(ok.lower)[ul]);
|
||||
tmp[1] = ( ( VARSIZE(uk.lower) - VARHDRSZ ) == ul )?(CHAR_MIN):(VARDATA(uk.lower)[ul]);
|
||||
tmp[2] = ( ( VARSIZE(ok.upper) - VARHDRSZ ) == ul )?(CHAR_MIN):(VARDATA(ok.upper)[ul]);
|
||||
tmp[3] = ( ( VARSIZE(uk.upper) - VARHDRSZ ) == ul )?(CHAR_MIN):(VARDATA(uk.upper)[ul]);
|
||||
dres = ( tmp[0] - tmp[1] ) +
|
||||
( tmp[3] - tmp[2] );
|
||||
}
|
||||
dres /= 256.0;
|
||||
}
|
||||
pfree ( DatumGetPointer(d) );
|
||||
|
||||
*res += FLT_MIN ;
|
||||
*res += (float) ( dres / ( (double) ( ol +1 ) ) );
|
||||
*res *= ( FLT_MAX / ( o->rel->rd_att->natts + 1 ) );
|
||||
|
||||
}
|
||||
|
||||
if ( tmp && tmp != newe )
|
||||
pfree (tmp);
|
||||
|
||||
if ( newe != newt ){
|
||||
pfree ( newe );
|
||||
}
|
||||
|
||||
if ( orge != orgt ){
|
||||
pfree ( orge );
|
||||
}
|
||||
return res ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static int32 gbt_vsrt_cmp ( const Vsrt * a , const Vsrt * b , const gbtree_vinfo * tinfo )
|
||||
{
|
||||
GBT_VARKEY_R ar = gbt_var_key_readable ( a->t );
|
||||
GBT_VARKEY_R br = gbt_var_key_readable ( b->t );
|
||||
return (*tinfo->f_cmp) ( ar.lower, br.lower );
|
||||
}
|
||||
|
||||
|
||||
|
||||
extern GIST_SPLITVEC *
|
||||
gbt_var_picksplit( const GistEntryVector *entryvec, GIST_SPLITVEC *v, const gbtree_vinfo * tinfo )
|
||||
{
|
||||
|
||||
OffsetNumber i ,
|
||||
maxoff = entryvec->n - 1;
|
||||
|
||||
Vsrt arr[maxoff+1] ;
|
||||
int pfrcntr = 0 ,
|
||||
svcntr = 0 ,
|
||||
nbytes ;
|
||||
char * tst ,
|
||||
* cur ;
|
||||
|
||||
char **pfr = NULL ;
|
||||
GBT_VARKEY **sv = NULL;
|
||||
|
||||
static int cmp (const void *a, const void *b ){
|
||||
return gbt_vsrt_cmp ((Vsrt *) a , (Vsrt *) b , tinfo );
|
||||
}
|
||||
|
||||
nbytes = (maxoff + 2) * sizeof(OffsetNumber);
|
||||
v->spl_left = (OffsetNumber *) palloc(nbytes);
|
||||
v->spl_right = (OffsetNumber *) palloc(nbytes);
|
||||
v->spl_ldatum = PointerGetDatum(0);
|
||||
v->spl_rdatum = PointerGetDatum(0);
|
||||
v->spl_nleft = 0;
|
||||
v->spl_nright = 0;
|
||||
|
||||
pfr = palloc ( sizeof ( GBT_VARKEY* ) * (maxoff+1) );
|
||||
sv = palloc ( sizeof ( bytea * ) * (maxoff+1) );
|
||||
|
||||
/* Sort entries */
|
||||
|
||||
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
|
||||
{
|
||||
GBT_VARKEY_R ro;
|
||||
tst = (char *) DatumGetPointer((entryvec->vector[i].key));
|
||||
cur = (char *) DatumGetPointer(PG_DETOAST_DATUM((entryvec->vector[i].key)));
|
||||
if ( tst != cur ){
|
||||
pfr[pfrcntr] = cur ;
|
||||
pfrcntr++;
|
||||
}
|
||||
ro = gbt_var_key_readable( ( GBT_VARKEY *) cur );
|
||||
if ( ro.lower == ro.upper ) /* leaf */
|
||||
{
|
||||
sv[svcntr] = gbt_var_leaf2node ( ( GBT_VARKEY *) cur , tinfo );
|
||||
arr[i].t = sv[svcntr];
|
||||
if ( sv[svcntr] != ( GBT_VARKEY *) cur )
|
||||
svcntr++;
|
||||
} else {
|
||||
arr[i].t = ( GBT_VARKEY *) cur;
|
||||
}
|
||||
arr[i].i = i;
|
||||
}
|
||||
|
||||
/* sort */
|
||||
qsort ( (void*) &arr[FirstOffsetNumber], maxoff-FirstOffsetNumber+1,sizeof(Vsrt), cmp );
|
||||
|
||||
|
||||
/* We do simply create two parts */
|
||||
|
||||
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
|
||||
{
|
||||
if (i <= (maxoff - FirstOffsetNumber + 1) / 2)
|
||||
{
|
||||
gbt_var_bin_union(&v->spl_ldatum, arr[i].t, tinfo);
|
||||
v->spl_left[v->spl_nleft] = arr[i].i;
|
||||
v->spl_nleft++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gbt_var_bin_union(&v->spl_rdatum, arr[i].t, tinfo);
|
||||
v->spl_right[v->spl_nright] = arr[i].i;
|
||||
v->spl_nright++;
|
||||
}
|
||||
}
|
||||
|
||||
/* Free detoasted keys */
|
||||
for ( i=0 ; i<pfrcntr; i++ ){
|
||||
pfree( pfr[i] );
|
||||
}
|
||||
|
||||
/* Free strxfrm'ed leafs */
|
||||
for ( i=0 ; i<svcntr; i++ ){
|
||||
pfree( sv[i] );
|
||||
}
|
||||
|
||||
if ( pfr )
|
||||
{
|
||||
pfree (pfr);
|
||||
}
|
||||
|
||||
if ( sv )
|
||||
{
|
||||
pfree (sv);
|
||||
}
|
||||
|
||||
/* Truncate (=compress) key */
|
||||
|
||||
if ( tinfo->trnc )
|
||||
{
|
||||
|
||||
int32 ll = gbt_var_node_cp_len ( (GBT_VARKEY *) DatumGetPointer(v->spl_ldatum) , tinfo );
|
||||
int32 lr = gbt_var_node_cp_len ( (GBT_VARKEY *) DatumGetPointer(v->spl_rdatum) , tinfo );
|
||||
GBT_VARKEY * dl ;
|
||||
GBT_VARKEY * dr ;
|
||||
|
||||
ll = Max (ll,lr);
|
||||
ll++;
|
||||
|
||||
dl = gbt_var_node_truncate ( (GBT_VARKEY *) DatumGetPointer(v->spl_ldatum) , ll, tinfo ) ;
|
||||
dr = gbt_var_node_truncate ( (GBT_VARKEY *) DatumGetPointer(v->spl_rdatum) , ll, tinfo ) ;
|
||||
pfree( DatumGetPointer(v->spl_ldatum) );
|
||||
pfree( DatumGetPointer(v->spl_rdatum) );
|
||||
v->spl_ldatum = PointerGetDatum ( dl );
|
||||
v->spl_rdatum = PointerGetDatum ( dr );
|
||||
|
||||
}
|
||||
|
||||
return v;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
** The GiST consistent method
|
||||
*/
|
||||
|
||||
extern bool
|
||||
gbt_var_consistent(
|
||||
GBT_VARKEY_R * key,
|
||||
const void * query,
|
||||
const StrategyNumber * strategy,
|
||||
bool is_leaf,
|
||||
const gbtree_vinfo * tinfo
|
||||
)
|
||||
{
|
||||
bool retval = FALSE;
|
||||
|
||||
switch (*strategy)
|
||||
{
|
||||
case BTLessEqualStrategyNumber:
|
||||
if ( is_leaf )
|
||||
retval = (*tinfo->f_ge)(query, (void*) key->lower);
|
||||
else
|
||||
retval = (*tinfo->f_cmp)((bytea*) query, key->lower) >= 0
|
||||
|| gbt_var_node_pf_match( key ,query, tinfo );
|
||||
break;
|
||||
case BTLessStrategyNumber:
|
||||
if ( is_leaf )
|
||||
retval = (*tinfo->f_gt)(query, (void*) key->lower);
|
||||
else
|
||||
retval = (*tinfo->f_cmp)((bytea*)query, key->lower) >= 0
|
||||
|| gbt_var_node_pf_match( key, query , tinfo );
|
||||
break;
|
||||
case BTEqualStrategyNumber:
|
||||
if ( is_leaf )
|
||||
retval = (*tinfo->f_eq)(query, (void*) key->lower);
|
||||
else
|
||||
retval = (
|
||||
(
|
||||
(*tinfo->f_cmp) (key->lower,(bytea*) query)<=0 &&
|
||||
(*tinfo->f_cmp) ((bytea*)query, (void*) key->upper)<=0
|
||||
) || gbt_var_node_pf_match( key, query, tinfo )
|
||||
);
|
||||
break;
|
||||
case BTGreaterStrategyNumber:
|
||||
if ( is_leaf )
|
||||
retval = (*tinfo->f_lt)(query, (void*) key->upper);
|
||||
else
|
||||
retval = (*tinfo->f_cmp)((bytea*)query, key->upper)<=0
|
||||
|| gbt_var_node_pf_match( key, query, tinfo );
|
||||
break;
|
||||
case BTGreaterEqualStrategyNumber:
|
||||
if ( is_leaf )
|
||||
retval = (*tinfo->f_le)(query, (void*) key->upper);
|
||||
else
|
||||
retval = (*tinfo->f_cmp)((bytea*) query, key->upper)<=0
|
||||
|| gbt_var_node_pf_match( key, query, tinfo );
|
||||
break;
|
||||
default:
|
||||
retval = FALSE;
|
||||
}
|
||||
|
||||
return (retval);
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
|
||||
/* Variable length key */
|
||||
typedef bytea GBT_VARKEY;
|
||||
|
||||
/* Better readable key */
|
||||
typedef struct
|
||||
{
|
||||
bytea * lower, * upper;
|
||||
} GBT_VARKEY_R;
|
||||
|
||||
/* used for key sorting */
|
||||
typedef struct
|
||||
{
|
||||
int i ;
|
||||
GBT_VARKEY * t ;
|
||||
} Vsrt ;
|
||||
|
||||
/*
|
||||
type description
|
||||
*/
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
/* Attribs */
|
||||
|
||||
enum gbtree_type t ; /* data type */
|
||||
bool str ; /* true, if string ( else binary ) */
|
||||
bool trnc ; /* truncate (=compress) key */
|
||||
|
||||
/* Methods */
|
||||
|
||||
bool (*f_gt) ( const void * , const void * ); /* greater then */
|
||||
bool (*f_ge) ( const void * , const void * ); /* greater equal */
|
||||
bool (*f_eq) ( const void * , const void * ); /* equal */
|
||||
bool (*f_le) ( const void * , const void * ); /* less equal */
|
||||
bool (*f_lt) ( const void * , const void * ); /* less then */
|
||||
int32 (*f_cmp) ( const bytea * , const bytea * ); /* node compare */
|
||||
GBT_VARKEY* (*f_l2n) ( GBT_VARKEY * ); /* convert leaf to node */
|
||||
} gbtree_vinfo;
|
||||
|
||||
|
||||
|
||||
extern GBT_VARKEY_R gbt_var_key_readable ( const GBT_VARKEY * k );
|
||||
|
||||
extern GBT_VARKEY *gbt_var_key_copy ( const GBT_VARKEY_R * u, bool force_node );
|
||||
|
||||
extern GISTENTRY *gbt_var_compress ( GISTENTRY *entry , const gbtree_vinfo * tinfo );
|
||||
|
||||
extern GBT_VARKEY *gbt_var_union ( const GistEntryVector * entryvec , int32 * size ,
|
||||
const gbtree_vinfo * tinfo );
|
||||
|
||||
extern bool gbt_var_same ( bool * result, const Datum d1 , const Datum d2 ,
|
||||
const gbtree_vinfo * tinfo );
|
||||
|
||||
extern float *gbt_var_penalty ( float * res , const GISTENTRY * o , const GISTENTRY * n,
|
||||
const gbtree_vinfo * tinfo );
|
||||
|
||||
extern bool gbt_var_consistent( GBT_VARKEY_R * key , const void * query,
|
||||
const StrategyNumber * strategy , bool is_leaf,
|
||||
const gbtree_vinfo * tinfo );
|
||||
|
||||
extern GIST_SPLITVEC *gbt_var_picksplit ( const GistEntryVector *entryvec, GIST_SPLITVEC *v,
|
||||
const gbtree_vinfo * tinfo );
|
||||
extern void gbt_var_bin_union ( Datum * u , GBT_VARKEY * e ,
|
||||
const gbtree_vinfo * tinfo );
|
|
@ -0,0 +1,612 @@
|
|||
010000100100001100101100011110110
|
||||
010110001111011000001101000000101
|
||||
101100011110110000011010000001010
|
||||
001101100101000001110001000001101
|
||||
000110100111111111101001011111010
|
||||
001100000100111101000011111100000
|
||||
001100010100010001010010000011010
|
||||
000101001000001101000111100100010
|
||||
110110101100010001000101001111000
|
||||
110110110110100010000110100000011
|
||||
110101011101101111110111110010101
|
||||
010001111000000110010101010011100
|
||||
111010010111110101101100110011010
|
||||
010000100100001100101100011110110
|
||||
010101001101100101000001110001000
|
||||
110111101011110001111110011001011
|
||||
110001011110101000011101101011100
|
||||
011001011010100000000100000111100
|
||||
101000011101100110000111010100111
|
||||
011000111000011011110101010001110
|
||||
000111001110101000110000011000000
|
||||
110101000010001101010111011000001
|
||||
010100100000010110010011011111111
|
||||
110000110011011010111101010001100
|
||||
101010100110000010011110100001111
|
||||
\N
|
||||
100000111100001111011001001011101
|
||||
111100100011001110101000010010111
|
||||
011010001111111111011100001011110
|
||||
110010001100111010100001001011101
|
||||
110110111111010010100111110010001
|
||||
101110011110000110000000000110110
|
||||
100100110000001101010111100111010
|
||||
001001010111100011101101100001100
|
||||
010000001100010100010001010010000
|
||||
111010000100100110101011011101010
|
||||
110100001000001100111000111101100
|
||||
111011001111111001111000111010110
|
||||
111111100000010110100111101011011
|
||||
011011111111101110110011111110011
|
||||
110100001000001100111000111101100
|
||||
001011101101010100101010010010001
|
||||
101010011100100011011000001101011
|
||||
000000110100000111011101010011101
|
||||
110100101111101011011001100110100
|
||||
011111010110110011001101000000110
|
||||
101010001100000110000000111000101
|
||||
101111111011001001001000000000011
|
||||
011000101100111000010011000100001
|
||||
000110101011110011101000000110001
|
||||
000111110101111010110000111011011
|
||||
100010001100101110011000110010110
|
||||
010000011010001111001000101000001
|
||||
111010001111010110101111010110111
|
||||
100110011011011100001001001010101
|
||||
110010010110011101110111101011110
|
||||
110010101101000011111111101110100
|
||||
011101011111111001100010010000011
|
||||
010100010011011011001100011100001
|
||||
110110111111010010100111110010001
|
||||
000011101110111100110111100111011
|
||||
101011110101101111111110111011001
|
||||
001100010001110100010010100101101
|
||||
111101011011001100110100000011000
|
||||
000000100000101101010100000110000
|
||||
101010110100010000001111010010010
|
||||
010111010011000101010110111000011
|
||||
100101101101101111001100111010000
|
||||
000001100110111000101101100001110
|
||||
\N
|
||||
110110111101010000011111100010000
|
||||
100010001010010000011010001111001
|
||||
110010100010110100100110000111010
|
||||
101101101101111001100111010000100
|
||||
010111101011000011101101110001011
|
||||
100000000000010101110011011100010
|
||||
100001101000010101111101001010100
|
||||
101000110001011001110000100110001
|
||||
110011011111011100010000010100011
|
||||
010011011100110000100001001100111
|
||||
001100010101110001110101111001001
|
||||
001110000010000001100011000110001
|
||||
000110001100011010111111101011100
|
||||
100010001111110100101100110010110
|
||||
000001001100110110111000010010010
|
||||
111101100100101110101100111001100
|
||||
010101011101100001111111110011011
|
||||
001011111111001100101101110101001
|
||||
110111111111111110111000010011001
|
||||
010101111001101011011111011111000
|
||||
011110111100101001000111111001100
|
||||
010111001001111010011000101000011
|
||||
010001110111111100000011100100000
|
||||
100001111111001110011001110010101
|
||||
011000010110001010011011011101111
|
||||
000000001010111001101110001011010
|
||||
100011100000001111011010011010110
|
||||
000011100100110111000001010001111
|
||||
100101010111110110000011001010101
|
||||
110000101100110010000010011001011
|
||||
110010000001011101011110110011011
|
||||
100010111100001111111001110011001
|
||||
111111101111101000000100000011111
|
||||
110100101011110110101110001101011
|
||||
011110111111010101011000001000111
|
||||
011111111110011001110011101100000
|
||||
101101000110001011001110000100110
|
||||
010101001001011011110110100010100
|
||||
011111111100000010110100111101011
|
||||
011000111101111110011000000010011
|
||||
011000010001000000000110101011001
|
||||
011011000100010111011000110000100
|
||||
100101100011111101110100011101000
|
||||
011100000011111110111111010011010
|
||||
010010111001111100010110011011111
|
||||
001100101111111101111111111111101
|
||||
111111111010000010101110100011011
|
||||
111010000110101001111001000101100
|
||||
100101100000000000010101110011011
|
||||
010001011000010010101100010001100
|
||||
010010011110010010111001100101111
|
||||
111010011101110110101110011110000
|
||||
000011100111010011100001111110110
|
||||
101110010010010010101100001001000
|
||||
100100011001010000011100100011101
|
||||
010111110001111111100101000100100
|
||||
110100000100101001110000111100011
|
||||
011111000111001100101111111101011
|
||||
110010000111111011111001001110111
|
||||
010111001111000011000000000011011
|
||||
110000110101111010101010110111000
|
||||
000111101001100011111110011000011
|
||||
000001001010011100001111000110000
|
||||
010010001101001110010001111111000
|
||||
010111101011000011101101110001011
|
||||
\N
|
||||
001001111001011100001010100101110
|
||||
110001110011100000000010000001001
|
||||
101111111111110101101111000110010
|
||||
011101111110011101110000001001111
|
||||
011010110001101010110010110101001
|
||||
101100110001100101011011001001111
|
||||
000000010010010111110001010001110
|
||||
110101110100110000100010011000100
|
||||
100101000100111110111001101101111
|
||||
101110000111100000110110101111001
|
||||
011111111001010001001001001001111
|
||||
111110011001011110111111010101011
|
||||
011100100000111101110001101000101
|
||||
011100100011001100011001010100000
|
||||
001010110101101100000100001101011
|
||||
101011000101101010000110110100000
|
||||
010000000011011000111010010001011
|
||||
001110100100010110110010010000001
|
||||
110111001101011111110000101100110
|
||||
101110001010111110110111111101011
|
||||
001111001010011010101101110011101
|
||||
000001001100000110100001111011001
|
||||
111011101010011101001100011011010
|
||||
101111000101101101101100100100011
|
||||
011011110011101101000111111111101
|
||||
000011101101101000001000111001111
|
||||
001101001110010001111111000110101
|
||||
101001010100000100011101110010101
|
||||
111001010010001111110011000100010
|
||||
001011110000110111001000010100010
|
||||
001110010010111110110111001111100
|
||||
000100111100100111010100010110001
|
||||
101000100111110111001101101111001
|
||||
111001011110111111101000111011011
|
||||
001011111111010111011001110101010
|
||||
000110101001110010100110000100000
|
||||
111000000101001000110111010011101
|
||||
011011000100000001010111111111101
|
||||
011011100001110101100100111100101
|
||||
111101101010011001110011001110000
|
||||
011000101001000010010101110101001
|
||||
010101001110100011110101101011110
|
||||
011011101001110100001000100011011
|
||||
110101111110011101101110100101111
|
||||
011011010101001110010000011000111
|
||||
100010110000000001111111001110011
|
||||
100100101110011001011110111100011
|
||||
001001100010001110001000000111000
|
||||
010000001101010001010011001100001
|
||||
011110011010110111110111110001011
|
||||
111111110100110111010010111011000
|
||||
101111111011001001001000000000011
|
||||
010110111101101000101001010010101
|
||||
001101010101100100100011001010001
|
||||
000011101100110000111010100111001
|
||||
111010001111010110101111010110111
|
||||
000110101111000101010101010100010
|
||||
111001100111011100000100011000110
|
||||
011110111111011100111010000100010
|
||||
000111010100111001001010100010001
|
||||
111010011111010100100101011110101
|
||||
110100100101011010100001010010010
|
||||
001111110001110100100101001001110
|
||||
100101011111001100101010011110101
|
||||
011110010111101001010011000110000
|
||||
\N
|
||||
011101010001011000110110001000101
|
||||
010100100100111000000011000110000
|
||||
100110111100110110010011111010110
|
||||
\N
|
||||
001000000010011011010000010001100
|
||||
010010101010101001000001111001010
|
||||
111100100111010100010110001101100
|
||||
111100000110010010101010101001000
|
||||
100001001000110101000110110101101
|
||||
110100000011011101011010101000101
|
||||
110111000010000001110000110011001
|
||||
011110001010101100110100000000111
|
||||
000100100111011010000000010100100
|
||||
010001000000000110101011001111100
|
||||
100110010101001110000100110101111
|
||||
001111100010011010000011000100101
|
||||
010010011000100111111101000011001
|
||||
000010001110101101111111010000010
|
||||
001100001101111000010100100110111
|
||||
100011011010000111000011111000011
|
||||
000110110101000010101001111110100
|
||||
110100101010010100101100101101111
|
||||
111111001110111000000100111110001
|
||||
101100101011101101001111011100100
|
||||
011100110011001001101000100101000
|
||||
101000110100100101011101110110100
|
||||
010100010111000111010100101100111
|
||||
011011101001100000011000011011100
|
||||
110011001100101111101010001011111
|
||||
001101110000011111001010010101010
|
||||
000001111010000111101011111110000
|
||||
000111000001010111110111000001010
|
||||
000000001111111001110011000100100
|
||||
100111110011111100011001100110110
|
||||
111001011000100001001001101101001
|
||||
000111010011100101101001110001010
|
||||
010011101101000100111101110010011
|
||||
000010101110100011011011011010101
|
||||
001001101111010001101101001111010
|
||||
011011110111110010110100000110110
|
||||
110011000010000100110011101111010
|
||||
010101110101101000000110010010011
|
||||
011000001101000011110110011000110
|
||||
101001111010100010000000110101011
|
||||
100110101111010100000000100101101
|
||||
010110000100110010110101111001111
|
||||
011000010101111101001110111000011
|
||||
011110010110100100100010110100101
|
||||
010101001001011011110110100010100
|
||||
010001110011100000010000111110001
|
||||
100101011010100001010010010011100
|
||||
100000100011000000010010010111110
|
||||
000101100110000011000110101010010
|
||||
010110100011010001001000011011000
|
||||
000010100100100111000000011000110
|
||||
101000011110001101000110110100000
|
||||
101011110100110000010011101110011
|
||||
011001010111111000100010101001001
|
||||
001100010111101100011011110101001
|
||||
110010001111010010111000101000100
|
||||
110111000010111101110101011100110
|
||||
100010011110010011100011011010000
|
||||
010010011010100000011000110010010
|
||||
001111011111100110000000100111011
|
||||
101100101001001010000000010100000
|
||||
111110100101011010100010110001100
|
||||
010110010111101001100010101110001
|
||||
011101110000000000001001010101100
|
||||
100011111001010101110010000001111
|
||||
100001011000111001011011011010100
|
||||
010001110010010000101010001100010
|
||||
100100000110000111001111110000010
|
||||
011101110011111100001001010010010
|
||||
011101111010111101101000001101100
|
||||
110101100100110001110111111010010
|
||||
011101011001010101000010010101101
|
||||
000111100101111010010100110001100
|
||||
111110101110101100111011110001001
|
||||
100001111011100011110100110001111
|
||||
001100001010101111101001111101100
|
||||
001100000010010010110110110001111
|
||||
111110110110011000111011001110010
|
||||
101011000111011111011000110010111
|
||||
001111011111100110000000100111011
|
||||
100001100000111111110110101010100
|
||||
101011111011000100011110110001101
|
||||
111010111111110011000100100000111
|
||||
100100101100010111010000000011110
|
||||
111100000110010010101010101001000
|
||||
110101111111111100100111010000000
|
||||
100101001010010110111000100000111
|
||||
010000011111100010000110111111110
|
||||
011001010011000110111110100000001
|
||||
101101001010011101101111111010111
|
||||
111000110011001101101010001111010
|
||||
110001011100101100011100000101011
|
||||
010010110011001011000001010110100
|
||||
101111101110001001110111100100010
|
||||
000011001101110110101101010111011
|
||||
101010000010100100111111000111001
|
||||
101110101111010101000101110001110
|
||||
101110000001001101010101100000111
|
||||
000101001010010101100100001111110
|
||||
111011100110001100010000001011001
|
||||
101011011011111010000101001100000
|
||||
101011101110000001010010011010100
|
||||
111101010011000111100001101011000
|
||||
001001000010101110111110001101011
|
||||
101110110011000011111000010101011
|
||||
100110000011011111010010010001100
|
||||
000010101000110110111110101000101
|
||||
110010001110000110000101111100001
|
||||
011000110010110010110101000000001
|
||||
001111000111000001100100011001111
|
||||
011001101100000011000101100111101
|
||||
110000101101101110001110010101011
|
||||
100101011011111110011011001000010
|
||||
101111111001111111101010101100010
|
||||
111111110110101010100101111010101
|
||||
010101101000011011001110100010101
|
||||
101000001101001111101111001110010
|
||||
011100000100100100000000100010111
|
||||
010011000110111110100000001110001
|
||||
111101011111011000001011000110110
|
||||
101010000011100110110111011011101
|
||||
100110110111010111110111100101010
|
||||
011111001101001001110110000011011
|
||||
101001101010010010000001011010100
|
||||
101101111111001011011111000010111
|
||||
001100111000000011100111010011100
|
||||
101001001111001001011100110010111
|
||||
101011110010000110110101100110011
|
||||
011001010101010001111001101100011
|
||||
010111111001111111011110000000001
|
||||
010010001111001011101001111001000
|
||||
\N
|
||||
000111010010001100010010101001101
|
||||
010110100111000000101001010110011
|
||||
111010000100100000011111110010110
|
||||
111000000111110111100010110110110
|
||||
110111101000100000011101110011111
|
||||
011110110100111000101110010000010
|
||||
011111011010100100011000011011010
|
||||
010001011000001001110100010101110
|
||||
100101000100111110101000001100110
|
||||
001011100001010111001011101011101
|
||||
101110001110011001100101111101010
|
||||
110100101001100011111011100100011
|
||||
101001000110000110110101000010101
|
||||
111010000110101001111001000101100
|
||||
100011110000011001001010101010100
|
||||
101111010110100110100010001111011
|
||||
000010110000101101100011001011001
|
||||
001011001000010011001111011110000
|
||||
110011110111110000001011011101101
|
||||
000101000110110100000100110100100
|
||||
000100010111011111011100100110100
|
||||
\N
|
||||
101011101110111111010000000100010
|
||||
000100100100001100010111010101010
|
||||
\N
|
||||
000100011001010101010001111001101
|
||||
111101010100010000011100101011000
|
||||
110000000110001011101000000101110
|
||||
111101111100110011010110100001000
|
||||
000011011101011010101000101001010
|
||||
010110000000001001010101001001111
|
||||
100110111111100011110011111111010
|
||||
010110100110000111000011100001111
|
||||
001000111100110111111010000101110
|
||||
100100010000101110011101011101110
|
||||
011111111110001100110110001100001
|
||||
010000100001110001100010101100101
|
||||
000001110111001001001001110000110
|
||||
101101001110001010000101101001011
|
||||
110011101010000100101110110101010
|
||||
100100100011000000001111100011001
|
||||
001000111111001100010001011000001
|
||||
111001100101010011110101000100000
|
||||
111001001100100110010001000000111
|
||||
110001111110010111111100010110100
|
||||
000111110001111010011011100110000
|
||||
001001011110001111111011010000100
|
||||
101110110011000000100111000111000
|
||||
101111000100000111011011111110001
|
||||
000011111101111100100111011111110
|
||||
001110100110101101111011110101001
|
||||
011000101001011110000011110100001
|
||||
100000001001111110101110000101100
|
||||
100010000110010101001010010000110
|
||||
111101010111001101101011000000111
|
||||
101010100000100101010101111010000
|
||||
011101111101110010011010010010110
|
||||
100010001010001101110011000010010
|
||||
101101100101101111000110110000010
|
||||
100111010011000110110101010111000
|
||||
000101101011111110110000111111010
|
||||
001100101110000011000110000111000
|
||||
100010010110111011001111000100000
|
||||
011000000000011110100100110100101
|
||||
101001100011111011100100011011010
|
||||
001111010111100101111100000010001
|
||||
111000000001101011110001010101010
|
||||
101101011011000001000011010110111
|
||||
\N
|
||||
000000000111110111111011110000110
|
||||
110010001010000100001001100100011
|
||||
001100011001110011101010011100000
|
||||
111111101010010001000000100100111
|
||||
010000000011101111000010000100011
|
||||
001011010101110011111100000001100
|
||||
101010000010100011010001111000110
|
||||
101010111100111010000001100010111
|
||||
011001110111110111110010001100010
|
||||
110010101100000010110110101111110
|
||||
111000001001001000000001000101111
|
||||
000001101000001100101001000101001
|
||||
010111101011011111111101110110011
|
||||
010001101101111101010001011011001
|
||||
100101100000111100000110101101000
|
||||
011110000001011100011110110110100
|
||||
000100101100101110101001000000001
|
||||
011011101110011011110001111011101
|
||||
000110101011001100010101111010110
|
||||
011111000000000010011001101101110
|
||||
100110001011110110001101111010100
|
||||
111100100100100111110001001001011
|
||||
100110110100111110100011000000000
|
||||
011000001001101110101110110110011
|
||||
111100110101011000001110110110011
|
||||
101001101100110111110111100100101
|
||||
000001111100010110110101100011000
|
||||
001100011100001000000101110110010
|
||||
011001011010101000110011010011111
|
||||
110010100010110001000001001111011
|
||||
100001001000011001011000111101100
|
||||
001010011110011101001000010011000
|
||||
000000101101001011001100100001101
|
||||
011100000010100110001010110100000
|
||||
011011001101111101010001110011001
|
||||
000001000111100110111111010000101
|
||||
110101110010010011011010111111000
|
||||
100111010111001110010000100001110
|
||||
101101001100011010001001010011000
|
||||
010111011011001110100110111011001
|
||||
001001001011100010011010100111010
|
||||
000000011001110101001110000100100
|
||||
011110101001010011110101101000001
|
||||
000101011101000000011101010100111
|
||||
001100111111011001000100101110100
|
||||
010101100011000101111011110000101
|
||||
111101010111001101101011000000111
|
||||
111000110100101011010010100111011
|
||||
111010011010111101000010101110000
|
||||
100111100110001110100100101001100
|
||||
111010010000100000101000000100001
|
||||
011000011110101111101100010001111
|
||||
100000110110010111010011101110010
|
||||
010100011111011000111100001100100
|
||||
010101010110001011011001110111101
|
||||
010101110100001010000000000010111
|
||||
111001011110010010010000001010000
|
||||
000100011110111010010101011000110
|
||||
111011000100000001100010100011010
|
||||
011111100010010111101010010000101
|
||||
001010111111111101110111101011000
|
||||
010111111010100100101010000101101
|
||||
111101010100100000100000101011100
|
||||
000001101100101110100111011100101
|
||||
111100100011110100101111010101101
|
||||
\N
|
||||
111111000010000001001100010110000
|
||||
111110100000010101001110010011110
|
||||
110000011110100001111010111111100
|
||||
111001101110001011010110001100100
|
||||
000100000010110010100100110011100
|
||||
111010001001011011101100111100010
|
||||
011001101101011110101000110001101
|
||||
100100110000001101010111100111010
|
||||
111000001010000010011111111000000
|
||||
011111001101011101101110111011100
|
||||
000000011011110100000011000100011
|
||||
000100110101100010010001101001000
|
||||
101000110001101011000100010001001
|
||||
110111101110011000110101101010101
|
||||
001101110010000101000101101101000
|
||||
100001001000011001011000111101100
|
||||
111110111010010111000011010011111
|
||||
001110100001000100010111101110110
|
||||
000101000111010000010111010010100
|
||||
110101010100101100110100111001110
|
||||
011110101011101111100101010000000
|
||||
000101110100100011000011111110000
|
||||
001011101110001111101110101101100
|
||||
110100010010001111111100100011010
|
||||
101010001100010000011101011111111
|
||||
101000010000100010101000011111111
|
||||
000000010101011110111110100110111
|
||||
110111001001101111100011010000101
|
||||
100010000000001100000111000010100
|
||||
011110101010110101010000011001000
|
||||
110110110111100010000111000110000
|
||||
110001111110010100010100011111100
|
||||
000001001100110100001010110011000
|
||||
010001111111011100101110000011001
|
||||
100100111000101101000111101101111
|
||||
000111111100011111001010101110010
|
||||
101100010000010011110111001100000
|
||||
110111100001110000000111001000110
|
||||
100000111011110001010010111101111
|
||||
100001001100100100000001011100111
|
||||
001010101111101000111000011010011
|
||||
001100100011110001101101011100001
|
||||
110011001011110111111010101011000
|
||||
001010101110010010101100010101011
|
||||
001011011000010110110100110011000
|
||||
100011000011110110000010011111001
|
||||
000000000000110010110000110100111
|
||||
011111111011111010001101110100111
|
||||
110111111010101011000001000111100
|
||||
000001110110011011000111010101001
|
||||
000100000010101001000010001001110
|
||||
101110100010010110111011001111000
|
||||
100010111010000000011110111011000
|
||||
001100110100101010000010001110111
|
||||
110110010011101011100011010101010
|
||||
101100000100011110000001100101010
|
||||
111010000000011001011010011001000
|
||||
010010011011000101111100000011101
|
||||
100110101101011111001111001110000
|
||||
110101100011010100011110000101111
|
||||
010101111010000101011010011101110
|
||||
111101100011110100100111000001110
|
||||
100010000000001101010110011111000
|
||||
100111010010001100100010100100010
|
||||
011100110101111010100111101001011
|
||||
\N
|
||||
001111101101000110000010001110011
|
||||
101110110000010100001000101100111
|
||||
101111110011010100111101100101001
|
||||
111111110011101011000110011001101
|
||||
110101100100010100100100010100001
|
||||
010101010000111001010001010000000
|
||||
101010010110111010011100011011110
|
||||
100010111111110000001110001101010
|
||||
001000110001101110010110101001001
|
||||
010111000111001000101001111111000
|
||||
100100101011001111001110100110110
|
||||
011101001101101000110010001010101
|
||||
001110011000100101001010011111010
|
||||
001000011101010010110111010011100
|
||||
111100110110000000101101101001010
|
||||
110010101010000111001010001010000
|
||||
000000011011110100001110110011000
|
||||
101010001110110100100100010101100
|
||||
101000101001111010111000100011100
|
||||
001000001100111000111101100111000
|
||||
000001110011111011001111100000001
|
||||
011110111001011000111101100010010
|
||||
100110110110010010111110111000110
|
||||
111101011010111101000001011111111
|
||||
010000111110010011010001110000001
|
||||
011110111100111001011010001000000
|
||||
101001100100011101111011100000011
|
||||
000011110010111110000000110001011
|
||||
000101111011100100100100101011000
|
||||
011101110111011011001011110010100
|
||||
011000110100101100001111010111110
|
||||
010011000000011011111100101010111
|
||||
100000101101101110000010010111111
|
||||
000111110100010011110010011000001
|
||||
001010001001110110011100110000001
|
||||
010000001011001001101111111111000
|
||||
000001000100011001011111111011111
|
||||
110111000101000100011101101011010
|
||||
010011111001010101101011001001000
|
||||
000100111100001010000010010010100
|
||||
011110101111101010100011000111111
|
||||
001011001101101000011011111000110
|
||||
011100100001001010011000001000101
|
||||
100101101100011111010100111001010
|
||||
111111100100101101001001111000101
|
||||
111110010011111001010101101011001
|
||||
011000011100001110110001001100100
|
||||
011011110101000001111110001000011
|
||||
111100000000110011001111011111000
|
||||
100101001011110100110011001110010
|
||||
100000101100011100111011000110001
|
||||
110010010110010001011101100100001
|
||||
110110010000000010100000101111100
|
||||
100011100010000101001101100010101
|
||||
001101111000011010100101010010101
|
||||
000100100011110001110101110010000
|
||||
100011110100101011111000110101100
|
||||
100011100011000011100000010001000
|
||||
100000110101110010101001001011000
|
||||
011110101101100100001000011100110
|
||||
101111111011011101111100110100000
|
||||
001110010111000001101001011110100
|
||||
000110011011101101011010101110110
|
||||
010101100101111111010001110001010
|
||||
000111100101111001111100010011010
|
||||
010110110001000101111111001101101
|
||||
010000111001001000011101111011001
|
||||
110100000110001011100110001111100
|
||||
000011110011110001011010111100001
|
||||
111011111100101011111100101000110
|
||||
\N
|
||||
101000111010000101111111000111000
|
||||
000111000111001111011011001001001
|
|
@ -0,0 +1,600 @@
|
|||
-166122.30
|
||||
-432746.26
|
||||
\N
|
||||
-282683.84
|
||||
454558.76
|
||||
-446358.85
|
||||
374604.84
|
||||
-207772.37
|
||||
-447987.84
|
||||
326562.77
|
||||
-269813.11
|
||||
-191115.13
|
||||
-70048.27
|
||||
150896.02
|
||||
-476375.00
|
||||
-390399.77
|
||||
212177.03
|
||||
-204062.17
|
||||
97619.20
|
||||
310057.22
|
||||
-39178.09
|
||||
-369182.60
|
||||
-149433.85
|
||||
-410022.92
|
||||
-373445.06
|
||||
108900.38
|
||||
-357486.45
|
||||
380320.26
|
||||
\N
|
||||
-483777.58
|
||||
-384690.86
|
||||
-115424.90
|
||||
-300012.64
|
||||
-261623.29
|
||||
-5423.17
|
||||
-159664.48
|
||||
-45458.63
|
||||
-379324.56
|
||||
280086.82
|
||||
491889.08
|
||||
117994.57
|
||||
-87318.07
|
||||
\N
|
||||
-247918.60
|
||||
-407705.26
|
||||
290100.50
|
||||
-120064.52
|
||||
-61386.63
|
||||
-256384.21
|
||||
205928.38
|
||||
453688.97
|
||||
63433.87
|
||||
489091.31
|
||||
454693.57
|
||||
\N
|
||||
-241552.75
|
||||
-18629.07
|
||||
399128.14
|
||||
421657.16
|
||||
\N
|
||||
-153046.41
|
||||
\N
|
||||
-259814.14
|
||||
351443.36
|
||||
112822.79
|
||||
207894.26
|
||||
-120775.66
|
||||
-454270.13
|
||||
-488281.40
|
||||
-332881.24
|
||||
\N
|
||||
113333.51
|
||||
-311200.38
|
||||
355731.15
|
||||
155154.56
|
||||
469754.45
|
||||
-168023.72
|
||||
-479427.28
|
||||
243797.84
|
||||
323948.38
|
||||
425953.89
|
||||
-119177.18
|
||||
180678.00
|
||||
426571.91
|
||||
65894.05
|
||||
\N
|
||||
-389103.14
|
||||
426557.67
|
||||
-403492.88
|
||||
292354.04
|
||||
195771.55
|
||||
-348533.49
|
||||
-2206.12
|
||||
425633.57
|
||||
-453156.39
|
||||
15382.26
|
||||
404980.85
|
||||
-401394.64
|
||||
\N
|
||||
-241207.65
|
||||
342900.81
|
||||
-171471.67
|
||||
81593.45
|
||||
-458067.19
|
||||
-306441.87
|
||||
\N
|
||||
-411424.46
|
||||
-318165.32
|
||||
30912.14
|
||||
\N
|
||||
49720.90
|
||||
351963.89
|
||||
238010.43
|
||||
404837.38
|
||||
275021.74
|
||||
126672.84
|
||||
439889.24
|
||||
-324251.18
|
||||
133075.86
|
||||
\N
|
||||
-198536.50
|
||||
206972.33
|
||||
170209.43
|
||||
-483750.81
|
||||
\N
|
||||
327444.80
|
||||
75763.63
|
||||
9840.43
|
||||
15700.78
|
||||
-51623.99
|
||||
-218733.26
|
||||
-36204.85
|
||||
60701.28
|
||||
-190014.00
|
||||
150597.22
|
||||
13545.90
|
||||
-314080.96
|
||||
-427964.35
|
||||
15262.72
|
||||
461174.33
|
||||
169218.74
|
||||
-74740.49
|
||||
-384598.83
|
||||
-483728.30
|
||||
287537.47
|
||||
234918.04
|
||||
-433550.83
|
||||
-230734.17
|
||||
323698.65
|
||||
-146197.04
|
||||
-255563.61
|
||||
83532.71
|
||||
-469513.46
|
||||
-36592.36
|
||||
-73146.17
|
||||
285947.07
|
||||
150015.40
|
||||
\N
|
||||
\N
|
||||
-209659.65
|
||||
355722.96
|
||||
243539.28
|
||||
-32803.88
|
||||
477435.65
|
||||
\N
|
||||
417338.19
|
||||
\N
|
||||
261176.47
|
||||
267675.86
|
||||
-229013.85
|
||||
-116379.58
|
||||
-476925.33
|
||||
-20226.29
|
||||
-143918.96
|
||||
143456.45
|
||||
306561.97
|
||||
290244.64
|
||||
119367.95
|
||||
252541.23
|
||||
-345895.39
|
||||
163329.59
|
||||
-113415.56
|
||||
-444697.34
|
||||
406232.17
|
||||
\N
|
||||
-100528.56
|
||||
-29727.60
|
||||
-432245.57
|
||||
-78154.99
|
||||
-40228.56
|
||||
388482.70
|
||||
-360892.31
|
||||
397567.58
|
||||
-61500.50
|
||||
197420.99
|
||||
-53405.45
|
||||
-10035.31
|
||||
307734.63
|
||||
-476264.93
|
||||
-187896.84
|
||||
74967.90
|
||||
-96352.04
|
||||
-204654.09
|
||||
-314590.02
|
||||
-498658.17
|
||||
\N
|
||||
459916.44
|
||||
-294815.05
|
||||
20507.27
|
||||
\N
|
||||
473415.90
|
||||
150774.51
|
||||
185491.97
|
||||
-74069.01
|
||||
\N
|
||||
46254.06
|
||||
-367453.99
|
||||
-168238.39
|
||||
-329399.97
|
||||
359048.54
|
||||
422343.40
|
||||
-380964.05
|
||||
-470561.40
|
||||
496663.18
|
||||
380409.42
|
||||
44918.95
|
||||
324580.02
|
||||
479079.72
|
||||
177174.87
|
||||
\N
|
||||
457126.55
|
||||
-112441.99
|
||||
-430676.25
|
||||
-135129.13
|
||||
336449.85
|
||||
487338.40
|
||||
7167.97
|
||||
-1800.51
|
||||
-291559.23
|
||||
304700.54
|
||||
-120904.61
|
||||
114795.52
|
||||
-430214.95
|
||||
408084.32
|
||||
-191474.36
|
||||
450118.77
|
||||
-352847.81
|
||||
437584.98
|
||||
156887.65
|
||||
\N
|
||||
-342586.53
|
||||
-79521.47
|
||||
190267.42
|
||||
463657.84
|
||||
-405475.24
|
||||
151640.70
|
||||
-415959.15
|
||||
107777.66
|
||||
285276.61
|
||||
341585.38
|
||||
-388847.32
|
||||
\N
|
||||
-18905.90
|
||||
\N
|
||||
-51094.80
|
||||
-398920.32
|
||||
-86554.74
|
||||
-239996.08
|
||||
-159324.69
|
||||
98208.93
|
||||
127700.52
|
||||
495535.34
|
||||
344071.85
|
||||
348527.75
|
||||
-159520.00
|
||||
\N
|
||||
341431.83
|
||||
33083.75
|
||||
-391284.15
|
||||
-192247.31
|
||||
-472981.85
|
||||
-205808.33
|
||||
-138646.73
|
||||
\N
|
||||
\N
|
||||
-310383.84
|
||||
-120621.38
|
||||
-67352.75
|
||||
434226.84
|
||||
460706.11
|
||||
-447900.16
|
||||
21469.25
|
||||
\N
|
||||
218925.44
|
||||
-413275.69
|
||||
-207067.87
|
||||
39712.27
|
||||
67008.72
|
||||
456794.17
|
||||
-379796.06
|
||||
261767.80
|
||||
-466546.12
|
||||
-305730.53
|
||||
\N
|
||||
-364597.47
|
||||
\N
|
||||
458787.41
|
||||
81602.89
|
||||
-271359.05
|
||||
-361870.59
|
||||
-28626.33
|
||||
481330.97
|
||||
-454201.68
|
||||
\N
|
||||
-287344.91
|
||||
-321038.68
|
||||
-449334.66
|
||||
-327779.24
|
||||
488133.53
|
||||
-329401.54
|
||||
316435.73
|
||||
60517.74
|
||||
-233468.01
|
||||
354078.72
|
||||
475270.56
|
||||
-276973.48
|
||||
2820.02
|
||||
-305523.48
|
||||
-119945.40
|
||||
-29204.15
|
||||
11065.46
|
||||
\N
|
||||
\N
|
||||
-349221.53
|
||||
402110.01
|
||||
-454995.32
|
||||
-830.00
|
||||
-463136.68
|
||||
\N
|
||||
-300999.19
|
||||
370635.37
|
||||
-292020.51
|
||||
-239004.63
|
||||
340136.68
|
||||
-262815.89
|
||||
-184908.59
|
||||
\N
|
||||
\N
|
||||
141849.58
|
||||
-498941.55
|
||||
95873.74
|
||||
-285016.93
|
||||
-107089.11
|
||||
-13721.30
|
||||
457191.81
|
||||
155699.77
|
||||
86327.14
|
||||
395889.04
|
||||
-229107.82
|
||||
324853.91
|
||||
-498107.17
|
||||
386767.59
|
||||
219841.13
|
||||
-27583.14
|
||||
-149702.20
|
||||
146393.57
|
||||
-437989.04
|
||||
159841.53
|
||||
32498.50
|
||||
396403.30
|
||||
-315063.83
|
||||
\N
|
||||
22649.64
|
||||
215343.21
|
||||
-175059.30
|
||||
-1847.18
|
||||
102497.28
|
||||
-247295.07
|
||||
332109.98
|
||||
-235782.85
|
||||
-295096.68
|
||||
\N
|
||||
498125.83
|
||||
-333733.57
|
||||
-433530.70
|
||||
449518.21
|
||||
316400.65
|
||||
280480.98
|
||||
180453.94
|
||||
457876.49
|
||||
412833.95
|
||||
428460.60
|
||||
-10056.74
|
||||
-214948.53
|
||||
37814.95
|
||||
102477.82
|
||||
-225564.43
|
||||
-92130.07
|
||||
-155741.02
|
||||
78450.91
|
||||
343105.39
|
||||
-130527.09
|
||||
33079.19
|
||||
329362.42
|
||||
200577.60
|
||||
212415.40
|
||||
-311348.62
|
||||
-21477.69
|
||||
333801.57
|
||||
-353712.01
|
||||
-433106.23
|
||||
-26081.60
|
||||
\N
|
||||
-163820.36
|
||||
151893.43
|
||||
205173.27
|
||||
-393163.22
|
||||
277938.44
|
||||
-276107.66
|
||||
-304649.71
|
||||
171386.20
|
||||
-306944.28
|
||||
370017.46
|
||||
249675.98
|
||||
-72023.48
|
||||
-372187.26
|
||||
-238104.04
|
||||
354749.41
|
||||
389572.21
|
||||
365556.59
|
||||
235734.34
|
||||
\N
|
||||
-280573.81
|
||||
128725.64
|
||||
71656.14
|
||||
400415.05
|
||||
-130616.30
|
||||
244866.96
|
||||
-415742.86
|
||||
-211304.73
|
||||
-267780.95
|
||||
-425028.29
|
||||
170832.02
|
||||
253488.32
|
||||
193520.19
|
||||
-25218.72
|
||||
-277658.68
|
||||
-167409.34
|
||||
-474770.31
|
||||
74591.72
|
||||
\N
|
||||
366618.43
|
||||
-171394.63
|
||||
329032.65
|
||||
-328557.90
|
||||
211902.62
|
||||
60210.12
|
||||
178715.93
|
||||
\N
|
||||
-456832.44
|
||||
344825.40
|
||||
64195.06
|
||||
-370332.57
|
||||
155903.15
|
||||
-265256.14
|
||||
15323.04
|
||||
\N
|
||||
233809.17
|
||||
411862.69
|
||||
6551.58
|
||||
-461516.27
|
||||
420681.92
|
||||
233340.82
|
||||
-373891.60
|
||||
440798.68
|
||||
-319872.00
|
||||
435051.22
|
||||
377502.70
|
||||
197215.84
|
||||
273887.91
|
||||
-360415.44
|
||||
-41466.42
|
||||
-335436.28
|
||||
441898.09
|
||||
1302.43
|
||||
144990.34
|
||||
188585.87
|
||||
\N
|
||||
174623.04
|
||||
322047.54
|
||||
230563.87
|
||||
-300142.22
|
||||
-120404.31
|
||||
21472.79
|
||||
444194.03
|
||||
80999.42
|
||||
83236.09
|
||||
-414005.44
|
||||
-181501.32
|
||||
48402.05
|
||||
181956.91
|
||||
-261939.44
|
||||
-155431.06
|
||||
388392.94
|
||||
337512.20
|
||||
-492902.69
|
||||
\N
|
||||
481390.20
|
||||
\N
|
||||
494812.78
|
||||
477359.18
|
||||
\N
|
||||
208828.94
|
||||
-51946.00
|
||||
378432.41
|
||||
137447.10
|
||||
-235678.90
|
||||
-260524.65
|
||||
286759.89
|
||||
86014.42
|
||||
303893.81
|
||||
-185836.92
|
||||
-339715.80
|
||||
474384.49
|
||||
-487805.30
|
||||
\N
|
||||
-135660.84
|
||||
\N
|
||||
-12158.99
|
||||
-24671.78
|
||||
104450.53
|
||||
\N
|
||||
-201014.92
|
||||
-430860.23
|
||||
-132855.90
|
||||
-339856.08
|
||||
431791.82
|
||||
406070.27
|
||||
-80184.35
|
||||
-330535.00
|
||||
371020.10
|
||||
446960.92
|
||||
-461880.13
|
||||
-399502.34
|
||||
221025.82
|
||||
-332205.06
|
||||
-394278.43
|
||||
-361844.93
|
||||
\N
|
||||
35170.25
|
||||
466405.94
|
||||
124030.12
|
||||
-412309.14
|
||||
\N
|
||||
-351146.89
|
||||
51070.28
|
||||
-322829.73
|
||||
233996.37
|
||||
482796.36
|
||||
-355095.23
|
||||
-489800.21
|
||||
21915.01
|
||||
282777.96
|
||||
169811.79
|
||||
301306.60
|
||||
\N
|
||||
-399859.75
|
||||
154814.04
|
||||
65509.24
|
||||
27086.81
|
||||
31231.96
|
||||
-304619.93
|
||||
494051.91
|
||||
-474057.76
|
||||
-263425.16
|
||||
6217.86
|
||||
-341118.74
|
||||
\N
|
||||
-306167.25
|
||||
410631.12
|
||||
-232238.14
|
||||
-316015.14
|
||||
-61724.14
|
||||
\N
|
||||
176961.97
|
||||
277381.68
|
||||
190797.28
|
||||
-457747.77
|
||||
-449873.37
|
||||
-484344.98
|
||||
-367413.81
|
||||
-43132.61
|
||||
121522.02
|
||||
87962.33
|
||||
\N
|
||||
370495.18
|
||||
191540.22
|
||||
-76890.93
|
||||
-232322.04
|
||||
-111047.08
|
|
@ -0,0 +1,534 @@
|
|||
b026324c6904b2a9cb4b88d6d
|
||||
26ab0db90d72e28ad0ba1e22ee
|
||||
6d7fce9fe
|
||||
48a24b70a0b376
|
||||
1dcc
|
||||
9ae0ea9
|
||||
84bc3da1b3e33
|
||||
c30f7472766d25af1dc80
|
||||
7c5aba41f53293b712fd
|
||||
3
|
||||
166d77ac1b46a1ec38aa
|
||||
2737
|
||||
aa6ed9e0f26a6eba784aae8267df19
|
||||
3677643294
|
||||
8c9eb6
|
||||
5b6b41ed9b343fed9cd05a66d366
|
||||
4d095eeac8ed659b1ce69dcef32ed0
|
||||
cf4278314ef8e
|
||||
3bb50ff8eeb
|
||||
dbbf82208
|
||||
fe9d26c3e62
|
||||
2fc57d6f63a9ee7e2f21a26fa5
|
||||
2a53da1a6fb
|
||||
7c67493bd
|
||||
2a52a5e65fc3c43f409550dfa
|
||||
b0771132ab2531a40c99413
|
||||
66a7c1
|
||||
5
|
||||
|
||||
d5b4c7d9b06b60a784
|
||||
4f89
|
||||
bb743fc2a7213949f2
|
||||
4fbafd6948b6529caa2b78e476359
|
||||
fd1bc138d22
|
||||
64
|
||||
fa84f696e31d07f55cd45cc3c
|
||||
87aa6
|
||||
bda81ba88c634b46394
|
||||
59885ebc737617addaaf0cb809
|
||||
90e2a51705594d033a3a
|
||||
21fa2e
|
||||
50a2fabfdd276f57
|
||||
f0287f33e
|
||||
e76
|
||||
93e
|
||||
d3a57c7e953913944c760093574695
|
||||
4a5c26d88c5
|
||||
08c61f3fd48f12fa7c88a
|
||||
a75f5a8337c6699916182
|
||||
6eb5cefde6fcb8463cea70880
|
||||
1aa55
|
||||
7efd8e
|
||||
c92841e00db
|
||||
2d999528ef1dd9ae433698abf3fe7f43
|
||||
8d7e35631f8
|
||||
a074c5929fb8088
|
||||
ec8b36fb3489
|
||||
f0810a
|
||||
6a
|
||||
ecf27a776cdfc
|
||||
1153ebfe1f3
|
||||
9a01df2f09a7bf076c0013
|
||||
d
|
||||
9ca
|
||||
767abe
|
||||
73b4c20
|
||||
b21dfa3fea
|
||||
59
|
||||
105be3ebd0677ec739afd851a6d8
|
||||
30b00ce4c04ddd6
|
||||
721327bfc0e276a87156
|
||||
8faff61bc119
|
||||
f634226e
|
||||
1ff1
|
||||
9f
|
||||
\N
|
||||
1709106f7c5dbb0539104f4ea3c17a7
|
||||
2b44a59db15a3ee2f1605ac82b028
|
||||
46107b341ed115c03ac287f00
|
||||
54a24082cfebcd031a
|
||||
cea4eca
|
||||
37a9aea1b
|
||||
a114f532e70502
|
||||
60f3db995d0676b576
|
||||
091b847d9660c
|
||||
d02a55da8edcc7ec95a59
|
||||
db0aa8bee7afe5a6e363ddcd890
|
||||
071
|
||||
9e01624ab7743bcdbd8cb316
|
||||
4b1709eb0990e993c3125c15
|
||||
1b28e946f4a8ffd5bdf939779c420
|
||||
80ad60f95
|
||||
ed31ca2c02fe2af071ee0089
|
||||
3368d7171580c61644211e59574674b
|
||||
c1cc2eeb27a86f85032b21
|
||||
9672a5e9c09fb71edf28
|
||||
27e4d3594a232b37951be232
|
||||
90fafcc60c7ee9f7a1
|
||||
18be9375e5a
|
||||
b68495714b0e1cad8ebaa1599766a94
|
||||
\N
|
||||
919d117956d3135
|
||||
cf6a52053ff904bca9d96f
|
||||
5aa8301da6367
|
||||
ff7f2c85af133d
|
||||
929ad9494d911e47cd54
|
||||
4df9699916
|
||||
48e3b
|
||||
0fa41cbcef9d3f
|
||||
f9926b3
|
||||
ca4047ce3d85454b067b93
|
||||
2fe51daae840593fb0f4076
|
||||
1181c1834012245d785120e350
|
||||
f3527f99
|
||||
754ee2a8de2d24e4e7
|
||||
83050114704e61f1c58d81d9b607
|
||||
980327c
|
||||
0a5e
|
||||
969049573085c71a5d6dc034e34b56
|
||||
12fc5425
|
||||
353a
|
||||
617119c2d67402b
|
||||
83de9f8ad800dc61db78100
|
||||
87ff3a697a3847ea7f3d
|
||||
ba1f2511fc30
|
||||
df8b712c4fe20a0df93381966
|
||||
f98
|
||||
f83be66
|
||||
52ee216e7ea72db74e87cc1
|
||||
650a1c9c9baa20730b4fcfdbe
|
||||
221a057e91928a3651f31d37
|
||||
|
||||
3be
|
||||
e051e54a58c467f7e3e23e648bf7ab8
|
||||
02e6b43d34792
|
||||
7162e6c8
|
||||
615010a6
|
||||
be8032a3ea812eeb288df3a
|
||||
557ff88fbe890cf23ab4c4b6526ebd
|
||||
26e41e2047e361fd54e4d19ec3
|
||||
6067e932002
|
||||
f52f16
|
||||
3c71a3f3482184ceca06acb7859
|
||||
b17bf99d69b88017
|
||||
f498cc
|
||||
8cf478ccdecd74e358a73857922d0bc
|
||||
95a283596833b3edcd
|
||||
9ae1400
|
||||
fca
|
||||
e6d604c19ab3dad
|
||||
\N
|
||||
b
|
||||
176e
|
||||
409cd9f3
|
||||
0f0254a
|
||||
699598531905f632234819bfa19c34
|
||||
f9c12
|
||||
df05072
|
||||
9f430be862c6c636d25
|
||||
2
|
||||
dc35b9fd881cc59bf54338af5
|
||||
7
|
||||
52154e9782f4ab05f7f77fc4abe6161
|
||||
cd3164cb1a8780dd
|
||||
0c0a5b8
|
||||
c5bb33d902ffd764f88adb1036c
|
||||
e2f06df03efbe62eae471
|
||||
12fd838288a9836dcb33694479b
|
||||
31c76c1c43008d0a9d396
|
||||
027f19cca4a7119da720f7f60314ce
|
||||
63cf7c8db392ec220067
|
||||
a187f54f5661d23769a5ab76651d1f8f
|
||||
36f3
|
||||
2
|
||||
21b97fc756c8732ba5cbf021792257
|
||||
3d1108469b16342a97c5b60b3
|
||||
41075c479e3066c
|
||||
261104cbe0eceac00eaf4bf5d
|
||||
ed6
|
||||
edeaea17b7bb5f989e8879a33c11
|
||||
7b7731085d04d325b618f8f83281d5e
|
||||
f584bd6f9cff10166a302a2ab5bc6e7
|
||||
e42002e140b29fc4
|
||||
8bd50a3a0da6
|
||||
993647e71651a205aba
|
||||
948cd06ca76467
|
||||
3b9be5cbb65a3
|
||||
ae8d333327fdf610b2e985
|
||||
1e1da348199896d5d
|
||||
0372c098401a1
|
||||
e6ce069c60d8e681ccd45b06ff3d47ad
|
||||
34c6e1feaf7f5084f3014d5d11fb72
|
||||
bd918538adde6
|
||||
035032ee8
|
||||
6be7de648b
|
||||
31
|
||||
939444082f2f746b655
|
||||
6f3898aad606
|
||||
3bcd6e8775
|
||||
cb
|
||||
5321951a8
|
||||
\N
|
||||
053ade8bc0514fd9f
|
||||
c1ba58b05f6245f221ad653
|
||||
1454
|
||||
b6e693b66d2003e1d08cb4d
|
||||
e7d14fa651db7754aff22716bfccb
|
||||
cd0a54e70051990d13f1fec
|
||||
1166083fc
|
||||
1041ba7e06b
|
||||
076decdd037ccb810d0e9e1756a9
|
||||
7c6139e8fb296b24
|
||||
cbb8413057f9176473225d
|
||||
301416f843b954c1f
|
||||
49a6957c6e2e1c5ce89cde8898949
|
||||
1ad002f8a
|
||||
6f36dfd82a1b64f6
|
||||
f
|
||||
c5db628ee33ef57f9e6aa
|
||||
8f9654eb7b0c528ed7edc173b692173e
|
||||
c64ee80b
|
||||
da4f2c32a51ddfa1
|
||||
545d8fdb508d46e
|
||||
f5d8eac62167a471f95928c
|
||||
48341ed4f1304fb01623d8f456
|
||||
348bd3ce10ec0
|
||||
9b779599da6
|
||||
f
|
||||
2485938
|
||||
4a6d02b7fc61f162e24ea
|
||||
dae34b
|
||||
a84fb2
|
||||
55fc63933ba0c92102a8e
|
||||
8226197b889d86f722471772777cc
|
||||
fac87b8618ebb0dc9ec3f1b557
|
||||
3d26e13f5daf5e
|
||||
9f3d9739b11c2a4b08ea
|
||||
e4
|
||||
bcb35cddc47f3df844ff2
|
||||
caec6c5b9f4424ac0b44c2cf
|
||||
427e8576c702d4d715
|
||||
4f61029d752be4d45c5e
|
||||
938a35
|
||||
ffbfc1313c9c85
|
||||
3482bfb20c3f103718e
|
||||
214311510e3d55d0291ad717f
|
||||
909596ec6cc7db
|
||||
16b70e
|
||||
1471e2c8fff7ddcce1acd0210c
|
||||
20007c50aa9258083faf59d69a0
|
||||
4479235f75efaad02357cbff
|
||||
\N
|
||||
\N
|
||||
fbaa030eee9a34cefd5248d7c9005
|
||||
4d685096123bcc72d0923df5c
|
||||
3c0efa1ba676ecbc802c3717f291ee
|
||||
bdeaa2482
|
||||
60ec2d50e99cbb811e8
|
||||
90922c
|
||||
64dbc39ab9cf
|
||||
de030a3d4e727eb9
|
||||
26b4cb0930a
|
||||
ac6a20237
|
||||
ee06d5a17b757b231d004946
|
||||
aeb75a20c5efa12e33eb54f1f7599
|
||||
0c4a96bf0bc4
|
||||
2bf1686588c741e0f407
|
||||
9f0ed6cee42549a57
|
||||
6b7e26a
|
||||
8c
|
||||
259a568c9e5262afa3bb020
|
||||
d9296b
|
||||
6f6fcb8d7
|
||||
457126a29df4c8
|
||||
cdd52d64d4c86b2807dfd31c5ee0
|
||||
d4d67ff03c419e3fafc227628690
|
||||
453
|
||||
2c028a63bb4a9b99dc57e
|
||||
b912d22e1bdb0027532bb318
|
||||
a3ab82e89ac30fdc459c5d
|
||||
bcd69f8c3
|
||||
94
|
||||
07ca93ea45d55d28894b8664
|
||||
3910a4fc69883
|
||||
fc28261e2becf14ad69ba
|
||||
af69b1990
|
||||
5dbd27ed12e6ca549c958d61db5
|
||||
9db1725416
|
||||
70d37da46913c0157ee
|
||||
33e2
|
||||
5131e6710ad926457f97
|
||||
849c49cb79d556969520a7ba510fa7
|
||||
ff4da50c05473ef35e9f3442d39f
|
||||
|
||||
4693b22f920e040c716c
|
||||
6c2a40def9f5197fdf4a9fbb98
|
||||
bc88b78c1fca882c19a55bb725134e
|
||||
352ad14d71a6069544a8592da
|
||||
a43e268d90bf08407
|
||||
d70d0dd90a6c3
|
||||
6ba01cd31a75dd3cab2b6800a7e
|
||||
5a592088ddbd5c96f25e13edd9
|
||||
fd1a71f57514f3d96aab5b
|
||||
4268c65769504e17a0bcd91407e23
|
||||
3de
|
||||
62b594
|
||||
1445f5c59eb6ef023569de
|
||||
06b904260b0d751caf00
|
||||
31b0
|
||||
c687a39f
|
||||
d31ba3c1c
|
||||
828007765429cc8470834c483ab625
|
||||
64a
|
||||
4eaed852e6857e6c196f20cfa49
|
||||
2dd746
|
||||
fe
|
||||
8373fa500
|
||||
39
|
||||
f1bbcefb43f8731a660091a
|
||||
642606e93992a316419e
|
||||
0d96f49fdbb
|
||||
47bcdd11e1cd38abf97
|
||||
098ddacdd558720b
|
||||
0116a06b76
|
||||
509a69c52a4bf
|
||||
6b23c0ac4415
|
||||
9492fe88f263d58e0b686885e8c9
|
||||
5c80dc6aeb95
|
||||
2ab5372e91b61384741a2
|
||||
\N
|
||||
36ef14
|
||||
7c1b3b869434ddf685bc503e3067
|
||||
2ba9cf6
|
||||
9a215d19e54bc4b2282e30c33214e3
|
||||
c2cff429a10edd8
|
||||
e049b6ef70e237d8fa
|
||||
96e6cdd58a6ef8e66f5188835
|
||||
080002b079e1c8f0c993
|
||||
aab4cdfa017
|
||||
40b134a
|
||||
7dbfc1a44c7463d842d9adc6481
|
||||
8a318bde4768cb68f23fc193354
|
||||
a9700592
|
||||
d1d39407e2dc464252ef76d6f
|
||||
7488b677139de1cfcff7c7
|
||||
30d310
|
||||
9ac1dce6537ab
|
||||
125dca018389717c78efafb
|
||||
7b95e765
|
||||
ca19fff8824c2
|
||||
71aeb19c
|
||||
4692d489b0638e49682df4f46dacd3c
|
||||
f37053cfdff777709610fe4e
|
||||
51c36ccac
|
||||
2eb2c961c1cbf6
|
||||
\N
|
||||
cf8d7b68cb9a2f36
|
||||
7bbedb4ae7
|
||||
06ec46c55611a466eb7e3edcc009ca6
|
||||
e
|
||||
5ed9cd0ea5a4e55d601027c56a
|
||||
|
||||
64cacf3a42afc
|
||||
90e63000c34506993345355640
|
||||
79bce
|
||||
173bb7
|
||||
c5
|
||||
574ea7c921cb0f25
|
||||
089d56d16dff24f336e4740
|
||||
6870470f1f9afcb4f7c56c9f
|
||||
b97e117fc965
|
||||
7013029
|
||||
e48f6dd481
|
||||
7d00e1e227beef84a9
|
||||
904d4c34241f
|
||||
cb5c0f14
|
||||
3a8a70
|
||||
f51a73164e92052fbb53b4cc2f1fed
|
||||
3c3fecaa0270175
|
||||
2521ef03594
|
||||
fa05756812648f450fb
|
||||
13c2f
|
||||
b39a0729d6182e9
|
||||
15b5ea204fe73
|
||||
d8991afd72d21acd188df1
|
||||
a29fff57ab897338
|
||||
de549b3ed5a024534c007125c
|
||||
2fcf3e5c3e3
|
||||
7427b6daec5c3f
|
||||
473
|
||||
8
|
||||
a5d9
|
||||
840410976ac2eeab58e1ca8bf46c2b7
|
||||
1db9cc85a336f1291ea19922
|
||||
db808f3548cda91
|
||||
2e379ce80af12bd7ed56d0338c
|
||||
a
|
||||
ea67a7c847f6620fc894f0ba10044
|
||||
0e
|
||||
52e97d975af7201d8
|
||||
d95e6f08184d8ff
|
||||
19762476fa
|
||||
42f278f3534f3f2be0abaed71
|
||||
f0aba11835e4e1d94
|
||||
e8534cf677046eafb8f5f761865
|
||||
ffbee273c7bb
|
||||
2bb77f6e780
|
||||
c77e81851c491
|
||||
e
|
||||
a9f45d765b01a030d5d317
|
||||
ff7345a22bc360
|
||||
c87363ba121297b063e83
|
||||
13ea32e9618d
|
||||
40304f6c2a7e92c1c66ff4208e
|
||||
a781b4a21419abfdf5eb467e4d48908
|
||||
8a65656e514b2b3ef8f86310aaf85
|
||||
4
|
||||
90b7b2862e3dbc8f0eef3dfc6075bfa
|
||||
eb94a1c
|
||||
a58abb5def4fa43840e6e2716
|
||||
260e6eaebb
|
||||
42415d712bf83944dcd1204e
|
||||
305254fc3b849150b5
|
||||
5bbd7f8471dcd3621
|
||||
2ae0548115a250
|
||||
0c1988e9
|
||||
76f98bef45639b7
|
||||
0d5a28f01dc
|
||||
b71
|
||||
c046576faa4d49eff8
|
||||
\N
|
||||
c1e8d01c
|
||||
10c86c457ea050455a742da4f8
|
||||
ea7676af85c71c7eeca635
|
||||
6a07137227404d
|
||||
a4
|
||||
7186172
|
||||
8150f31c9a15401c
|
||||
f1bb9057a9938bfa
|
||||
22b482be08f424ec4
|
||||
21daea994293589
|
||||
15bff393f6b17fef24786dd6f9
|
||||
d5a2d
|
||||
4b3b5dd9370543e
|
||||
b4a93b2ac4341945d06
|
||||
d384447812e0
|
||||
4e3c97e9b8f7
|
||||
f7d4d644b2a1d373
|
||||
5102c
|
||||
b9531f725674b28
|
||||
1aa16e7e34285797c1439
|
||||
51aa762ea14b40fb8876c887eea6
|
||||
45a62d3d5d3e946250904697486591
|
||||
b3f1a8
|
||||
243524767bf846d
|
||||
\N
|
||||
8
|
||||
95
|
||||
45a922872
|
||||
dd2497eb1e3da8d513d2
|
||||
7821db9e14d4f
|
||||
24c4f085de60d7c0c6ea3fc6bc
|
||||
e4c9f8c68596d7d
|
||||
afd6c8cb0f2516b87f24bbd8
|
||||
61d2e457c70949
|
||||
d2d362cdc657
|
||||
3605f9d27fd6d72
|
||||
32de91d66fe5bf537530
|
||||
859e1a08b65
|
||||
9b5a55f
|
||||
4116cda9fddeb843964002
|
||||
e81f3b2c0ca566ad3dbbc6e234
|
||||
0d3b1d54
|
||||
10c440be5c0bca95
|
||||
7dad841f
|
||||
a61f041967972e805ccfee55c
|
||||
deee9cc16e92ab197
|
||||
7627554073c1f56b9e
|
||||
21bebcbfd2e2282f84
|
||||
7b121a83eeb91db8
|
||||
\N
|
||||
4668b2019ebff30b970ccde7026e779
|
||||
2aa
|
||||
eeca4d01996bdc8af7e4dbd01
|
||||
|
||||
a3431c0758a8c
|
||||
52c07a135df1dda388
|
||||
6ee649b5a
|
||||
c4884
|
||||
dab3abb06371c8a32dda2231e6
|
||||
e0
|
||||
92
|
||||
8fdb98
|
||||
cfbb1
|
||||
96acd3e9
|
||||
73be4a4f277862904a52
|
||||
fa
|
||||
051b8f9c0d6d2b2
|
||||
bde
|
||||
23d51c87b6c931d314c88e44edcbc06
|
||||
e822a0497153
|
||||
1963a88d14ac0c9b7fe2
|
||||
3ffaff39b37650c5cf
|
||||
dc0
|
||||
aed3d3de6c6d9
|
||||
2347412d3332140012f
|
||||
0
|
||||
\N
|
||||
7b311463334cd1a
|
||||
973a0eb
|
||||
d1cc8f07f56a62d1386a
|
||||
905f2bb7e8852fb96cb9aeff95
|
||||
b026324c6904b2a9cb4b88d6d
|
||||
26ab0db90d72e28ad0ba1e22ee
|
||||
6d7fce9fe
|
||||
48a24b70a0b376
|
||||
1dcc
|
||||
9ae0ea9
|
||||
84bc3da1b3e33
|
||||
c30f7472766d25af1dc80
|
||||
7c5aba41f53293b712fd
|
||||
3
|
||||
166d77ac1b46a1ec38aa
|
||||
b026324c6904b2a9cb4b88d6d
|
||||
26ab0db90d72e28ad0ba1e22ee
|
||||
6d7fce9fe
|
||||
48a24b70a0b376
|
||||
1dcc
|
||||
9ae0ea9
|
||||
84bc3da1b3e33
|
||||
c30f7472766d25af1dc80
|
||||
7c5aba41f53293b712fd
|
||||
3
|
||||
166d77ac1b46a1ec38aa
|
|
@ -0,0 +1,600 @@
|
|||
2019-11-22
|
||||
1995-05-20
|
||||
1989-04-12
|
||||
\N
|
||||
2023-10-21
|
||||
2028-11-27
|
||||
2024-05-24
|
||||
2018-08-31
|
||||
1988-07-16
|
||||
\N
|
||||
2019-05-21
|
||||
1972-12-12
|
||||
1975-05-07
|
||||
2022-08-11
|
||||
1975-06-27
|
||||
2004-10-26
|
||||
1983-05-14
|
||||
2015-06-20
|
||||
1978-02-17
|
||||
\N
|
||||
1970-12-04
|
||||
1977-03-22
|
||||
2032-10-28
|
||||
2004-03-02
|
||||
1992-10-29
|
||||
2021-05-05
|
||||
2025-06-25
|
||||
2036-07-15
|
||||
1981-03-10
|
||||
2012-12-04
|
||||
1996-02-02
|
||||
1992-12-31
|
||||
2003-02-03
|
||||
2008-12-15
|
||||
1994-11-19
|
||||
2036-09-20
|
||||
2034-10-21
|
||||
2019-11-16
|
||||
1995-01-23
|
||||
1974-10-11
|
||||
2027-02-26
|
||||
2027-08-08
|
||||
2037-08-30
|
||||
2026-01-08
|
||||
2023-09-18
|
||||
2012-03-07
|
||||
2011-08-29
|
||||
1979-11-06
|
||||
2033-09-25
|
||||
1986-06-08
|
||||
2020-01-13
|
||||
2015-09-19
|
||||
2035-11-16
|
||||
1985-11-12
|
||||
2002-05-26
|
||||
2002-01-30
|
||||
1980-01-26
|
||||
2037-03-23
|
||||
2016-02-23
|
||||
2023-04-21
|
||||
2033-04-11
|
||||
1985-09-09
|
||||
1993-01-29
|
||||
2015-06-28
|
||||
2036-04-06
|
||||
2031-12-08
|
||||
2014-02-26
|
||||
1994-01-23
|
||||
2019-01-27
|
||||
1978-08-01
|
||||
1979-05-21
|
||||
2022-12-12
|
||||
\N
|
||||
\N
|
||||
2007-10-16
|
||||
\N
|
||||
2037-05-17
|
||||
2034-08-14
|
||||
2014-12-20
|
||||
2033-03-13
|
||||
2010-10-03
|
||||
\N
|
||||
1992-12-23
|
||||
2029-05-15
|
||||
1993-07-17
|
||||
2007-11-06
|
||||
2024-10-22
|
||||
2019-03-02
|
||||
2026-07-24
|
||||
1973-03-29
|
||||
2006-06-02
|
||||
2032-06-11
|
||||
1990-01-28
|
||||
2019-06-16
|
||||
1970-04-21
|
||||
2012-09-17
|
||||
1993-10-06
|
||||
1993-02-24
|
||||
2014-12-07
|
||||
2018-09-17
|
||||
2015-05-22
|
||||
1983-01-19
|
||||
1978-11-08
|
||||
\N
|
||||
2021-06-01
|
||||
1970-11-19
|
||||
\N
|
||||
2030-06-12
|
||||
2035-08-11
|
||||
2021-01-31
|
||||
\N
|
||||
1996-06-25
|
||||
1974-11-28
|
||||
1989-04-28
|
||||
1998-07-17
|
||||
2029-09-14
|
||||
2010-01-06
|
||||
2013-05-04
|
||||
\N
|
||||
2023-10-03
|
||||
1998-02-06
|
||||
1984-07-16
|
||||
2008-01-11
|
||||
2015-06-23
|
||||
2026-04-02
|
||||
2021-11-26
|
||||
2012-07-09
|
||||
1975-01-07
|
||||
2022-12-04
|
||||
2013-01-22
|
||||
2001-02-13
|
||||
2001-11-20
|
||||
2008-12-27
|
||||
2030-07-05
|
||||
1970-07-22
|
||||
2037-07-11
|
||||
2034-12-24
|
||||
2022-04-04
|
||||
2018-03-24
|
||||
2037-03-25
|
||||
1972-06-24
|
||||
2034-08-15
|
||||
\N
|
||||
2030-01-12
|
||||
2000-08-15
|
||||
\N
|
||||
2034-07-25
|
||||
2030-04-06
|
||||
2003-08-22
|
||||
2012-04-17
|
||||
\N
|
||||
1992-11-30
|
||||
2017-03-31
|
||||
2004-06-19
|
||||
1974-02-07
|
||||
1992-11-02
|
||||
2006-07-03
|
||||
2030-09-03
|
||||
1989-12-15
|
||||
1992-05-03
|
||||
1981-05-05
|
||||
1983-06-04
|
||||
2010-08-13
|
||||
\N
|
||||
2022-06-15
|
||||
2011-03-10
|
||||
1973-11-06
|
||||
1998-03-22
|
||||
1992-07-20
|
||||
2022-01-15
|
||||
2022-05-03
|
||||
1972-06-08
|
||||
1976-10-27
|
||||
2023-12-13
|
||||
2027-08-01
|
||||
2009-05-04
|
||||
2021-03-19
|
||||
2025-04-09
|
||||
1988-07-28
|
||||
2023-07-31
|
||||
2003-07-25
|
||||
\N
|
||||
1995-12-12
|
||||
1992-04-19
|
||||
1997-08-20
|
||||
2028-01-13
|
||||
1980-04-18
|
||||
\N
|
||||
2030-03-08
|
||||
2000-03-22
|
||||
1987-03-17
|
||||
2008-03-10
|
||||
1982-04-02
|
||||
1970-01-29
|
||||
2032-03-28
|
||||
1991-10-03
|
||||
\N
|
||||
\N
|
||||
\N
|
||||
2035-07-02
|
||||
1988-11-27
|
||||
2034-08-29
|
||||
2004-11-29
|
||||
\N
|
||||
2013-08-28
|
||||
1997-04-06
|
||||
1994-10-12
|
||||
2027-06-18
|
||||
1971-01-10
|
||||
2035-02-23
|
||||
2036-10-25
|
||||
2033-06-29
|
||||
\N
|
||||
2028-07-29
|
||||
2003-03-18
|
||||
1994-11-29
|
||||
2001-10-08
|
||||
2019-03-10
|
||||
2022-05-19
|
||||
1971-07-13
|
||||
1979-07-25
|
||||
1980-11-27
|
||||
2030-02-20
|
||||
1973-01-02
|
||||
1992-12-20
|
||||
2034-03-04
|
||||
\N
|
||||
2036-11-27
|
||||
\N
|
||||
2023-09-22
|
||||
2023-07-13
|
||||
1996-02-13
|
||||
1974-02-11
|
||||
1996-08-07
|
||||
1998-06-13
|
||||
2035-04-21
|
||||
1996-03-04
|
||||
2019-05-04
|
||||
2024-06-01
|
||||
2007-02-20
|
||||
2003-07-29
|
||||
2000-07-13
|
||||
2011-09-08
|
||||
2019-06-10
|
||||
1975-02-25
|
||||
2002-01-16
|
||||
\N
|
||||
1986-04-08
|
||||
1986-03-08
|
||||
2019-06-21
|
||||
1988-09-19
|
||||
2035-11-30
|
||||
1986-11-27
|
||||
2037-03-10
|
||||
2030-07-15
|
||||
1988-06-29
|
||||
\N
|
||||
1980-04-23
|
||||
2020-01-19
|
||||
2012-09-14
|
||||
1983-12-28
|
||||
1987-02-10
|
||||
2029-09-21
|
||||
1972-03-12
|
||||
2035-11-20
|
||||
1996-10-25
|
||||
1981-02-05
|
||||
2031-09-10
|
||||
1986-04-24
|
||||
1987-04-26
|
||||
2017-06-10
|
||||
1980-07-26
|
||||
2009-10-18
|
||||
1981-05-24
|
||||
2026-07-17
|
||||
2015-09-30
|
||||
2032-05-02
|
||||
1987-08-17
|
||||
2034-10-20
|
||||
2008-11-20
|
||||
1986-11-06
|
||||
1980-04-06
|
||||
1982-11-12
|
||||
1975-01-24
|
||||
2015-04-25
|
||||
1980-03-14
|
||||
1998-04-07
|
||||
2020-12-16
|
||||
2004-10-31
|
||||
1975-02-26
|
||||
2024-10-29
|
||||
1974-10-29
|
||||
1986-09-21
|
||||
2037-11-06
|
||||
\N
|
||||
1979-06-02
|
||||
2001-06-28
|
||||
\N
|
||||
2024-10-14
|
||||
2031-03-22
|
||||
1983-11-27
|
||||
1989-01-01
|
||||
\N
|
||||
2037-03-05
|
||||
2002-12-28
|
||||
\N
|
||||
2031-12-20
|
||||
2002-08-30
|
||||
1997-11-16
|
||||
2023-07-17
|
||||
2010-04-02
|
||||
2019-09-21
|
||||
1978-03-04
|
||||
1992-11-08
|
||||
2002-02-11
|
||||
2012-06-06
|
||||
2012-11-23
|
||||
1997-09-27
|
||||
1972-12-18
|
||||
1985-10-25
|
||||
2028-09-29
|
||||
1976-03-31
|
||||
1996-06-26
|
||||
2014-07-06
|
||||
2032-05-21
|
||||
2018-12-18
|
||||
\N
|
||||
1974-06-02
|
||||
\N
|
||||
2024-09-29
|
||||
1996-07-03
|
||||
1973-02-11
|
||||
2019-12-02
|
||||
2035-09-04
|
||||
2008-10-10
|
||||
2018-05-16
|
||||
2020-04-17
|
||||
2030-05-04
|
||||
2002-10-27
|
||||
2036-03-04
|
||||
2002-10-29
|
||||
2000-06-22
|
||||
1981-01-01
|
||||
2001-12-31
|
||||
2003-09-25
|
||||
2020-12-07
|
||||
2016-11-04
|
||||
2026-02-23
|
||||
1990-12-16
|
||||
2033-10-15
|
||||
2003-07-29
|
||||
1998-10-09
|
||||
2006-04-02
|
||||
1970-06-06
|
||||
2015-02-06
|
||||
2004-06-23
|
||||
2015-12-08
|
||||
2024-06-26
|
||||
1997-11-07
|
||||
2023-05-09
|
||||
1992-11-16
|
||||
2016-04-17
|
||||
1996-11-09
|
||||
2010-09-12
|
||||
2012-10-17
|
||||
\N
|
||||
1998-07-19
|
||||
1973-11-11
|
||||
1992-11-15
|
||||
2032-04-22
|
||||
2031-09-14
|
||||
2005-03-25
|
||||
1993-03-17
|
||||
2004-03-01
|
||||
2009-10-06
|
||||
\N
|
||||
1993-06-07
|
||||
1994-07-31
|
||||
1987-08-07
|
||||
2034-05-01
|
||||
2025-06-19
|
||||
2019-10-13
|
||||
1977-03-25
|
||||
1978-01-16
|
||||
2003-09-29
|
||||
2002-04-07
|
||||
2024-01-12
|
||||
1984-08-29
|
||||
2036-08-16
|
||||
1972-05-14
|
||||
2019-01-24
|
||||
2009-12-19
|
||||
1982-07-26
|
||||
2012-01-22
|
||||
1983-07-22
|
||||
1978-05-27
|
||||
1974-04-02
|
||||
2008-02-15
|
||||
2003-01-14
|
||||
1989-03-30
|
||||
2009-12-14
|
||||
2030-07-05
|
||||
2032-07-22
|
||||
2016-05-17
|
||||
2031-07-02
|
||||
\N
|
||||
1980-07-28
|
||||
2031-09-06
|
||||
1975-01-20
|
||||
2019-05-05
|
||||
2025-05-02
|
||||
2001-12-27
|
||||
1991-09-27
|
||||
2021-12-14
|
||||
\N
|
||||
2027-03-24
|
||||
2009-01-07
|
||||
1985-02-04
|
||||
\N
|
||||
\N
|
||||
1996-12-23
|
||||
2012-05-22
|
||||
1980-02-29
|
||||
2018-06-14
|
||||
1981-07-04
|
||||
1993-04-25
|
||||
2027-03-09
|
||||
1981-01-10
|
||||
\N
|
||||
1974-06-16
|
||||
1985-10-15
|
||||
1988-01-11
|
||||
\N
|
||||
1997-03-15
|
||||
1982-02-26
|
||||
1991-05-13
|
||||
2015-09-03
|
||||
\N
|
||||
1987-06-05
|
||||
1971-03-29
|
||||
2002-03-28
|
||||
2032-03-25
|
||||
1983-07-23
|
||||
\N
|
||||
1999-01-15
|
||||
2014-01-31
|
||||
2021-09-02
|
||||
1999-01-02
|
||||
2001-03-24
|
||||
2002-01-21
|
||||
2007-08-06
|
||||
\N
|
||||
2032-09-07
|
||||
1984-11-22
|
||||
2035-06-18
|
||||
1994-07-29
|
||||
2023-04-20
|
||||
2010-02-17
|
||||
2014-08-23
|
||||
2017-02-08
|
||||
2036-10-24
|
||||
1994-11-14
|
||||
1979-04-19
|
||||
1973-10-09
|
||||
1999-01-17
|
||||
2012-07-08
|
||||
2012-12-03
|
||||
1980-11-22
|
||||
2002-02-28
|
||||
\N
|
||||
\N
|
||||
2023-03-01
|
||||
\N
|
||||
1981-05-13
|
||||
2026-01-29
|
||||
2034-02-14
|
||||
2031-09-22
|
||||
1986-11-13
|
||||
2031-10-25
|
||||
2010-10-13
|
||||
2036-09-11
|
||||
2027-09-30
|
||||
\N
|
||||
1990-07-28
|
||||
2001-05-05
|
||||
2029-01-10
|
||||
1972-10-09
|
||||
2012-03-25
|
||||
1987-04-06
|
||||
1998-06-04
|
||||
\N
|
||||
2008-12-26
|
||||
\N
|
||||
1979-04-23
|
||||
2010-01-16
|
||||
1982-07-23
|
||||
2013-08-21
|
||||
1982-12-23
|
||||
1997-04-03
|
||||
1986-02-20
|
||||
2034-09-08
|
||||
\N
|
||||
1999-05-14
|
||||
1989-11-18
|
||||
1987-09-17
|
||||
\N
|
||||
1978-05-03
|
||||
2005-05-22
|
||||
2001-02-11
|
||||
1980-07-28
|
||||
1984-04-11
|
||||
2010-06-02
|
||||
2023-09-05
|
||||
2020-12-29
|
||||
1997-06-06
|
||||
2005-10-01
|
||||
2023-01-17
|
||||
2013-04-27
|
||||
2018-05-23
|
||||
2022-11-23
|
||||
1971-05-09
|
||||
1997-12-05
|
||||
2008-08-22
|
||||
2025-05-23
|
||||
1989-02-18
|
||||
\N
|
||||
2035-08-21
|
||||
1995-02-09
|
||||
1994-11-28
|
||||
1980-07-20
|
||||
1998-09-02
|
||||
1993-01-20
|
||||
1979-12-21
|
||||
2010-03-05
|
||||
\N
|
||||
1989-01-07
|
||||
2015-10-09
|
||||
2006-08-23
|
||||
\N
|
||||
2003-04-27
|
||||
2029-03-21
|
||||
2030-09-08
|
||||
2022-05-05
|
||||
1993-10-22
|
||||
2031-04-01
|
||||
2015-03-10
|
||||
1988-12-08
|
||||
2004-07-07
|
||||
1978-01-11
|
||||
2013-09-28
|
||||
2030-02-25
|
||||
2036-09-15
|
||||
2019-07-16
|
||||
2034-09-05
|
||||
2003-11-07
|
||||
2000-10-02
|
||||
2002-09-19
|
||||
2016-03-16
|
||||
1986-02-06
|
||||
2018-07-07
|
||||
1972-02-07
|
||||
2001-05-06
|
||||
1996-10-05
|
||||
1995-12-26
|
||||
1990-05-13
|
||||
1983-03-10
|
||||
2011-08-03
|
||||
2029-01-26
|
||||
2022-04-24
|
||||
1973-09-03
|
||||
2002-09-19
|
||||
1982-04-30
|
||||
2023-11-30
|
||||
1992-05-13
|
||||
\N
|
||||
1986-05-11
|
||||
1976-12-31
|
||||
2009-10-23
|
||||
2022-02-08
|
||||
1999-02-24
|
||||
2007-09-30
|
||||
1991-11-03
|
||||
1985-06-14
|
||||
1973-06-15
|
||||
1972-07-18
|
||||
2012-07-05
|
||||
1989-01-17
|
||||
1982-02-13
|
||||
1994-11-23
|
||||
2008-08-01
|
||||
2032-11-22
|
||||
1976-01-04
|
||||
2037-04-11
|
||||
2011-02-24
|
||||
1992-11-16
|
||||
2025-11-25
|
||||
2013-02-08
|
||||
\N
|
||||
2002-05-13
|
||||
1983-10-15
|
|
@ -0,0 +1,600 @@
|
|||
3926.686551
|
||||
-3078.593513
|
||||
-1523.429224
|
||||
-669.684166
|
||||
234.904986
|
||||
2226.918930
|
||||
-4718.612498
|
||||
2093.397950
|
||||
-1914.453566
|
||||
4027.226232
|
||||
391.864393
|
||||
4525.522995
|
||||
-158.177421
|
||||
-4801.751557
|
||||
3410.161728
|
||||
2481.256122
|
||||
-1640.183123
|
||||
1611.826046
|
||||
-2448.451169
|
||||
-1845.197308
|
||||
2683.842745
|
||||
-3542.172810
|
||||
3089.066696
|
||||
-2517.697386
|
||||
1892.967423
|
||||
727.945774
|
||||
-3513.884856
|
||||
-179.0
|
||||
\N
|
||||
-1469.088605
|
||||
-4739.206973
|
||||
145.945556
|
||||
4549.133936
|
||||
-4208.637634
|
||||
-1936.179384
|
||||
4602.395105
|
||||
-1804.145345
|
||||
2053.716787
|
||||
\N
|
||||
1456.927004
|
||||
4702.396402
|
||||
3268.547085
|
||||
-745.573619
|
||||
4625.357450
|
||||
-4765.915573
|
||||
-2790.475971
|
||||
-3403.123686
|
||||
-2817.878573
|
||||
-3274.289481
|
||||
-2413.766411
|
||||
-1374.753772
|
||||
-1924.610286
|
||||
475.397257
|
||||
3510.523368
|
||||
3814.010913
|
||||
-1859.390939
|
||||
168.847235
|
||||
2264.721811
|
||||
-2223.366707
|
||||
-1753.785013
|
||||
-3945.658993
|
||||
-4315.231992
|
||||
2746.639442
|
||||
-2342.824418
|
||||
-1044.805914
|
||||
3584.727458
|
||||
-3822.565833
|
||||
-2102.212746
|
||||
\N
|
||||
1818.932987
|
||||
-3585.541038
|
||||
1452.891425
|
||||
1165.643202
|
||||
2412.440259
|
||||
-1608.959230
|
||||
-2272.316845
|
||||
3352.859341
|
||||
\N
|
||||
1067.661511
|
||||
373.127556
|
||||
2907.255277
|
||||
\N
|
||||
\N
|
||||
-4119.844655
|
||||
425.751771
|
||||
-4652.598253
|
||||
3178.567043
|
||||
-2664.539180
|
||||
-1099.284997
|
||||
-2144.177909
|
||||
1805.341405
|
||||
\N
|
||||
2945.853662
|
||||
-3351.437225
|
||||
-4875.769736
|
||||
\N
|
||||
-412.211551
|
||||
-3334.087165
|
||||
1695.085786
|
||||
2535.912119
|
||||
\N
|
||||
374.050255
|
||||
-4771.851972
|
||||
2954.420418
|
||||
1929.919923
|
||||
-3434.967221
|
||||
\N
|
||||
2700.864965
|
||||
-2783.682392
|
||||
4985.334217
|
||||
-2062.958207
|
||||
4153.150501
|
||||
3012.590980
|
||||
-3011.189139
|
||||
\N
|
||||
2721.497588
|
||||
-4169.312617
|
||||
-64.988860
|
||||
-4188.005384
|
||||
1744.599224
|
||||
1067.803538
|
||||
-1660.431575
|
||||
2804.799493
|
||||
3088.508415
|
||||
-4646.231299
|
||||
4578.547883
|
||||
-294.892171
|
||||
-561.912989
|
||||
1867.265677
|
||||
11.839394
|
||||
582.688896
|
||||
1502.454824
|
||||
\N
|
||||
\N
|
||||
4301.881413
|
||||
\N
|
||||
-2194.430268
|
||||
-614.422083
|
||||
-690.354777
|
||||
4779.886957
|
||||
4531.156281
|
||||
4944.867236
|
||||
3858.390189
|
||||
3506.107763
|
||||
-4894.456207
|
||||
\N
|
||||
1322.857973
|
||||
2578.630265
|
||||
-2175.318379
|
||||
-4086.425476
|
||||
4630.773663
|
||||
-3800.461310
|
||||
3753.750072
|
||||
\N
|
||||
647.435317
|
||||
\N
|
||||
4110.477110
|
||||
514.193226
|
||||
-3441.902748
|
||||
2573.758703
|
||||
664.845479
|
||||
-384.002535
|
||||
2023.851111
|
||||
-4615.566879
|
||||
\N
|
||||
521.022754
|
||||
446.504990
|
||||
-3517.434806
|
||||
\N
|
||||
1710.468068
|
||||
-988.509024
|
||||
-93.124302
|
||||
-2974.066063
|
||||
-1466.562229
|
||||
4606.999513
|
||||
291.009348
|
||||
771.456014
|
||||
172.233984
|
||||
-1228.758016
|
||||
-1273.510068
|
||||
3472.468191
|
||||
3783.157877
|
||||
-260.342455
|
||||
-4133.938523
|
||||
-1558.345359
|
||||
818.740365
|
||||
2345.368051
|
||||
4818.590693
|
||||
\N
|
||||
-152.159210
|
||||
1395.434275
|
||||
-3107.620263
|
||||
4746.555020
|
||||
-189.023868
|
||||
3178.467591
|
||||
4922.804367
|
||||
-4963.738942
|
||||
\N
|
||||
-2933.352626
|
||||
-3894.560951
|
||||
-1721.494834
|
||||
\N
|
||||
-2491.926382
|
||||
-1659.638708
|
||||
3626.190726
|
||||
-1804.918329
|
||||
455.648226
|
||||
2244.824659
|
||||
2443.616389
|
||||
1022.869542
|
||||
3580.157235
|
||||
3348.054857
|
||||
-1537.855671
|
||||
1607.360266
|
||||
-1692.376280
|
||||
2292.201299
|
||||
3400.898151
|
||||
1889.594163
|
||||
239.448960
|
||||
4596.602567
|
||||
766.064066
|
||||
-1906.189177
|
||||
752.355324
|
||||
-2388.240838
|
||||
248.493708
|
||||
-4383.772933
|
||||
-3099.040067
|
||||
4912.247853
|
||||
2740.401308
|
||||
1334.028196
|
||||
-6.110885
|
||||
4208.217412
|
||||
2685.419516
|
||||
1947.814527
|
||||
4270.682796
|
||||
746.828278
|
||||
917.931886
|
||||
\N
|
||||
-1105.016263
|
||||
-406.957355
|
||||
-2023.670192
|
||||
-477.481347
|
||||
-1056.222565
|
||||
-4039.906966
|
||||
3609.872045
|
||||
-3297.475124
|
||||
1972.339566
|
||||
-1621.688887
|
||||
-1030.170236
|
||||
-4464.104576
|
||||
-2638.849336
|
||||
1175.210125
|
||||
-483.963827
|
||||
-3362.699658
|
||||
456.088565
|
||||
-4952.708059
|
||||
4982.336056
|
||||
801.148906
|
||||
-1533.282710
|
||||
-1739.269000
|
||||
\N
|
||||
-4390.957509
|
||||
4222.786482
|
||||
-4279.669281
|
||||
\N
|
||||
4937.803242
|
||||
\N
|
||||
2036.653081
|
||||
3409.729758
|
||||
3247.885061
|
||||
817.041977
|
||||
-822.372779
|
||||
2189.003680
|
||||
-3551.808846
|
||||
325.503762
|
||||
-2688.361261
|
||||
3833.177084
|
||||
2890.005446
|
||||
1325.965340
|
||||
-4132.875092
|
||||
-3011.022842
|
||||
1666.958698
|
||||
-4889.208372
|
||||
-157.283687
|
||||
-1516.214021
|
||||
3080.057571
|
||||
-2355.486070
|
||||
-539.260584
|
||||
-453.194364
|
||||
3574.346313
|
||||
-1012.181736
|
||||
1419.900389
|
||||
-3090.709731
|
||||
-811.664223
|
||||
1598.174198
|
||||
-1224.255663
|
||||
-1394.494598
|
||||
\N
|
||||
2972.381398
|
||||
220.199877
|
||||
3542.561032
|
||||
-2168.024176
|
||||
-3305.714558
|
||||
\N
|
||||
1754.880537
|
||||
3633.414739
|
||||
729.945999
|
||||
-2427.865606
|
||||
1648.939232
|
||||
-495.744751
|
||||
108.475352
|
||||
513.797465
|
||||
-3036.007973
|
||||
-3596.329479
|
||||
-3672.066260
|
||||
2261.791098
|
||||
-2077.391440
|
||||
-4873.215449
|
||||
4907.530537
|
||||
-3355.449754
|
||||
-3356.602051
|
||||
1232.493090
|
||||
-2822.598325
|
||||
1335.803283
|
||||
-1816.035000
|
||||
-479.029122
|
||||
\N
|
||||
\N
|
||||
4116.023187
|
||||
-259.211424
|
||||
-1636.301636
|
||||
151.567927
|
||||
\N
|
||||
615.774279
|
||||
4981.348277
|
||||
-4279.760471
|
||||
2122.969975
|
||||
2331.666647
|
||||
-1270.180538
|
||||
-2166.953835
|
||||
4085.841327
|
||||
2906.495024
|
||||
3656.341992
|
||||
2993.227550
|
||||
2151.115144
|
||||
-2275.655664
|
||||
-3203.291138
|
||||
2257.053474
|
||||
-4566.818042
|
||||
-4214.319326
|
||||
2730.795260
|
||||
-4194.037830
|
||||
116.563907
|
||||
-3036.016760
|
||||
1681.412271
|
||||
-3805.177421
|
||||
-1747.152073
|
||||
-4864.378627
|
||||
-3938.731704
|
||||
4232.011228
|
||||
20.740053
|
||||
-1645.529264
|
||||
2544.557875
|
||||
\N
|
||||
4777.722624
|
||||
-3356.018294
|
||||
1307.984314
|
||||
-1166.544462
|
||||
-1620.147366
|
||||
-137.408513
|
||||
724.484001
|
||||
-1343.453124
|
||||
4804.629749
|
||||
4522.789567
|
||||
2328.926240
|
||||
-1317.294201
|
||||
-4298.136513
|
||||
3398.895482
|
||||
3464.478505
|
||||
4943.133318
|
||||
3232.351173
|
||||
2893.212860
|
||||
1198.575174
|
||||
1121.555146
|
||||
-3552.881646
|
||||
4365.806104
|
||||
\N
|
||||
2352.417529
|
||||
\N
|
||||
4680.141932
|
||||
-2668.895399
|
||||
-238.973845
|
||||
-285.805471
|
||||
-3520.289230
|
||||
4878.743007
|
||||
1780.984535
|
||||
2832.673354
|
||||
4298.407435
|
||||
\N
|
||||
-1608.563991
|
||||
1684.308879
|
||||
4737.577396
|
||||
4101.170539
|
||||
\N
|
||||
-1464.015649
|
||||
\N
|
||||
-3738.782163
|
||||
-3621.216579
|
||||
2780.429035
|
||||
2384.467403
|
||||
\N
|
||||
552.970942
|
||||
3547.166413
|
||||
4900.754164
|
||||
4495.504335
|
||||
1607.961290
|
||||
4286.663369
|
||||
988.747024
|
||||
-2356.908041
|
||||
-1623.399549
|
||||
3724.461980
|
||||
-1540.581932
|
||||
561.640885
|
||||
3054.001451
|
||||
2224.754615
|
||||
3311.427291
|
||||
\N
|
||||
351.611318
|
||||
4176.146704
|
||||
-2049.963552
|
||||
2267.505572
|
||||
-4955.461980
|
||||
1276.636327
|
||||
-1508.073735
|
||||
-1598.198477
|
||||
1602.926844
|
||||
2157.874181
|
||||
1669.786780
|
||||
-3082.299418
|
||||
\N
|
||||
-1788.620850
|
||||
2555.355424
|
||||
-4870.338212
|
||||
-2851.518662
|
||||
3882.485213
|
||||
4641.214218
|
||||
2506.994706
|
||||
\N
|
||||
-1108.634810
|
||||
-4278.677501
|
||||
-2160.498210
|
||||
-806.103356
|
||||
\N
|
||||
880.145694
|
||||
1368.632529
|
||||
-2048.461217
|
||||
2899.266336
|
||||
-870.758219
|
||||
-2863.581156
|
||||
\N
|
||||
1682.631744
|
||||
3266.096445
|
||||
2626.991285
|
||||
1248.276847
|
||||
-4262.887118
|
||||
2777.053997
|
||||
1327.535555
|
||||
-426.769580
|
||||
-314.249841
|
||||
729.344234
|
||||
3891.552519
|
||||
-4918.473703
|
||||
4922.770997
|
||||
\N
|
||||
2679.172460
|
||||
\N
|
||||
4879.287118
|
||||
-4635.792221
|
||||
4496.176890
|
||||
2007.650308
|
||||
3821.565699
|
||||
-500.003884
|
||||
-1126.098170
|
||||
4487.603870
|
||||
3855.490996
|
||||
-56.857325
|
||||
1215.173530
|
||||
-1892.555336
|
||||
-1632.647536
|
||||
1942.954095
|
||||
64.593039
|
||||
-4396.942081
|
||||
-1643.806415
|
||||
363.886503
|
||||
3916.018470
|
||||
-2067.613754
|
||||
-1717.717134
|
||||
-3333.186669
|
||||
-3027.546004
|
||||
968.184544
|
||||
1210.732165
|
||||
2708.135698
|
||||
1052.369823
|
||||
-4434.389802
|
||||
-853.166476
|
||||
-1686.386083
|
||||
2647.478668
|
||||
2690.547401
|
||||
-4642.268889
|
||||
-3997.579827
|
||||
2927.765217
|
||||
3461.773129
|
||||
781.051482
|
||||
2525.672604
|
||||
3121.858727
|
||||
-2270.808321
|
||||
2873.250371
|
||||
\N
|
||||
4843.809511
|
||||
-1187.515681
|
||||
\N
|
||||
\N
|
||||
3528.188564
|
||||
-3487.236154
|
||||
845.094270
|
||||
3843.943537
|
||||
-558.746078
|
||||
-2471.493491
|
||||
611.999359
|
||||
-3199.954144
|
||||
-4988.404294
|
||||
4145.897291
|
||||
-1803.093537
|
||||
2876.372318
|
||||
-2474.919272
|
||||
4497.979139
|
||||
4625.114016
|
||||
-2221.654210
|
||||
4501.765724
|
||||
130.449252
|
||||
4534.131102
|
||||
1415.347330
|
||||
-993.720547
|
||||
\N
|
||||
3443.961678
|
||||
-4849.518817
|
||||
4573.353608
|
||||
4818.748920
|
||||
4330.041823
|
||||
3161.612855
|
||||
3607.737095
|
||||
-119.757296
|
||||
-1339.207751
|
||||
-331.384328
|
||||
2228.158823
|
||||
2697.192313
|
||||
-4775.355388
|
||||
-3594.790915
|
||||
-3397.374660
|
||||
3837.461611
|
||||
-4558.641468
|
||||
-1624.755387
|
||||
4430.022700
|
||||
-1940.296994
|
||||
4832.148761
|
||||
-2888.874695
|
||||
2894.719014
|
||||
2866.099508
|
||||
-1161.805185
|
||||
-4395.337603
|
||||
-1091.088679
|
||||
-819.707958
|
||||
4596.183826
|
||||
-1154.086625
|
||||
2249.981569
|
||||
2996.321776
|
||||
457.294320
|
||||
-66.348014
|
||||
-513.412089
|
||||
1125.862285
|
||||
\N
|
||||
-4243.177180
|
||||
-291.472275
|
||||
\N
|
||||
-2609.517713
|
||||
-2621.961719
|
||||
2269.398848
|
||||
-2249.532369
|
||||
4686.007011
|
||||
\N
|
||||
4873.354365
|
||||
3895.563571
|
||||
-2282.372172
|
||||
3784.030075
|
||||
-3485.082555
|
||||
2354.903229
|
||||
\N
|
||||
-2944.317869
|
||||
-2485.837190
|
||||
3776.108724
|
|
@ -0,0 +1,600 @@
|
|||
-39017.848619
|
||||
17104.680681
|
||||
-9885.090245
|
||||
-931.243017
|
||||
-29740.660628
|
||||
-14665.622294
|
||||
46069.995126
|
||||
2910.093476
|
||||
7714.560143
|
||||
1722.339844
|
||||
-12287.580158
|
||||
-12735.100679
|
||||
\N
|
||||
37831.578771
|
||||
-2603.424551
|
||||
-41339.385226
|
||||
-15583.453591
|
||||
8187.403650
|
||||
\N
|
||||
48185.906931
|
||||
34727.898466
|
||||
-1521.592099
|
||||
13954.342745
|
||||
-31076.202626
|
||||
47465.550200
|
||||
-1890.0
|
||||
31784.675914
|
||||
\N
|
||||
\N
|
||||
\N
|
||||
-29333.526259
|
||||
-38945.609512
|
||||
-17214.948343
|
||||
6871.406388
|
||||
\N
|
||||
-16596.387078
|
||||
36261.907260
|
||||
-18049.183287
|
||||
4556.482264
|
||||
22448.246587
|
||||
24436.163890
|
||||
10228.695423
|
||||
35801.572346
|
||||
\N
|
||||
-15378.556710
|
||||
16073.602655
|
||||
-16923.762796
|
||||
22922.012989
|
||||
34008.981513
|
||||
18895.941632
|
||||
2394.489596
|
||||
45966.025673
|
||||
7660.640663
|
||||
-19061.891767
|
||||
7523.553240
|
||||
-23882.408381
|
||||
2484.937083
|
||||
\N
|
||||
-30990.400669
|
||||
\N
|
||||
27404.013079
|
||||
13340.281957
|
||||
-61.108847
|
||||
42082.174119
|
||||
26854.195156
|
||||
19478.145274
|
||||
42706.827956
|
||||
7468.282784
|
||||
9179.318864
|
||||
-19064.482427
|
||||
-11050.162633
|
||||
-4069.573551
|
||||
-20236.701924
|
||||
-4774.813473
|
||||
-10562.225646
|
||||
-40399.069661
|
||||
36098.720453
|
||||
\N
|
||||
19723.395663
|
||||
-16216.888868
|
||||
-10301.702358
|
||||
-44641.045758
|
||||
-26388.493356
|
||||
11752.101249
|
||||
-4839.638274
|
||||
-33626.996578
|
||||
4560.885650
|
||||
\N
|
||||
49823.360564
|
||||
8011.489063
|
||||
-15332.827096
|
||||
-17392.689999
|
||||
-4894.502114
|
||||
-43909.575089
|
||||
42227.864821
|
||||
-42796.692808
|
||||
46124.794239
|
||||
49378.032423
|
||||
-14683.174325
|
||||
20366.530805
|
||||
34097.297575
|
||||
32478.850606
|
||||
8170.419772
|
||||
-8223.727792
|
||||
21890.036795
|
||||
-35518.088464
|
||||
3255.037616
|
||||
-26883.612609
|
||||
38331.770845
|
||||
28900.054460
|
||||
13259.653404
|
||||
-41328.750919
|
||||
-30110.228425
|
||||
16669.586984
|
||||
-48892.083717
|
||||
-1572.836866
|
||||
-15162.140208
|
||||
30800.575707
|
||||
-23554.860695
|
||||
-5392.605837
|
||||
-4531.943637
|
||||
35743.463126
|
||||
-10121.817356
|
||||
14199.003887
|
||||
-30907.097310
|
||||
\N
|
||||
15981.741979
|
||||
-12242.556625
|
||||
\N
|
||||
20565.261632
|
||||
29723.813981
|
||||
2201.998770
|
||||
35425.610321
|
||||
\N
|
||||
-33057.145580
|
||||
18323.757159
|
||||
\N
|
||||
36334.147391
|
||||
7299.459985
|
||||
-24278.656055
|
||||
16489.392317
|
||||
-4957.447506
|
||||
1084.753522
|
||||
5137.974655
|
||||
-30360.079734
|
||||
-35963.294788
|
||||
-36720.662604
|
||||
22617.910976
|
||||
-20773.914396
|
||||
-48732.154490
|
||||
49075.305368
|
||||
-33554.497540
|
||||
-33566.020515
|
||||
12324.930896
|
||||
-28225.983250
|
||||
13358.032826
|
||||
-18160.350001
|
||||
\N
|
||||
-34552.779135
|
||||
\N
|
||||
41160.231871
|
||||
-2592.114244
|
||||
-16363.016361
|
||||
1515.679272
|
||||
-25992.747897
|
||||
6157.742793
|
||||
49813.482771
|
||||
-42797.604712
|
||||
21229.699753
|
||||
23316.666471
|
||||
-12701.805384
|
||||
-21669.538352
|
||||
40858.413275
|
||||
29064.950244
|
||||
36563.419917
|
||||
29932.275498
|
||||
21511.151442
|
||||
-22756.556642
|
||||
-32032.911378
|
||||
22570.534736
|
||||
-45668.180425
|
||||
-42143.193256
|
||||
27307.952604
|
||||
-41940.378301
|
||||
1165.639074
|
||||
-30360.167604
|
||||
16814.122706
|
||||
-38051.774208
|
||||
-17471.520727
|
||||
-48643.786273
|
||||
-39387.317043
|
||||
42320.112275
|
||||
207.400532
|
||||
-16455.292640
|
||||
25445.578748
|
||||
31528.860601
|
||||
\N
|
||||
-33560.182938
|
||||
13079.843141
|
||||
-11665.444617
|
||||
-16201.473664
|
||||
-1374.085132
|
||||
7244.840012
|
||||
-13434.531243
|
||||
48046.297486
|
||||
45227.895675
|
||||
\N
|
||||
-13172.942010
|
||||
-42981.365134
|
||||
33988.954818
|
||||
34644.785051
|
||||
49431.333178
|
||||
32323.511728
|
||||
28932.128604
|
||||
11985.751736
|
||||
11215.551459
|
||||
-35528.816462
|
||||
43658.061043
|
||||
-25850.170886
|
||||
23524.175293
|
||||
17178.292092
|
||||
46801.419322
|
||||
-26688.953990
|
||||
-2389.738454
|
||||
-2858.054709
|
||||
-35202.892304
|
||||
48787.430068
|
||||
17809.845352
|
||||
28326.733540
|
||||
42984.074351
|
||||
-26945.552452
|
||||
-16085.639906
|
||||
16843.088794
|
||||
47375.773963
|
||||
41011.705385
|
||||
14885.293303
|
||||
\N
|
||||
22111.838158
|
||||
-37387.821631
|
||||
-36212.165787
|
||||
27804.290353
|
||||
23844.674031
|
||||
-39495.544038
|
||||
5529.709419
|
||||
35471.664130
|
||||
\N
|
||||
44955.043353
|
||||
16079.612899
|
||||
42866.633689
|
||||
\N
|
||||
\N
|
||||
-16233.995495
|
||||
37244.619796
|
||||
-15405.819316
|
||||
5616.408845
|
||||
30540.014515
|
||||
22247.546153
|
||||
33114.272907
|
||||
-45238.189304
|
||||
\N
|
||||
41761.467043
|
||||
-20499.635521
|
||||
22675.055718
|
||||
\N
|
||||
12766.363268
|
||||
-15080.737353
|
||||
-15981.984775
|
||||
16029.268441
|
||||
\N
|
||||
16697.867805
|
||||
-30822.994179
|
||||
-36990.879004
|
||||
-17886.208495
|
||||
25553.554239
|
||||
\N
|
||||
-28515.186616
|
||||
38824.852132
|
||||
46412.142178
|
||||
25069.947063
|
||||
14387.938736
|
||||
-11086.348100
|
||||
-42786.775014
|
||||
\N
|
||||
-8061.033561
|
||||
37733.424496
|
||||
8801.456941
|
||||
13686.325291
|
||||
-20484.612170
|
||||
28992.663361
|
||||
-8707.582186
|
||||
-28635.811563
|
||||
5881.871775
|
||||
16826.317444
|
||||
32660.964449
|
||||
26269.912848
|
||||
12482.768466
|
||||
-42628.871180
|
||||
27770.539968
|
||||
13275.355549
|
||||
-4267.695804
|
||||
\N
|
||||
\N
|
||||
38915.525185
|
||||
\N
|
||||
49227.709975
|
||||
45488.034233
|
||||
26791.724598
|
||||
20869.828235
|
||||
48792.871180
|
||||
-46357.922208
|
||||
44961.768899
|
||||
20076.503078
|
||||
38215.656992
|
||||
\N
|
||||
-11260.981700
|
||||
44876.038700
|
||||
38554.909960
|
||||
-568.573247
|
||||
12151.735305
|
||||
-18925.553360
|
||||
-16326.475361
|
||||
\N
|
||||
645.930390
|
||||
\N
|
||||
-16438.064150
|
||||
3638.865032
|
||||
39160.184697
|
||||
-20676.137540
|
||||
-17177.171338
|
||||
-33331.866694
|
||||
-30275.460044
|
||||
9681.845438
|
||||
\N
|
||||
27081.356979
|
||||
10523.698228
|
||||
-44343.898024
|
||||
\N
|
||||
-16863.860826
|
||||
26474.786679
|
||||
26905.474009
|
||||
-46422.688894
|
||||
-39975.798265
|
||||
29277.652166
|
||||
34617.731294
|
||||
7810.514820
|
||||
25256.726041
|
||||
31218.587272
|
||||
-22708.083211
|
||||
28732.503708
|
||||
-679.955515
|
||||
48438.095114
|
||||
-11875.156808
|
||||
-17232.257113
|
||||
-9389.997907
|
||||
35281.885641
|
||||
-34872.361545
|
||||
\N
|
||||
38439.435367
|
||||
-5587.460778
|
||||
-24714.934907
|
||||
6119.993588
|
||||
-31999.541438
|
||||
-49884.042935
|
||||
41458.972912
|
||||
-18030.935371
|
||||
\N
|
||||
-24749.192723
|
||||
44979.791387
|
||||
46251.140161
|
||||
\N
|
||||
45017.657240
|
||||
1304.492518
|
||||
45341.311020
|
||||
14153.473295
|
||||
-9937.205473
|
||||
-13588.917751
|
||||
34439.616783
|
||||
-48495.188168
|
||||
45733.536079
|
||||
48187.489201
|
||||
43300.418227
|
||||
31616.128553
|
||||
36077.370954
|
||||
-1197.572961
|
||||
-13392.077509
|
||||
-3313.843279
|
||||
22281.588229
|
||||
26971.923130
|
||||
-47753.553883
|
||||
-35947.909153
|
||||
-33973.746600
|
||||
38374.616107
|
||||
-45586.414680
|
||||
-16247.553875
|
||||
44300.227004
|
||||
-19402.969940
|
||||
48321.487614
|
||||
-28888.746947
|
||||
28947.190139
|
||||
28660.995084
|
||||
-11618.051846
|
||||
-43953.376028
|
||||
-10910.886787
|
||||
-8197.079579
|
||||
45961.838260
|
||||
\N
|
||||
22499.815688
|
||||
29963.217759
|
||||
4572.943204
|
||||
-663.480140
|
||||
-5134.120889
|
||||
11258.622846
|
||||
22652.566979
|
||||
-42431.771798
|
||||
-2914.722754
|
||||
-26206.211502
|
||||
-26095.177129
|
||||
-26219.617192
|
||||
22693.988482
|
||||
-22495.323686
|
||||
46860.070106
|
||||
-25156.352611
|
||||
48733.543651
|
||||
38955.635712
|
||||
-22823.721717
|
||||
37840.300746
|
||||
-34850.825549
|
||||
23549.032292
|
||||
\N
|
||||
-29443.178689
|
||||
-24858.371902
|
||||
37761.087244
|
||||
\N
|
||||
46819.624164
|
||||
\N
|
||||
-33693.144090
|
||||
40653.983453
|
||||
-26031.282486
|
||||
-24553.259497
|
||||
19714.503628
|
||||
-34474.345196
|
||||
8479.883456
|
||||
-33258.695939
|
||||
33087.950890
|
||||
17223.332481
|
||||
41600.595923
|
||||
-24101.627559
|
||||
45225.386273
|
||||
7144.885816
|
||||
-25243.179209
|
||||
-34920.445683
|
||||
-31098.240605
|
||||
-42560.678764
|
||||
16588.400754
|
||||
-35012.138861
|
||||
-8465.407211
|
||||
24885.269056
|
||||
1185.531892
|
||||
-42427.891210
|
||||
30568.514010
|
||||
-42910.065638
|
||||
-25427.667506
|
||||
49703.152850
|
||||
15339.563585
|
||||
-36162.816587
|
||||
\N
|
||||
25849.401427
|
||||
30508.323238
|
||||
39964.989009
|
||||
-29568.012561
|
||||
-22074.867353
|
||||
\N
|
||||
48713.154625
|
||||
-1520.744968
|
||||
36336.974374
|
||||
41062.088679
|
||||
-2003.634512
|
||||
-9037.801465
|
||||
28679.307540
|
||||
9146.625390
|
||||
23064.029018
|
||||
-37993.003516
|
||||
-16414.231186
|
||||
-2807.518818
|
||||
12352.072057
|
||||
13036.899205
|
||||
-9238.011185
|
||||
-45646.203680
|
||||
-26760.931302
|
||||
36327.588086
|
||||
-40820.465465
|
||||
-11081.759474
|
||||
15407.617374
|
||||
41678.071204
|
||||
\N
|
||||
\N
|
||||
-43507.700410
|
||||
24709.613796
|
||||
30447.305730
|
||||
-11054.192745
|
||||
\N
|
||||
23353.155969
|
||||
46508.126145
|
||||
6981.355956
|
||||
21083.087321
|
||||
23906.590032
|
||||
38666.058652
|
||||
-1769.736340
|
||||
47240.657405
|
||||
-1764.098532
|
||||
-5218.443393
|
||||
-33834.449008
|
||||
-2977.604676
|
||||
-432.298309
|
||||
24849.356606
|
||||
18835.457959
|
||||
32506.030883
|
||||
-19205.680149
|
||||
43736.106527
|
||||
-665.804581
|
||||
-7721.326434
|
||||
3269.641033
|
||||
-49370.767409
|
||||
16273.904297
|
||||
662.390678
|
||||
17499.127457
|
||||
30066.082524
|
||||
-9073.769189
|
||||
28401.596043
|
||||
-16385.018437
|
||||
18027.110150
|
||||
\N
|
||||
9804.530004
|
||||
12884.736463
|
||||
46511.284540
|
||||
-8051.955215
|
||||
-44326.810536
|
||||
-16389.214185
|
||||
41559.840176
|
||||
40672.067921
|
||||
1770.764334
|
||||
-15898.218176
|
||||
204.035430
|
||||
8434.125203
|
||||
-38309.302967
|
||||
-15565.175780
|
||||
-13882.281661
|
||||
-24141.443695
|
||||
44535.343952
|
||||
31507.292987
|
||||
23152.546758
|
||||
-39375.797840
|
||||
-38180.703478
|
||||
-415.027351
|
||||
\N
|
||||
29397.380994
|
||||
\N
|
||||
47904.062270
|
||||
-46523.514994
|
||||
22100.205660
|
||||
8730.225525
|
||||
-31533.990419
|
||||
11804.385093
|
||||
-30083.302585
|
||||
-37654.674513
|
||||
-43752.615104
|
||||
\N
|
||||
-1452.872507
|
||||
-21721.060142
|
||||
8709.210511
|
||||
38917.112904
|
||||
\N
|
||||
18148.277545
|
||||
\N
|
||||
-2368.107416
|
||||
-34462.417841
|
||||
40637.684702
|
||||
-42576.995163
|
||||
\N
|
||||
31314.380645
|
||||
-2993.921634
|
||||
-18056.906931
|
||||
26346.102998
|
||||
-31676.115180
|
||||
34094.465563
|
||||
7338.040814
|
||||
-27818.175767
|
||||
46722.334715
|
||||
-31033.022181
|
||||
-10355.819231
|
||||
12291.897909
|
||||
-35065.719851
|
||||
21197.209494
|
||||
-33092.215417
|
||||
\N
|
||||
34034.608716
|
||||
-33796.447601
|
||||
2756.714939
|
||||
-43451.564896
|
||||
-26799.277904
|
|
@ -0,0 +1,675 @@
|
|||
205.48.101.94
|
||||
64.191.16.251
|
||||
104.18.168.108
|
||||
32.163.254.222
|
||||
95.221.129.147
|
||||
183.253.140.85
|
||||
70.165.215.123
|
||||
84.170.107.43
|
||||
79.144.216.22
|
||||
\N
|
||||
165.90.225.162
|
||||
238.233.177.15
|
||||
88.24.114.39
|
||||
\N
|
||||
155.255.145.81
|
||||
83.13.81.117
|
||||
31.236.39.111
|
||||
31.223.45.140
|
||||
204.136.128.221
|
||||
\N
|
||||
160.69.78.40
|
||||
88.170.171.22
|
||||
27.205.158.253
|
||||
121.179.104.153
|
||||
225.15.14.165
|
||||
1.180.121.239
|
||||
83.5.70.6
|
||||
\N
|
||||
237.24.51.229
|
||||
120.151.214.171
|
||||
62.124.72.116
|
||||
253.74.141.202
|
||||
237.188.81.187
|
||||
61.252.190.144
|
||||
57.206.2.191
|
||||
\N
|
||||
240.82.109.101
|
||||
209.125.201.244
|
||||
93.213.169.237
|
||||
139.112.18.173
|
||||
82.154.56.140
|
||||
\N
|
||||
227.137.163.196
|
||||
69.77.51.75
|
||||
30.194.154.142
|
||||
193.185.41.198
|
||||
92.173.29.28
|
||||
103.28.183.154
|
||||
220.205.180.198
|
||||
74.216.214.72
|
||||
213.87.102.109
|
||||
240.47.114.57
|
||||
123.231.125.27
|
||||
134.239.185.20
|
||||
\N
|
||||
113.195.56.93
|
||||
24.40.244.54
|
||||
172.109.167.148
|
||||
231.44.133.66
|
||||
44.67.142.219
|
||||
239.181.165.233
|
||||
124.235.41.48
|
||||
190.73.207.202
|
||||
74.159.254.108
|
||||
153.37.38.182
|
||||
189.99.7.199
|
||||
37.164.159.15
|
||||
105.9.31.250
|
||||
\N
|
||||
4.16.24.165
|
||||
195.21.199.159
|
||||
162.106.77.88
|
||||
239.95.217.230
|
||||
150.197.150.14
|
||||
79.223.250.16
|
||||
65.207.143.228
|
||||
135.165.49.229
|
||||
91.1.57.212
|
||||
194.161.198.219
|
||||
\N
|
||||
1.163.185.97
|
||||
131.96.207.198
|
||||
\N
|
||||
216.88.243.136
|
||||
126.254.48.253
|
||||
\N
|
||||
56.199.135.75
|
||||
165.11.118.48
|
||||
247.7.198.248
|
||||
106.96.249.227
|
||||
96.14.187.22
|
||||
\N
|
||||
209.33.227.131
|
||||
136.206.43.175
|
||||
213.39.115.236
|
||||
\N
|
||||
124.100.183.145
|
||||
2.254.243.185
|
||||
80.111.117.99
|
||||
200.56.244.221
|
||||
232.45.235.183
|
||||
92.190.136.92
|
||||
\N
|
||||
194.45.213.168
|
||||
189.80.217.147
|
||||
221.149.51.2
|
||||
203.143.183.21
|
||||
10.76.215.130
|
||||
231.240.22.160
|
||||
228.107.124.145
|
||||
122.159.54.211
|
||||
249.175.223.152
|
||||
206.78.173.162
|
||||
176.177.135.225
|
||||
112.159.227.116
|
||||
\N
|
||||
140.34.214.128
|
||||
60.215.174.18
|
||||
120.23.162.179
|
||||
\N
|
||||
60.88.199.80
|
||||
\N
|
||||
190.199.234.228
|
||||
167.52.107.219
|
||||
163.230.62.220
|
||||
114.126.128.119
|
||||
28.212.246.115
|
||||
\N
|
||||
35.24.185.39
|
||||
74.11.153.183
|
||||
128.18.38.32
|
||||
56.38.113.145
|
||||
118.200.90.79
|
||||
90.216.40.68
|
||||
\N
|
||||
184.157.233.95
|
||||
247.216.240.149
|
||||
201.160.3.208
|
||||
121.229.71.154
|
||||
197.172.114.23
|
||||
147.134.141.252
|
||||
63.69.81.68
|
||||
172.15.14.208
|
||||
74.66.194.128
|
||||
102.73.67.147
|
||||
147.202.215.148
|
||||
40.253.212.235
|
||||
222.168.227.51
|
||||
193.171.47.212
|
||||
254.123.253.233
|
||||
13.238.20.95
|
||||
6.240.85.220
|
||||
63.50.72.59
|
||||
138.149.213.250
|
||||
\N
|
||||
204.155.97.217
|
||||
25.64.68.108
|
||||
175.95.119.68
|
||||
136.242.20.94
|
||||
218.65.176.89
|
||||
194.204.44.77
|
||||
147.246.187.105
|
||||
62.207.123.111
|
||||
\N
|
||||
128.90.38.245
|
||||
213.206.241.70
|
||||
143.101.67.30
|
||||
155.201.184.79
|
||||
205.190.209.57
|
||||
44.237.228.229
|
||||
222.109.77.139
|
||||
32.140.24.250
|
||||
36.125.139.29
|
||||
149.166.225.18
|
||||
172.242.93.116
|
||||
215.147.44.173
|
||||
230.46.69.48
|
||||
4.184.53.45
|
||||
241.179.116.11
|
||||
220.179.63.168
|
||||
193.4.38.153
|
||||
148.229.44.205
|
||||
213.60.22.146
|
||||
59.133.135.50
|
||||
198.49.80.122
|
||||
45.252.129.164
|
||||
161.123.162.124
|
||||
112.30.20.29
|
||||
58.133.184.67
|
||||
9.201.58.3
|
||||
146.112.143.36
|
||||
143.157.113.68
|
||||
147.14.52.62
|
||||
205.165.6.112
|
||||
29.89.113.154
|
||||
66.17.234.63
|
||||
52.41.89.181
|
||||
241.211.1.109
|
||||
177.36.163.207
|
||||
13.161.5.32
|
||||
125.114.169.247
|
||||
8.152.34.248
|
||||
20.31.119.242
|
||||
234.86.171.182
|
||||
59.226.121.144
|
||||
157.156.134.72
|
||||
143.41.246.125
|
||||
244.148.162.224
|
||||
161.221.171.40
|
||||
128.12.105.10
|
||||
\N
|
||||
211.96.181.118
|
||||
132.98.248.99
|
||||
128.151.39.43
|
||||
3.192.152.232
|
||||
206.13.203.250
|
||||
220.239.170.173
|
||||
149.215.24.9
|
||||
18.182.145.36
|
||||
179.212.151.153
|
||||
68.95.24.250
|
||||
223.255.215.176
|
||||
207.71.249.41
|
||||
60.90.154.16
|
||||
173.116.151.18
|
||||
121.111.63.82
|
||||
111.221.237.4
|
||||
238.209.54.62
|
||||
183.236.220.28
|
||||
126.186.123.78
|
||||
123.43.92.163
|
||||
89.23.85.100
|
||||
89.225.196.191
|
||||
85.136.41.16
|
||||
155.170.87.73
|
||||
31.13.161.188
|
||||
137.30.169.129
|
||||
78.32.92.76
|
||||
129.121.108.107
|
||||
78.239.221.76
|
||||
36.242.173.3
|
||||
151.134.174.87
|
||||
79.94.194.177
|
||||
\N
|
||||
9.108.86.70
|
||||
5.65.207.234
|
||||
84.59.213.76
|
||||
20.230.161.43
|
||||
247.180.220.136
|
||||
67.151.49.171
|
||||
47.147.80.252
|
||||
74.190.254.29
|
||||
\N
|
||||
111.24.200.106
|
||||
90.3.213.132
|
||||
110.101.207.168
|
||||
143.77.140.198
|
||||
\N
|
||||
236.62.95.154
|
||||
56.251.21.190
|
||||
231.154.66.237
|
||||
169.30.40.6
|
||||
94.91.100.20
|
||||
113.49.232.34
|
||||
215.47.246.82
|
||||
169.224.7.29
|
||||
\N
|
||||
37.231.196.152
|
||||
47.63.95.236
|
||||
181.49.112.52
|
||||
243.161.244.167
|
||||
175.242.48.116
|
||||
169.213.125.67
|
||||
196.130.108.140
|
||||
239.250.45.132
|
||||
35.136.41.79
|
||||
111.112.42.173
|
||||
29.151.75.38
|
||||
38.137.224.147
|
||||
64.101.177.59
|
||||
55.13.87.142
|
||||
131.53.181.224
|
||||
199.167.12.86
|
||||
168.11.48.234
|
||||
34.123.154.188
|
||||
213.4.129.9
|
||||
\N
|
||||
101.134.51.130
|
||||
193.64.107.205
|
||||
49.43.91.47
|
||||
104.238.95.198
|
||||
138.189.159.157
|
||||
120.251.32.52
|
||||
153.214.200.197
|
||||
243.134.30.100
|
||||
135.52.111.34
|
||||
\N
|
||||
112.42.87.159
|
||||
40.69.66.232
|
||||
207.81.62.124
|
||||
193.28.195.69
|
||||
55.96.199.235
|
||||
167.101.253.115
|
||||
\N
|
||||
246.147.199.115
|
||||
193.79.112.101
|
||||
241.244.120.200
|
||||
\N
|
||||
167.116.157.80
|
||||
102.31.171.101
|
||||
16.44.204.182
|
||||
34.17.92.190
|
||||
84.72.45.155
|
||||
193.109.167.147
|
||||
80.181.11.243
|
||||
130.181.212.219
|
||||
9.144.1.64
|
||||
246.224.132.58
|
||||
62.195.56.251
|
||||
142.66.251.66
|
||||
194.106.77.154
|
||||
\N
|
||||
90.221.121.253
|
||||
15.163.194.138
|
||||
230.46.78.158
|
||||
46.105.50.131
|
||||
119.50.45.238
|
||||
248.225.135.21
|
||||
\N
|
||||
124.214.84.154
|
||||
21.180.109.92
|
||||
115.101.89.130
|
||||
95.207.181.191
|
||||
125.235.193.182
|
||||
181.218.105.217
|
||||
133.89.141.43
|
||||
106.183.231.192
|
||||
115.35.116.107
|
||||
60.97.101.50
|
||||
\N
|
||||
169.250.64.192
|
||||
120.241.254.238
|
||||
137.194.100.209
|
||||
48.16.35.136
|
||||
182.211.204.114
|
||||
40.99.67.49
|
||||
89.125.172.183
|
||||
104.228.203.245
|
||||
81.84.155.227
|
||||
1.112.197.117
|
||||
59.117.175.134
|
||||
58.214.124.144
|
||||
33.129.223.81
|
||||
126.143.252.69
|
||||
195.211.137.176
|
||||
208.14.45.76
|
||||
74.96.74.146
|
||||
\N
|
||||
229.64.51.77
|
||||
65.21.152.189
|
||||
\N
|
||||
114.101.237.200
|
||||
175.166.116.210
|
||||
87.134.226.114
|
||||
213.95.222.202
|
||||
30.2.239.190
|
||||
\N
|
||||
159.81.159.223
|
||||
228.187.227.90
|
||||
\N
|
||||
67.251.123.95
|
||||
162.251.195.17
|
||||
96.240.115.112
|
||||
233.87.71.43
|
||||
161.114.80.142
|
||||
140.113.203.25
|
||||
22.40.68.5
|
||||
180.139.2.40
|
||||
\N
|
||||
111.38.231.216
|
||||
228.234.207.123
|
||||
\N
|
||||
250.176.79.79
|
||||
59.107.193.142
|
||||
161.218.191.212
|
||||
96.37.54.203
|
||||
46.192.107.103
|
||||
71.197.52.178
|
||||
111.105.63.26
|
||||
139.58.62.200
|
||||
72.105.233.160
|
||||
239.87.14.72
|
||||
171.229.121.185
|
||||
240.220.164.57
|
||||
149.13.111.63
|
||||
163.49.238.5
|
||||
7.149.70.239
|
||||
248.242.205.103
|
||||
17.229.150.23
|
||||
134.55.46.252
|
||||
98.238.40.42
|
||||
\N
|
||||
31.36.115.199
|
||||
64.234.158.9
|
||||
\N
|
||||
32.69.44.86
|
||||
186.204.118.229
|
||||
\N
|
||||
20.35.78.52
|
||||
132.47.83.153
|
||||
226.69.230.4
|
||||
33.33.156.254
|
||||
152.70.244.236
|
||||
247.180.160.113
|
||||
211.221.104.110
|
||||
129.124.231.41
|
||||
54.190.14.163
|
||||
49.180.34.117
|
||||
124.77.160.15
|
||||
52.3.82.192
|
||||
89.149.87.98
|
||||
67.71.146.173
|
||||
182.61.251.67
|
||||
14.180.19.120
|
||||
\N
|
||||
66.218.5.209
|
||||
188.58.131.244
|
||||
128.157.228.197
|
||||
\N
|
||||
223.221.76.172
|
||||
101.115.226.156
|
||||
229.17.33.101
|
||||
151.3.214.189
|
||||
37.180.117.157
|
||||
242.106.122.78
|
||||
30.95.165.92
|
||||
132.52.246.117
|
||||
\N
|
||||
173.52.188.128
|
||||
118.223.229.41
|
||||
132.231.133.56
|
||||
135.235.133.171
|
||||
78.200.1.131
|
||||
\N
|
||||
115.146.120.61
|
||||
20.96.157.214
|
||||
152.229.92.114
|
||||
109.190.145.204
|
||||
243.82.98.207
|
||||
\N
|
||||
184.107.160.144
|
||||
39.2.129.97
|
||||
48.192.2.91
|
||||
221.151.237.221
|
||||
4.246.15.78
|
||||
210.161.249.39
|
||||
255.75.10.97
|
||||
228.249.129.27
|
||||
30.115.201.232
|
||||
246.215.8.102
|
||||
\N
|
||||
63.16.75.23
|
||||
94.123.36.30
|
||||
132.61.79.239
|
||||
\N
|
||||
105.151.204.126
|
||||
\N
|
||||
243.229.8.172
|
||||
26.195.227.35
|
||||
219.206.181.101
|
||||
165.12.89.14
|
||||
62.24.41.190
|
||||
119.79.245.119
|
||||
202.197.197.152
|
||||
109.202.220.212
|
||||
35.183.214.65
|
||||
53.7.220.159
|
||||
\N
|
||||
55.184.109.15
|
||||
\N
|
||||
15.112.129.183
|
||||
44.124.131.125
|
||||
35.89.161.4
|
||||
220.242.200.101
|
||||
123.60.59.238
|
||||
211.223.96.183
|
||||
74.61.70.183
|
||||
\N
|
||||
209.150.35.249
|
||||
240.232.193.155
|
||||
194.231.101.62
|
||||
\N
|
||||
2.104.84.243
|
||||
221.162.167.181
|
||||
119.166.8.33
|
||||
40.72.241.71
|
||||
\N
|
||||
159.208.215.103
|
||||
\N
|
||||
61.22.131.30
|
||||
\N
|
||||
41.119.175.142
|
||||
117.85.224.118
|
||||
\N
|
||||
148.167.101.4
|
||||
45.106.131.138
|
||||
\N
|
||||
94.189.41.3
|
||||
108.55.214.7
|
||||
\N
|
||||
35.171.168.47
|
||||
90.252.21.131
|
||||
27.220.123.246
|
||||
20.78.135.63
|
||||
166.27.102.106
|
||||
142.222.1.91
|
||||
11.88.28.225
|
||||
38.175.101.188
|
||||
163.37.35.66
|
||||
12.97.128.208
|
||||
106.97.208.4
|
||||
\N
|
||||
152.139.250.11
|
||||
66.153.27.211
|
||||
102.132.218.38
|
||||
199.142.41.164
|
||||
18.231.165.111
|
||||
138.109.241.13
|
||||
118.10.77.46
|
||||
146.27.170.90
|
||||
168.77.102.159
|
||||
226.198.128.192
|
||||
66.92.232.222
|
||||
47.27.194.20
|
||||
164.182.228.118
|
||||
105.131.236.121
|
||||
234.46.48.100
|
||||
118.34.237.203
|
||||
175.160.139.46
|
||||
163.208.222.249
|
||||
9.166.171.40
|
||||
227.230.225.180
|
||||
244.160.119.181
|
||||
126.211.169.225
|
||||
72.112.141.239
|
||||
220.198.141.154
|
||||
197.173.63.107
|
||||
229.208.36.32
|
||||
132.26.237.169
|
||||
203.241.185.28
|
||||
191.42.250.138
|
||||
\N
|
||||
132.180.213.190
|
||||
190.210.77.219
|
||||
49.168.123.181
|
||||
78.189.91.119
|
||||
\N
|
||||
195.144.143.245
|
||||
85.75.58.30
|
||||
148.26.97.224
|
||||
65.174.36.247
|
||||
203.110.226.93
|
||||
6.176.17.101
|
||||
\N
|
||||
99.2.116.45
|
||||
203.207.156.164
|
||||
6.205.71.174
|
||||
146.246.43.100
|
||||
235.93.237.116
|
||||
158.220.15.72
|
||||
94.113.101.124
|
||||
51.194.52.42
|
||||
162.80.213.241
|
||||
\N
|
||||
23.1.97.65
|
||||
133.240.185.226
|
||||
7.27.121.41
|
||||
192.28.209.195
|
||||
179.208.158.65
|
||||
145.159.157.167
|
||||
173.41.74.199
|
||||
96.106.28.103
|
||||
244.63.22.62
|
||||
\N
|
||||
96.163.254.226
|
||||
58.221.131.199
|
||||
31.86.179.136
|
||||
127.219.60.48
|
||||
87.134.167.151
|
||||
135.52.126.134
|
||||
\N
|
||||
47.109.125.45
|
||||
41.170.113.98
|
||||
165.216.170.67
|
||||
252.176.159.106
|
||||
69.227.163.227
|
||||
225.251.187.1
|
||||
40.202.43.19
|
||||
4.104.139.43
|
||||
249.245.11.156
|
||||
93.180.123.182
|
||||
113.67.34.90
|
||||
142.211.245.230
|
||||
63.6.54.114
|
||||
77.65.223.214
|
||||
59.233.170.32
|
||||
131.172.204.238
|
||||
234.156.241.152
|
||||
\N
|
||||
8.91.22.29
|
||||
117.141.48.215
|
||||
79.171.208.203
|
||||
146.229.67.176
|
||||
66.85.44.114
|
||||
241.194.191.85
|
||||
63.255.71.88
|
||||
60.73.67.41
|
||||
48.149.137.56
|
||||
60.33.119.210
|
||||
220.121.61.208
|
||||
147.151.1.144
|
||||
\N
|
||||
184.155.244.115
|
||||
97.151.107.25
|
||||
249.167.212.72
|
||||
142.137.230.31
|
||||
24.86.8.16
|
||||
28.117.109.25
|
||||
149.148.184.221
|
||||
106.99.191.123
|
||||
\N
|
||||
65.14.167.10
|
||||
164.183.36.228
|
||||
52.175.120.249
|
||||
42.0.8.134
|
||||
223.54.80.64
|
||||
62.203.105.165
|
||||
144.148.207.249
|
||||
236.35.62.35
|
||||
\N
|
||||
21.116.77.153
|
||||
114.242.119.6
|
||||
136.30.45.211
|
||||
153.121.70.120
|
||||
\N
|
||||
216.116.169.127
|
||||
230.106.70.22
|
||||
96.164.134.139
|
||||
193.7.187.21
|
||||
35.121.231.194
|
||||
105.62.79.80
|
||||
224.235.238.193
|
||||
238.75.226.70
|
||||
176.162.92.173
|
||||
214.188.162.23
|
||||
162.58.151.104
|
||||
6.119.102.63
|
||||
56.63.61.114
|
||||
6.171.110.128
|
||||
51.155.66.187
|
||||
\N
|
||||
107.50.227.215
|
||||
219.149.74.222
|
||||
23.110.108.137
|
||||
244.190.60.52
|
||||
21.210.197.77
|
||||
249.88.71.119
|
||||
\N
|
||||
62.251.140.171
|
||||
62.118.73.196
|
||||
58.77.130.172
|
||||
233.131.155.245
|
||||
59.164.211.253
|
||||
218.33.169.7
|
||||
\N
|
|
@ -0,0 +1,600 @@
|
|||
3093
|
||||
4550
|
||||
-3556
|
||||
-3363
|
||||
324
|
||||
-149
|
||||
-265
|
||||
-3432
|
||||
1122
|
||||
-2534
|
||||
-4263
|
||||
660
|
||||
-2263
|
||||
-468
|
||||
-3605
|
||||
-663
|
||||
-4713
|
||||
\N
|
||||
1361
|
||||
\N
|
||||
\N
|
||||
2681
|
||||
-550
|
||||
\N
|
||||
1935
|
||||
\N
|
||||
2575
|
||||
-171
|
||||
-1557
|
||||
3897
|
||||
\N
|
||||
3732
|
||||
3315
|
||||
237
|
||||
4012
|
||||
-254
|
||||
2564
|
||||
-4842
|
||||
620
|
||||
4255
|
||||
3282
|
||||
-4427
|
||||
802
|
||||
845
|
||||
\N
|
||||
-62
|
||||
-4461
|
||||
2569
|
||||
4086
|
||||
-3787
|
||||
-2087
|
||||
2765
|
||||
2746
|
||||
\N
|
||||
-1826
|
||||
4876
|
||||
1981
|
||||
-297
|
||||
-469
|
||||
168
|
||||
-3594
|
||||
2289
|
||||
\N
|
||||
-3682
|
||||
2553
|
||||
2462
|
||||
3596
|
||||
-1129
|
||||
-4537
|
||||
\N
|
||||
-3733
|
||||
2268
|
||||
2876
|
||||
-2178
|
||||
3610
|
||||
-969
|
||||
-3189
|
||||
142
|
||||
2196
|
||||
-1401
|
||||
\N
|
||||
1827
|
||||
-2279
|
||||
2810
|
||||
-1459
|
||||
\N
|
||||
798
|
||||
-1397
|
||||
2246
|
||||
266
|
||||
1489
|
||||
-4491
|
||||
566
|
||||
\N
|
||||
\N
|
||||
\N
|
||||
-165
|
||||
\N
|
||||
-36
|
||||
1695
|
||||
-2135
|
||||
1563
|
||||
3973
|
||||
-2041
|
||||
-1513
|
||||
-4820
|
||||
-702
|
||||
\N
|
||||
3401
|
||||
\N
|
||||
-3200
|
||||
3674
|
||||
-118
|
||||
-3972
|
||||
3888
|
||||
-1619
|
||||
3231
|
||||
-276
|
||||
-2622
|
||||
-2011
|
||||
-3959
|
||||
-1561
|
||||
1120
|
||||
2912
|
||||
-593
|
||||
-1062
|
||||
1368
|
||||
3198
|
||||
-1471
|
||||
4271
|
||||
2054
|
||||
2468
|
||||
-4511
|
||||
1104
|
||||
-287
|
||||
-4836
|
||||
1065
|
||||
\N
|
||||
-3437
|
||||
-2120
|
||||
-2238
|
||||
1023
|
||||
-4333
|
||||
-412
|
||||
998
|
||||
1641
|
||||
3612
|
||||
3564
|
||||
4220
|
||||
\N
|
||||
\N
|
||||
4226
|
||||
-3195
|
||||
-3571
|
||||
-1505
|
||||
-3115
|
||||
494
|
||||
\N
|
||||
-368
|
||||
-3459
|
||||
-2643
|
||||
\N
|
||||
-620
|
||||
-210
|
||||
-4658
|
||||
2523
|
||||
-2482
|
||||
-3778
|
||||
1833
|
||||
509
|
||||
-4993
|
||||
\N
|
||||
3208
|
||||
4760
|
||||
\N
|
||||
-4898
|
||||
4324
|
||||
-3045
|
||||
-4555
|
||||
-3364
|
||||
1192
|
||||
4268
|
||||
-2170
|
||||
4229
|
||||
2952
|
||||
-3249
|
||||
-950
|
||||
2566
|
||||
\N
|
||||
-2026
|
||||
4611
|
||||
\N
|
||||
3042
|
||||
\N
|
||||
1671
|
||||
-4874
|
||||
1518
|
||||
-1875
|
||||
1600
|
||||
-4570
|
||||
-295
|
||||
-2710
|
||||
-4290
|
||||
101
|
||||
2180
|
||||
-1385
|
||||
1438
|
||||
\N
|
||||
-4992
|
||||
721
|
||||
1137
|
||||
1424
|
||||
4064
|
||||
1424
|
||||
842
|
||||
4073
|
||||
-4554
|
||||
1501
|
||||
-1886
|
||||
3087
|
||||
-3732
|
||||
1560
|
||||
2136
|
||||
\N
|
||||
986
|
||||
-3083
|
||||
1062
|
||||
1557
|
||||
-465
|
||||
-2744
|
||||
-130
|
||||
3663
|
||||
1220
|
||||
-3390
|
||||
1491
|
||||
-652
|
||||
-3981
|
||||
-233
|
||||
3559
|
||||
4461
|
||||
-3630
|
||||
1080
|
||||
\N
|
||||
-1289
|
||||
4821
|
||||
3670
|
||||
-965
|
||||
-969
|
||||
-784
|
||||
2877
|
||||
-772
|
||||
-1881
|
||||
-270
|
||||
-1645
|
||||
-1618
|
||||
-450
|
||||
-1353
|
||||
351
|
||||
-4492
|
||||
-1721
|
||||
-7
|
||||
-4545
|
||||
\N
|
||||
2080
|
||||
987
|
||||
1645
|
||||
-4774
|
||||
-1215
|
||||
-2215
|
||||
-2675
|
||||
3747
|
||||
1664
|
||||
-4609
|
||||
1177
|
||||
1368
|
||||
-4010
|
||||
-3768
|
||||
2435
|
||||
-825
|
||||
-963
|
||||
-442
|
||||
\N
|
||||
-991
|
||||
-3702
|
||||
2751
|
||||
1388
|
||||
808
|
||||
-2548
|
||||
3015
|
||||
-338
|
||||
811
|
||||
485
|
||||
-4178
|
||||
-1229
|
||||
\N
|
||||
3246
|
||||
-3976
|
||||
-1296
|
||||
-3479
|
||||
-2069
|
||||
4391
|
||||
\N
|
||||
-1462
|
||||
325
|
||||
4877
|
||||
2559
|
||||
-3954
|
||||
3456
|
||||
-476
|
||||
-2739
|
||||
-2737
|
||||
568
|
||||
-60
|
||||
-4371
|
||||
-4966
|
||||
-329
|
||||
4131
|
||||
\N
|
||||
-1841
|
||||
-2219
|
||||
-2604
|
||||
776
|
||||
-4635
|
||||
1972
|
||||
-3333
|
||||
-4281
|
||||
-3046
|
||||
-1781
|
||||
2941
|
||||
-3399
|
||||
-938
|
||||
-4728
|
||||
-517
|
||||
\N
|
||||
-3832
|
||||
-1096
|
||||
3094
|
||||
1949
|
||||
2494
|
||||
4686
|
||||
-3597
|
||||
-4346
|
||||
-437
|
||||
2490
|
||||
1625
|
||||
-4445
|
||||
752
|
||||
-3302
|
||||
2966
|
||||
-3870
|
||||
\N
|
||||
-2594
|
||||
3754
|
||||
-186
|
||||
-3611
|
||||
3738
|
||||
473
|
||||
3706
|
||||
-4756
|
||||
1184
|
||||
-927
|
||||
-984
|
||||
2760
|
||||
\N
|
||||
-456
|
||||
3202
|
||||
-1251
|
||||
894
|
||||
\N
|
||||
-2776
|
||||
2545
|
||||
1566
|
||||
-4043
|
||||
-4577
|
||||
-1113
|
||||
-4865
|
||||
-4459
|
||||
188
|
||||
232
|
||||
4559
|
||||
2355
|
||||
1747
|
||||
4140
|
||||
1051
|
||||
3989
|
||||
-430
|
||||
-3136
|
||||
-2172
|
||||
-1734
|
||||
927
|
||||
-1278
|
||||
1051
|
||||
2750
|
||||
18
|
||||
-2888
|
||||
-273
|
||||
-2380
|
||||
-3709
|
||||
-2889
|
||||
-4733
|
||||
1064
|
||||
-3281
|
||||
-4176
|
||||
-427
|
||||
-2789
|
||||
-4779
|
||||
\N
|
||||
-4472
|
||||
538
|
||||
3726
|
||||
3873
|
||||
-2263
|
||||
2414
|
||||
\N
|
||||
3628
|
||||
-4210
|
||||
-1475
|
||||
2938
|
||||
859
|
||||
\N
|
||||
-3648
|
||||
3644
|
||||
3967
|
||||
835
|
||||
1922
|
||||
-2946
|
||||
4903
|
||||
1090
|
||||
\N
|
||||
4057
|
||||
-2531
|
||||
2858
|
||||
558
|
||||
4570
|
||||
-1384
|
||||
362
|
||||
-135
|
||||
2864
|
||||
\N
|
||||
-1880
|
||||
1697
|
||||
-103
|
||||
980
|
||||
-2721
|
||||
2015
|
||||
490
|
||||
2561
|
||||
-1806
|
||||
-2533
|
||||
-672
|
||||
-108
|
||||
-2162
|
||||
613
|
||||
-2769
|
||||
618
|
||||
-4370
|
||||
3117
|
||||
-1692
|
||||
-1547
|
||||
-1034
|
||||
-4782
|
||||
502
|
||||
3117
|
||||
4913
|
||||
-4492
|
||||
188
|
||||
917
|
||||
465
|
||||
962
|
||||
-3792
|
||||
-1346
|
||||
-3899
|
||||
848
|
||||
-4530
|
||||
-3025
|
||||
1265
|
||||
3701
|
||||
2046
|
||||
3451
|
||||
\N
|
||||
-2628
|
||||
1758
|
||||
\N
|
||||
4732
|
||||
983
|
||||
\N
|
||||
370
|
||||
-3513
|
||||
-147
|
||||
2705
|
||||
-1167
|
||||
-4962
|
||||
1453
|
||||
1196
|
||||
-1890
|
||||
648
|
||||
-3137
|
||||
-158
|
||||
-499
|
||||
4982
|
||||
-2287
|
||||
-1767
|
||||
3892
|
||||
-3490
|
||||
\N
|
||||
-4331
|
||||
3110
|
||||
1613
|
||||
4379
|
||||
-2047
|
||||
3137
|
||||
713
|
||||
\N
|
||||
-2956
|
||||
2247
|
||||
2580
|
||||
3198
|
||||
-2453
|
||||
4420
|
||||
3192
|
||||
-658
|
||||
-3912
|
||||
3018
|
||||
-234
|
||||
-3049
|
||||
\N
|
||||
-2705
|
||||
2225
|
||||
-455
|
||||
4140
|
||||
145
|
||||
2198
|
||||
-4912
|
||||
-2327
|
||||
-2366
|
||||
-1114
|
||||
-172
|
||||
-748
|
||||
-2851
|
||||
-1596
|
||||
-4257
|
||||
-4451
|
||||
2070
|
||||
2161
|
||||
535
|
||||
1714
|
||||
\N
|
||||
4808
|
||||
-924
|
||||
-1990
|
||||
3560
|
||||
-1490
|
||||
-3458
|
||||
310
|
||||
1562
|
||||
-4423
|
||||
-1375
|
||||
1169
|
||||
2452
|
||||
-2944
|
||||
-1091
|
||||
-2156
|
||||
3378
|
||||
-4723
|
||||
-4549
|
||||
4893
|
||||
-4295
|
||||
4103
|
||||
-1213
|
||||
4542
|
||||
4192
|
||||
228
|
||||
\N
|
||||
566
|
||||
-2829
|
||||
750
|
||||
-2819
|
||||
\N
|
||||
54
|
||||
-745
|
||||
-2611
|
||||
-464
|
||||
2098
|
||||
255
|
||||
-2791
|
||||
110
|
||||
-1020
|
||||
1313
|
||||
3705
|
||||
-3461
|
||||
511
|
||||
2079
|
||||
-3852
|
||||
1177
|
||||
2751
|
||||
1023
|
||||
-3970
|
||||
-264
|
||||
-148
|
||||
2085
|
|
@ -0,0 +1,600 @@
|
|||
-278383369
|
||||
-747067264
|
||||
-444347454
|
||||
943059602
|
||||
760126298
|
||||
-313957087
|
||||
69871373
|
||||
1047228793
|
||||
549563771
|
||||
-849172813
|
||||
742152707
|
||||
-102126707
|
||||
-588216468
|
||||
-587679276
|
||||
121951908
|
||||
-12908316
|
||||
-938566787
|
||||
-1066376866
|
||||
-70757527
|
||||
887181957
|
||||
-416180675
|
||||
-395333602
|
||||
-476539199
|
||||
-559145553
|
||||
166603938
|
||||
-995460982
|
||||
423400029
|
||||
-715704678
|
||||
-919392688
|
||||
-654070990
|
||||
-382421072
|
||||
631560114
|
||||
-729854703
|
||||
-201487528
|
||||
-1015231681
|
||||
-111081607
|
||||
-150879882
|
||||
-822966764
|
||||
-235383789
|
||||
664472573
|
||||
418592852
|
||||
535580213
|
||||
1006220943
|
||||
-772410787
|
||||
-933257976
|
||||
-93888809
|
||||
534823075
|
||||
348910859
|
||||
-954633892
|
||||
161536478
|
||||
-709184521
|
||||
636988950
|
||||
-831019781
|
||||
\N
|
||||
-557156033
|
||||
806151247
|
||||
-39951046
|
||||
-775508567
|
||||
\N
|
||||
101482645
|
||||
795803474
|
||||
-1021371457
|
||||
254190941
|
||||
-198991605
|
||||
-211220357
|
||||
592642976
|
||||
159564926
|
||||
-97980046
|
||||
687623361
|
||||
-268671335
|
||||
192044603
|
||||
133023521
|
||||
-596127139
|
||||
546530680
|
||||
336306348
|
||||
-868276189
|
||||
-982853141
|
||||
-239020404
|
||||
-1044842390
|
||||
-957480672
|
||||
40377556
|
||||
49864481
|
||||
\N
|
||||
505742335
|
||||
375096111
|
||||
\N
|
||||
225695129
|
||||
856735725
|
||||
-92417405
|
||||
-673413352
|
||||
-466398428
|
||||
-372271859
|
||||
199069838
|
||||
-274470034
|
||||
225807793
|
||||
590462307
|
||||
3775258
|
||||
-620113195
|
||||
-58682105
|
||||
-511020053
|
||||
-796515704
|
||||
-620432149
|
||||
-1016328347
|
||||
228460677
|
||||
-704579869
|
||||
-896860429
|
||||
\N
|
||||
\N
|
||||
-1026387226
|
||||
-974499141
|
||||
-960283687
|
||||
115614636
|
||||
800148518
|
||||
831654092
|
||||
\N
|
||||
518360994
|
||||
\N
|
||||
779114556
|
||||
-904139163
|
||||
-316769082
|
||||
630950752
|
||||
\N
|
||||
-55878393
|
||||
-783306330
|
||||
\N
|
||||
852002029
|
||||
179256342
|
||||
412777993
|
||||
-632735583
|
||||
1052807112
|
||||
234006613
|
||||
528787810
|
||||
871273145
|
||||
-543437833
|
||||
613656227
|
||||
119746596
|
||||
981397980
|
||||
-297248487
|
||||
77649335
|
||||
-28913402
|
||||
614934531
|
||||
929940199
|
||||
-403660500
|
||||
364477031
|
||||
-22124387
|
||||
210404268
|
||||
\N
|
||||
432660770
|
||||
105294608
|
||||
\N
|
||||
-387805780
|
||||
-543871814
|
||||
-144364887
|
||||
-23259185
|
||||
-464225973
|
||||
131691359
|
||||
-594587949
|
||||
132792222
|
||||
-938482467
|
||||
669399965
|
||||
-363432139
|
||||
-332135297
|
||||
-222020946
|
||||
-1026899728
|
||||
107886324
|
||||
669465840
|
||||
1055107642
|
||||
-964572059
|
||||
\N
|
||||
196967371
|
||||
99878136
|
||||
206583116
|
||||
-814267157
|
||||
-288969105
|
||||
-837297170
|
||||
182146005
|
||||
-972850964
|
||||
-649642105
|
||||
271750475
|
||||
794876066
|
||||
439409907
|
||||
741102414
|
||||
-896013712
|
||||
-564452917
|
||||
377584215
|
||||
785128489
|
||||
1016266473
|
||||
211032352
|
||||
-860051372
|
||||
79557251
|
||||
-754415346
|
||||
-31656520
|
||||
580909957
|
||||
-250670377
|
||||
-1065498478
|
||||
312055768
|
||||
256848844
|
||||
-405941467
|
||||
139226727
|
||||
-673719257
|
||||
-33907454
|
||||
-107071600
|
||||
\N
|
||||
-491151352
|
||||
-379374978
|
||||
835717683
|
||||
-749442365
|
||||
391779355
|
||||
-930175254
|
||||
667789784
|
||||
346287223
|
||||
940296232
|
||||
-439643120
|
||||
673648096
|
||||
153155023
|
||||
761570957
|
||||
-634729660
|
||||
482454328
|
||||
553985095
|
||||
686753002
|
||||
-526797052
|
||||
949281215
|
||||
685507933
|
||||
-141218391
|
||||
-840157851
|
||||
648180473
|
||||
-50333869
|
||||
-654708416
|
||||
1040352328
|
||||
-580798126
|
||||
477781101
|
||||
-97755360
|
||||
889044981
|
||||
31130520
|
||||
472121821
|
||||
-1054910894
|
||||
-499784982
|
||||
-508051907
|
||||
-239312888
|
||||
-36874490
|
||||
-160560442
|
||||
-612146051
|
||||
\N
|
||||
-914254016
|
||||
-955919451
|
||||
444572750
|
||||
464011997
|
||||
114922279
|
||||
368088103
|
||||
\N
|
||||
1032465403
|
||||
-198412817
|
||||
-427355634
|
||||
764561021
|
||||
-319968927
|
||||
-742495989
|
||||
66602125
|
||||
335474465
|
||||
\N
|
||||
-295255877
|
||||
250999059
|
||||
526539904
|
||||
-632305975
|
||||
\N
|
||||
-462933479
|
||||
725444821
|
||||
-1014220649
|
||||
-976950894
|
||||
1050779420
|
||||
-922337893
|
||||
881175599
|
||||
-260490744
|
||||
975381286
|
||||
900263262
|
||||
48922968
|
||||
-598347542
|
||||
121514864
|
||||
-607528559
|
||||
\N
|
||||
-605421206
|
||||
-1033560416
|
||||
11538600
|
||||
-160000018
|
||||
-560613615
|
||||
-99553157
|
||||
450510072
|
||||
54811495
|
||||
-599428633
|
||||
23616163
|
||||
-218984524
|
||||
281874162
|
||||
795632049
|
||||
-743284993
|
||||
109773364
|
||||
446413166
|
||||
-827212018
|
||||
\N
|
||||
590703606
|
||||
219585528
|
||||
-852527230
|
||||
-56743535
|
||||
-31888159
|
||||
447756894
|
||||
81597117
|
||||
-514906619
|
||||
829002820
|
||||
194782415
|
||||
-861939426
|
||||
789235257
|
||||
1002760541
|
||||
77986645
|
||||
124541179
|
||||
839847275
|
||||
688643973
|
||||
\N
|
||||
-818330059
|
||||
\N
|
||||
\N
|
||||
571483597
|
||||
1043237102
|
||||
\N
|
||||
-260795164
|
||||
\N
|
||||
-80635223
|
||||
883946580
|
||||
-997239646
|
||||
417377536
|
||||
\N
|
||||
905148727
|
||||
75086673
|
||||
240863213
|
||||
-974803948
|
||||
-514042316
|
||||
780396140
|
||||
-773002241
|
||||
-839043143
|
||||
-1050961764
|
||||
-944793472
|
||||
971511639
|
||||
862816002
|
||||
-87163815
|
||||
\N
|
||||
601763342
|
||||
409313850
|
||||
-376132854
|
||||
-104608772
|
||||
793131268
|
||||
-402748367
|
||||
103010521
|
||||
589866409
|
||||
\N
|
||||
-806207129
|
||||
-92467487
|
||||
382080273
|
||||
-537053065
|
||||
296991677
|
||||
450543728
|
||||
36073823
|
||||
-518334030
|
||||
\N
|
||||
-823745191
|
||||
567487602
|
||||
82546145
|
||||
-388387055
|
||||
862364138
|
||||
1063492312
|
||||
\N
|
||||
-758175718
|
||||
910291639
|
||||
-161138360
|
||||
-397892038
|
||||
-543779825
|
||||
-678530933
|
||||
-245281302
|
||||
1038476033
|
||||
992074486
|
||||
248548658
|
||||
\N
|
||||
98497175
|
||||
-171252301
|
||||
18217558
|
||||
682347077
|
||||
\N
|
||||
310612886
|
||||
-118028644
|
||||
337185821
|
||||
-210791469
|
||||
301448323
|
||||
-906803508
|
||||
-356807299
|
||||
\N
|
||||
\N
|
||||
\N
|
||||
559848005
|
||||
\N
|
||||
31316502
|
||||
-952852111
|
||||
-906201820
|
||||
86880549
|
||||
-1067074828
|
||||
-554439888
|
||||
-372251154
|
||||
767868870
|
||||
485181743
|
||||
\N
|
||||
234322120
|
||||
\N
|
||||
469476289
|
||||
120818420
|
||||
973859819
|
||||
553938979
|
||||
666244197
|
||||
-1034134335
|
||||
-643847604
|
||||
-928942436
|
||||
-40098720
|
||||
913202598
|
||||
-634013637
|
||||
-124514124
|
||||
88422182
|
||||
362344229
|
||||
-955696569
|
||||
-883518062
|
||||
-589118966
|
||||
-917271271
|
||||
-789577219
|
||||
-1055370400
|
||||
653530707
|
||||
751509060
|
||||
-923377500
|
||||
-896739670
|
||||
1049674425
|
||||
713830537
|
||||
-919850486
|
||||
\N
|
||||
464008848
|
||||
-500611805
|
||||
1052904894
|
||||
1005514228
|
||||
-464230048
|
||||
940348010
|
||||
-521487154
|
||||
196319826
|
||||
-827331032
|
||||
606501605
|
||||
419601479
|
||||
\N
|
||||
\N
|
||||
-763299772
|
||||
-551662126
|
||||
-996151300
|
||||
656870503
|
||||
569347075
|
||||
-768904837
|
||||
\N
|
||||
-364654847
|
||||
-352793070
|
||||
-560639559
|
||||
\N
|
||||
69488952
|
||||
-236949153
|
||||
8643035
|
||||
722046549
|
||||
772759204
|
||||
934327163
|
||||
952426653
|
||||
-992250784
|
||||
-688516267
|
||||
\N
|
||||
23371654
|
||||
-277401737
|
||||
\N
|
||||
392817327
|
||||
-455495167
|
||||
208331771
|
||||
76220225
|
||||
-965469751
|
||||
-117604765
|
||||
134109425
|
||||
-286846823
|
||||
-976521495
|
||||
359070260
|
||||
-1033796401
|
||||
397275542
|
||||
928779613
|
||||
\N
|
||||
-479010011
|
||||
-408187297
|
||||
\N
|
||||
-544847539
|
||||
\N
|
||||
-328541470
|
||||
862677577
|
||||
-742793122
|
||||
-221057238
|
||||
-743659309
|
||||
-165126079
|
||||
-241769542
|
||||
-634439156
|
||||
228542599
|
||||
70091032
|
||||
763329904
|
||||
-269836367
|
||||
-86158045
|
||||
\N
|
||||
279028361
|
||||
-575426235
|
||||
-726811335
|
||||
260613141
|
||||
176220403
|
||||
-722725936
|
||||
800015615
|
||||
-223367075
|
||||
338624364
|
||||
195939828
|
||||
-751945238
|
||||
348787257
|
||||
-997923024
|
||||
-8605001
|
||||
-568010250
|
||||
\N
|
||||
-962777966
|
||||
870581366
|
||||
-713036908
|
||||
-307366031
|
||||
1058650551
|
||||
-8016540
|
||||
604533525
|
||||
774656817
|
||||
-148155805
|
||||
194042034
|
||||
944121304
|
||||
502530876
|
||||
-728423603
|
||||
567787452
|
||||
1051834880
|
||||
-1050394394
|
||||
843329917
|
||||
-583580255
|
||||
\N
|
||||
814196699
|
||||
1041013209
|
||||
-532683489
|
||||
644480699
|
||||
-1064568183
|
||||
-302358011
|
||||
66224442
|
||||
-779159623
|
||||
373241073
|
||||
652059193
|
||||
153158612
|
||||
1019561792
|
||||
-159367912
|
||||
764825007
|
||||
277019219
|
||||
539033342
|
||||
-99541768
|
||||
-748934480
|
||||
683758505
|
||||
\N
|
||||
110932412
|
||||
875195202
|
||||
154556209
|
||||
109603003
|
||||
32090837
|
||||
-763742564
|
||||
-76548222
|
||||
-910116085
|
||||
675149363
|
||||
-813726843
|
||||
-366033349
|
||||
995685874
|
||||
-987030706
|
||||
-135458917
|
||||
985423987
|
||||
-293582113
|
||||
88167527
|
||||
962971281
|
||||
\N
|
||||
345458787
|
||||
244011716
|
||||
530986493
|
||||
-985258624
|
||||
-972350494
|
||||
84247136
|
||||
854078794
|
||||
377796622
|
||||
-324275021
|
||||
-878489620
|
||||
864262985
|
||||
180124912
|
||||
\N
|
||||
-793083147
|
||||
-352435244
|
||||
-462586860
|
||||
-74556106
|
||||
28209937
|
||||
222627005
|
||||
\N
|
||||
-760794594
|
|
@ -0,0 +1,600 @@
|
|||
571162582773129
|
||||
-968633726566092
|
||||
-84469929177915858
|
||||
4162557330816307
|
||||
37260777124104530
|
||||
-4777143170215921
|
||||
-18226963197866476
|
||||
-8625828876661828
|
||||
7656239724464679
|
||||
-5489288588377948
|
||||
-63386438189169149
|
||||
75567289191112039
|
||||
-41526404145192890
|
||||
-4533895872892689
|
||||
-82739169202936497
|
||||
6911236575041352
|
||||
75842816214481185
|
||||
\N
|
||||
7669153338841222
|
||||
-37026243121878430
|
||||
-3175877126637642
|
||||
-16007995163334251
|
||||
-3395795664631244
|
||||
63935989156878460
|
||||
-16954091159640632
|
||||
5318858710978884
|
||||
-3108641393657255
|
||||
55102218209821952
|
||||
-8798896163938228
|
||||
-2840321381342671
|
||||
73738755119374157
|
||||
59644096131825710
|
||||
-84322607121172895
|
||||
-60180910135826388
|
||||
-2124570924863354
|
||||
-10333657186851396
|
||||
58703296194197255
|
||||
56676327154787999
|
||||
8481545099866909
|
||||
464571291354841
|
||||
\N
|
||||
-32049226128340060
|
||||
\N
|
||||
62491046169211228
|
||||
-4178902379487935
|
||||
-58704035165707105
|
||||
-4370744691117233
|
||||
-1145699597209467
|
||||
71898480208016040
|
||||
40210785139855015
|
||||
30111868125808287
|
||||
3442459016537352
|
||||
\N
|
||||
-9847254040823009
|
||||
28204892100790341
|
||||
58222430175280391
|
||||
-5250734726525414
|
||||
\N
|
||||
7331215572768482
|
||||
\N
|
||||
7855555216013852
|
||||
-8445953483741985
|
||||
-553872842685130
|
||||
3758966176486019
|
||||
\N
|
||||
68254106110727666
|
||||
-779085030760061
|
||||
9530941396584628
|
||||
17210298132952098
|
||||
15654503142207692
|
||||
-12642726199954453
|
||||
95074133209723437
|
||||
-44100539106198634
|
||||
-42897443120872206
|
||||
-70803370174642981
|
||||
53824237192501978
|
||||
14091118778760
|
||||
-72030601214124822
|
||||
27500286125861367
|
||||
-4058285263735350
|
||||
\N
|
||||
850104221271283
|
||||
101571367179586565
|
||||
-105758499180483916
|
||||
14231743102597792
|
||||
9115311735961929
|
||||
-5264208557722402
|
||||
1462317488951483
|
||||
88960681204192702
|
||||
79197578144317932
|
||||
32261563115032881
|
||||
-19665360148210462
|
||||
-94405000169758831
|
||||
\N
|
||||
5681300149925625
|
||||
5558458639524735
|
||||
-81538564141087644
|
||||
5508723459108571
|
||||
-29815658164026313
|
||||
46416288118123076
|
||||
-2080732169659869
|
||||
\N
|
||||
6778478169280557
|
||||
-51815253164990834
|
||||
-5552057233004262
|
||||
-3530123878334630
|
||||
\N
|
||||
-79781393192459088
|
||||
81091470135265063
|
||||
-3174546872057439
|
||||
-43491832133972989
|
||||
-26029833130989740
|
||||
3551109553373570
|
||||
\N
|
||||
-982183979826234
|
||||
13323171191699130
|
||||
-3271539392992822
|
||||
478227196042750
|
||||
-41112576193858203
|
||||
97184864103977346
|
||||
73232664160658748
|
||||
3461370054794093
|
||||
5763508331306600
|
||||
-54067138148025345
|
||||
-75460101103530266
|
||||
-315484375600487
|
||||
9769190516994377
|
||||
\N
|
||||
-72400967138661448
|
||||
\N
|
||||
-10234725547449166
|
||||
-6051348037059350
|
||||
-2952261266043490
|
||||
75387914189279439
|
||||
3625967156008709
|
||||
-3766224622641800
|
||||
5898363257062410
|
||||
7698143425285206
|
||||
66546389146435468
|
||||
31200605132406177
|
||||
-3455213658576548
|
||||
47528730130302036
|
||||
62432830201286045
|
||||
-88472988116517129
|
||||
6825920650153638
|
||||
-46045869146143591
|
||||
6326172435402615
|
||||
-5919362998522005
|
||||
36401689161832477
|
||||
80326684899441
|
||||
4144471433608822
|
||||
5800063247595057
|
||||
-44301689196562406
|
||||
-6466479342162519
|
||||
-89535305105978555
|
||||
37464982130305086
|
||||
60232609173699392
|
||||
98323565101041419
|
||||
40099224107628429
|
||||
3226497172413119
|
||||
9238219853212754
|
||||
-1319461392548924
|
||||
97305838213564393
|
||||
752930892266536
|
||||
28408158162749842
|
||||
-87755317206819285
|
||||
80611167141629044
|
||||
-94055745195646002
|
||||
-73914297162645226
|
||||
-8246391150836051
|
||||
48938555118563058
|
||||
\N
|
||||
-21228069105374351
|
||||
-31494183206308739
|
||||
\N
|
||||
\N
|
||||
-559081218598528
|
||||
17582315157740574
|
||||
74577592104106586
|
||||
-66735635209305671
|
||||
68257070213090596
|
||||
-6488749444380913
|
||||
-36968819122130413
|
||||
-35640469185246031
|
||||
9784971155581421
|
||||
21965956184257469
|
||||
-33025198141891978
|
||||
49224647180407910
|
||||
5142127206085466
|
||||
-40935100123530887
|
||||
533636213233375
|
||||
105489717166223849
|
||||
-131230197744959
|
||||
41828998199086393
|
||||
1971243766433517
|
||||
-873934263916195
|
||||
-2268220620617840
|
||||
\N
|
||||
-2212273711508266
|
||||
2523744596981136
|
||||
97944271015587
|
||||
1720454174447185
|
||||
-1051086313079088
|
||||
-91905196206426419
|
||||
-31531876151110971
|
||||
69747799124920022
|
||||
4700849531099668
|
||||
-57732117189691029
|
||||
2847488818621365
|
||||
357976652379232
|
||||
-32560447173517911
|
||||
-1158053397641905
|
||||
-21736437137866308
|
||||
-17430356141694709
|
||||
-29946543151537742
|
||||
4728756183450097
|
||||
-70989678146724148
|
||||
78026986123049651
|
||||
3541070096728143
|
||||
1103371642176407
|
||||
-78857021155945773
|
||||
-104651503212762593
|
||||
-72082479133841767
|
||||
2868615668375126
|
||||
-7420152739539637
|
||||
-556652372234871
|
||||
-55819000120597832
|
||||
-91907154152964612
|
||||
-2727691960839202
|
||||
62416504185893525
|
||||
4619484558504848
|
||||
484698539302511
|
||||
5864338017307905
|
||||
-65197962143482233
|
||||
\N
|
||||
90881747107819569
|
||||
54643963175081891
|
||||
\N
|
||||
-34792399104423355
|
||||
-28850436210552816
|
||||
5001330979085503
|
||||
72990723181773288
|
||||
69414211169505452
|
||||
\N
|
||||
-55512818157891961
|
||||
10050528050060089
|
||||
-613762631776546
|
||||
38246351168205376
|
||||
-5786513272830532
|
||||
101738698195446145
|
||||
\N
|
||||
-77765032167083438
|
||||
-84816033119249140
|
||||
105242892203914398
|
||||
92055393128607360
|
||||
-34862239187356390
|
||||
12061146172958360
|
||||
7111235810225910
|
||||
8968206663351549
|
||||
-106417733134789736
|
||||
-34321050141796771
|
||||
3585839741182305
|
||||
-38410339162250019
|
||||
-61235896190749913
|
||||
53837300138272042
|
||||
-9188389860977835
|
||||
81031910126275164
|
||||
-43990369169635449
|
||||
-61494936120005403
|
||||
70138886163788387
|
||||
-91544802167010959
|
||||
-9164807100625716
|
||||
835704521750764
|
||||
97684808164908969
|
||||
1047818917821302
|
||||
43113961189441677
|
||||
-24182774203744737
|
||||
-1221002133469832
|
||||
-35060838149098801
|
||||
\N
|
||||
8409585462972514
|
||||
-7157963742358126
|
||||
26000275165530950
|
||||
-9522779489052570
|
||||
56854170165153244
|
||||
-85847371170247458
|
||||
16772952161612585
|
||||
-48765236169076760
|
||||
10402001581872476
|
||||
\N
|
||||
18148261189922237
|
||||
-53074917120516766
|
||||
\N
|
||||
6176962454225695
|
||||
9932356559664520
|
||||
\N
|
||||
-2133998678192202
|
||||
-104142621205586199
|
||||
92986938175269298
|
||||
-257176878614913
|
||||
47849345165295943
|
||||
-7719754534416116
|
||||
-9789607872482825
|
||||
-41667560211143782
|
||||
62163616168923197
|
||||
-9438915483943230
|
||||
9870229482590359
|
||||
64345519117194501
|
||||
-11025440131551888
|
||||
-91121534101114861
|
||||
-5603896551067982
|
||||
\N
|
||||
104654486191030769
|
||||
8126142532532604
|
||||
2739168944145437
|
||||
810913166922484
|
||||
-2275160635018706
|
||||
-5590175254646458
|
||||
-74033091125584591
|
||||
71055832144361004
|
||||
-51757850204494955
|
||||
-5420931332383096
|
||||
-91398360142997499
|
||||
-18179323160814887
|
||||
-91113201173019563
|
||||
-54605499214110886
|
||||
-7765905699369496
|
||||
65516124193198338
|
||||
-47405416136137551
|
||||
\N
|
||||
-430277287965650
|
||||
19642228156903804
|
||||
-35249292101345079
|
||||
2799652787535702
|
||||
-57468661185387080
|
||||
-23797897140461786
|
||||
4713853950884486
|
||||
53063490172759270
|
||||
-97546793157524699
|
||||
14992347152649764
|
||||
83034727103573700
|
||||
-378837396167658
|
||||
-6394357106445826
|
||||
40448837177180348
|
||||
93922571105944376
|
||||
70215001351267
|
||||
1422473144953269
|
||||
-19485771168366142
|
||||
3871292384756271
|
||||
27669760207256401
|
||||
-9519109972178611
|
||||
87342599111176867
|
||||
438163125486326
|
||||
-3342596077562208
|
||||
95638921175035575
|
||||
-8455888025381745
|
||||
-5553812170504574
|
||||
1028731887465695
|
||||
1874801639655453
|
||||
-6460339926511384
|
||||
12935207104254160
|
||||
18702887190948042
|
||||
38973128194072985
|
||||
-74007477194642941
|
||||
48329901174621299
|
||||
-38776912163952004
|
||||
73217306123132502
|
||||
10033544840731274
|
||||
\N
|
||||
-7106499073575381
|
||||
-72577317113294180
|
||||
-5755101056886868
|
||||
-2153332538359850
|
||||
3675308624690700
|
||||
-103461942101729940
|
||||
-64592601205133764
|
||||
31745072163056028
|
||||
-8827303101164453
|
||||
\N
|
||||
9920716477549680
|
||||
19269113140876068
|
||||
10346764378482915
|
||||
-9547067291656372
|
||||
\N
|
||||
68899277111163150
|
||||
-5154067635858711
|
||||
94977075194786589
|
||||
87693228128699438
|
||||
7485821479753669
|
||||
-8472668186271245
|
||||
2589559354466271
|
||||
107349961123032263
|
||||
-78000859126368058
|
||||
3033692340944986
|
||||
-56442118204131253
|
||||
\N
|
||||
8313139926300583
|
||||
\N
|
||||
20174427169387802
|
||||
-20817519112818564
|
||||
29328370152711004
|
||||
-10310696988128501
|
||||
6742185960379702
|
||||
9975388579236356
|
||||
\N
|
||||
-75913155126775951
|
||||
-47356034144438153
|
||||
64337514105141385
|
||||
84133515165177048
|
||||
85904591142596001
|
||||
154102825333184
|
||||
82448968210511128
|
||||
\N
|
||||
-4132665145813622
|
||||
457257666629329
|
||||
\N
|
||||
-65756686131235045
|
||||
5770121211587146
|
||||
\N
|
||||
-681329651615480
|
||||
18252938164428001
|
||||
\N
|
||||
-964719458030678
|
||||
-4727044638245516
|
||||
14382487198474686
|
||||
104931686129854363
|
||||
\N
|
||||
-524490443508808
|
||||
-5409828867122403
|
||||
-9181546297405233
|
||||
148961126577670
|
||||
-457861622113867
|
||||
\N
|
||||
-8291535678315181
|
||||
31193366146847993
|
||||
-29045667151925792
|
||||
76199591212655385
|
||||
101708151208313969
|
||||
\N
|
||||
7611981289809249
|
||||
-4063202412293642
|
||||
93382613193471632
|
||||
-66793190128641761
|
||||
2119337550577124
|
||||
50006559150465155
|
||||
-37785078129030470
|
||||
67070256141072548
|
||||
-57427591153091745
|
||||
\N
|
||||
56930159168628907
|
||||
6262653086116434
|
||||
1812020175980923
|
||||
-60824628201994696
|
||||
-41445956104770511
|
||||
-98561174197889445
|
||||
65081378137952117
|
||||
-4709913937816332
|
||||
15168293135976771
|
||||
-79444556211593680
|
||||
54524573183207193
|
||||
\N
|
||||
80599107103738466
|
||||
-15080292202625850
|
||||
3599922292681710
|
||||
10548113488081741
|
||||
-16095559175518178
|
||||
77523877187189428
|
||||
-1425168149826835
|
||||
3224427236896674
|
||||
-35199492127195051
|
||||
-6069164398850959
|
||||
9796493012969240
|
||||
1655940150099642
|
||||
5593028453315162
|
||||
54543795101679613
|
||||
-4901907019878396
|
||||
-16277768201853340
|
||||
42702008211664372
|
||||
100465864162056788
|
||||
\N
|
||||
-7259772955295969
|
||||
-43344869168379475
|
||||
2387994273960108
|
||||
6813412213220101
|
||||
-35045975201264603
|
||||
-4169039115935033
|
||||
-3465320744627564
|
||||
\N
|
||||
-8774505320366729
|
||||
-10234221080903233
|
||||
\N
|
||||
-33431287210348996
|
||||
-18686684154709649
|
||||
11065021143131398
|
||||
98202891135320415
|
||||
-4804117047782001
|
||||
-8602172936734534
|
||||
1510532842674793
|
||||
\N
|
||||
-48895594123983692
|
||||
1551674012705189
|
||||
-9340844216200742
|
||||
45730748190013165
|
||||
94523139162337073
|
||||
2609069738447319
|
||||
7695297236865360
|
||||
-18562157167827878
|
||||
-1388967693233129
|
||||
-3838287274649635
|
||||
36110661195956474
|
||||
-5738342872254390
|
||||
-5116252556595312
|
||||
7682319991347229
|
||||
55542449158580255
|
||||
-3007003760543423
|
||||
7296692443452118
|
||||
1155927925107625
|
||||
7543653043525059
|
||||
\N
|
||||
-94909898165568234
|
||||
41218109154904764
|
||||
6633352313198796
|
||||
-15778782124332590
|
||||
103491985174098803
|
||||
-1784322577952292
|
||||
-9096880634185423
|
||||
5075356316566121
|
||||
5795491194207193
|
||||
70413333187654805
|
||||
60851035164462435
|
||||
-81411679171424293
|
||||
89150284196809557
|
||||
-8141710960632445
|
||||
21739482143854904
|
||||
104172284182307094
|
||||
-9010915383273451
|
||||
102243779193394851
|
||||
1446591350291789
|
||||
20672486141595277
|
||||
-10451707129953600
|
||||
3808314557084451
|
||||
4202888939347042
|
||||
61647148205322240
|
||||
\N
|
||||
79376379132868914
|
||||
8760919795930088
|
||||
-45661711132605083
|
||||
-970917635875382
|
||||
\N
|
||||
-105361387199605165
|
||||
-4047373221704350
|
||||
50014571178988278
|
||||
\N
|
||||
-1945986026058284
|
||||
-70697134125038763
|
||||
968299419395944
|
||||
-54310692168796488
|
||||
-57071775143358867
|
||||
634196190032528
|
||||
87012477120875722
|
||||
1524418494420369
|
||||
4675805785402153
|
||||
-6649246646077956
|
||||
29400170100479605
|
||||
-88735135555188
|
||||
958687447945394
|
||||
36322738110509385
|
||||
-4530787153175354
|
||||
7246095930595264
|
||||
25762424121462081
|
||||
-101889593195744622
|
||||
-12299006125085795
|
||||
-8970808434914172
|
||||
-6316433271930092
|
||||
-4071744674545863
|
||||
12598555199787281
|
||||
64522791141639046
|
||||
91810857119110814
|
||||
-63801044209819006
|
||||
-8216052623004959
|
||||
\N
|
||||
-43255707123485242
|
||||
4483587649977559
|
||||
-7266625765593156
|
||||
-3085636132347609
|
||||
-72544126194422740
|
||||
-42452203161494667
|
||||
\N
|
||||
-65498988106251024
|
||||
-53102696163635269
|
||||
6547188826700461
|
||||
13150951201167246
|
||||
10110681961565834
|
||||
-73380538100200918
|
||||
98881899210477509
|
||||
21804516135251682
|
||||
-78292833188851738
|
||||
-31304191599521
|
||||
-21287065172320779
|
||||
3221074184065080
|
|
@ -0,0 +1,612 @@
|
|||
1748 days 11:26:21
|
||||
-2771 days -11:53:23
|
||||
-6230 days -20:26:04
|
||||
8945 days 14:56:37
|
||||
3581 days 23:33:20
|
||||
199 days 21:21:23
|
||||
\N
|
||||
\N
|
||||
-3568 days -06:07:25
|
||||
-3738 days -10:16:35
|
||||
1798 days 04:44:12
|
||||
10847 days 22:03:35
|
||||
-9527 days -15:38:39
|
||||
9648 days 10:24:38
|
||||
2256 days 12:07:24
|
||||
-4327 days -18:09:39
|
||||
-10857 days -13:31:07
|
||||
-5953 days -22:31:57
|
||||
6040 days 10:40:15
|
||||
10316 days 08:23:28
|
||||
-6639 days -19:43:47
|
||||
-8066 days -00:23:40
|
||||
2249 days 15:40:53
|
||||
10792 days 15:10:06
|
||||
-6302 days -16:08:38
|
||||
-12058 days -02:55:05
|
||||
-5738 days -10:39:26
|
||||
-10108 days -21:09:51
|
||||
-58 days -02:15:25
|
||||
-12240 days -03:38:13
|
||||
-59 days -11:53:16
|
||||
799 days 02:04:53
|
||||
7911 days 23:12:01
|
||||
242 days 03:57:29
|
||||
-390 days -13:23:08
|
||||
-5179 days -18:01:34
|
||||
-8577 days -17:10:05
|
||||
-11369 days -02:10:38
|
||||
-332 days -12:27:59
|
||||
1421 days 05:21:36
|
||||
-1310 days -17:18:48
|
||||
11773 days 16:56:50
|
||||
-4543 days -00:45:49
|
||||
-662 days -15:27:34
|
||||
-4847 days -13:30:15
|
||||
-7971 days -06:18:34
|
||||
1757 days 09:59:42
|
||||
3574 days 17:17:41
|
||||
2119 days 23:22:46
|
||||
-2935 days -00:26:37
|
||||
-3700 days -15:35:25
|
||||
-12058 days -21:45:31
|
||||
1503 days 09:38:15
|
||||
10519 days 23:34:24
|
||||
3575 days 18:19:24
|
||||
-10828 days -04:14:35
|
||||
-10607 days -12:28:31
|
||||
-938 days -02:09:57
|
||||
3453 days 17:25:05
|
||||
\N
|
||||
-548 days -16:15:50
|
||||
-2594 days -09:39:39
|
||||
9024 days 05:44:35
|
||||
3370 days 21:44:34
|
||||
5502 days 15:10:21
|
||||
-11567 days -18:48:51
|
||||
-8329 days -12:27:53
|
||||
-6252 days -20:27:48
|
||||
9289 days 07:37:58
|
||||
8992 days 06:37:03
|
||||
-394 days -20:24:39
|
||||
-7805 days -00:20:59
|
||||
-12405 days -02:00:04
|
||||
11065 days 23:25:32
|
||||
-5991 days -05:00:15
|
||||
-2667 days -22:58:04
|
||||
7340 days 03:25:50
|
||||
-3432 days -02:02:37
|
||||
6979 days 12:44:26
|
||||
8861 days 12:43:57
|
||||
10377 days 06:21:51
|
||||
-1995 days -03:16:36
|
||||
-136 days -20:25:24
|
||||
4901 days 00:01:21
|
||||
-2662 days -17:36:30
|
||||
-10533 days -00:09:32
|
||||
90 days 15:09:55
|
||||
8068 days 00:10:48
|
||||
-10598 days -23:22:17
|
||||
10085 days 00:31:05
|
||||
-8281 days -13:41:52
|
||||
3990 days 05:29:52
|
||||
-8972 days -12:32:59
|
||||
-2321 days -22:15:46
|
||||
6416 days 13:43:59
|
||||
7215 days 15:02:19
|
||||
2076 days 01:43:17
|
||||
-3553 days -07:10:15
|
||||
8218 days 00:01:00
|
||||
-5766 days -19:25:21
|
||||
7727 days 10:36:16
|
||||
3414 days 01:24:30
|
||||
-8957 days -15:29:24
|
||||
7902 days 12:30:47
|
||||
-1183 days -04:35:24
|
||||
10302 days 09:31:47
|
||||
6163 days 06:46:15
|
||||
-10350 days -16:27:57
|
||||
1994 days 09:38:44
|
||||
7490 days 03:19:36
|
||||
4127 days 01:50:41
|
||||
\N
|
||||
-4752 days -00:03:05
|
||||
9072 days 06:11:14
|
||||
5565 days 12:40:05
|
||||
11477 days 07:08:16
|
||||
155 days 08:17:54
|
||||
-10799 days -21:17:31
|
||||
6978 days 06:44:44
|
||||
-11813 days -04:32:46
|
||||
1322 days 23:25:33
|
||||
-4172 days -07:54:00
|
||||
-6942 days -21:56:44
|
||||
1335 days 21:19:11
|
||||
523 days 18:08:28
|
||||
220 days 19:05:42
|
||||
-1801 days -17:12:44
|
||||
9763 days 05:23:55
|
||||
-10965 days -20:16:30
|
||||
6490 days 09:05:30
|
||||
-11980 days -18:36:02
|
||||
2954 days 00:41:14
|
||||
-7538 days -14:38:35
|
||||
-2728 days -06:27:30
|
||||
-4375 days -16:56:38
|
||||
-5275 days -17:22:29
|
||||
-12473 days -22:15:51
|
||||
\N
|
||||
2846 days 01:22:08
|
||||
8534 days 23:36:42
|
||||
10552 days 08:10:01
|
||||
1321 days 07:26:00
|
||||
-3600 days -00:48:35
|
||||
7951 days 17:51:17
|
||||
183 days 06:52:48
|
||||
-8472 days -18:01:29
|
||||
-936 days -12:03:46
|
||||
5467 days 14:23:59
|
||||
-8553 days -02:53:57
|
||||
-11491 days -03:21:12
|
||||
-10648 days -02:26:43
|
||||
-2966 days -06:58:23
|
||||
-12431 days -06:22:30
|
||||
-9162 days -11:37:47
|
||||
2698 days 22:29:45
|
||||
4416 days 08:44:27
|
||||
482 days 16:02:41
|
||||
-9629 days -22:39:29
|
||||
10917 days 12:49:36
|
||||
-3495 days -07:20:56
|
||||
5625 days 20:16:12
|
||||
1548 days 10:21:09
|
||||
-12923 days -05:28:48
|
||||
-2310 days -07:49:09
|
||||
7677 days 13:21:01
|
||||
8530 days 06:54:22
|
||||
-2696 days -09:55:01
|
||||
7343 days 01:40:45
|
||||
-4009 days -08:22:33
|
||||
7190 days 21:23:41
|
||||
1974 days 22:02:10
|
||||
6034 days 22:30:57
|
||||
-11697 days -04:47:36
|
||||
10012 days 08:11:09
|
||||
1204 days 14:58:21
|
||||
4667 days 23:00:42
|
||||
-10120 days -01:41:49
|
||||
8885 days 22:17:23
|
||||
-995 days -14:46:27
|
||||
565 days 02:23:32
|
||||
8068 days 19:50:34
|
||||
6715 days 00:51:20
|
||||
-2833 days -02:13:10
|
||||
-7675 days -19:12:28
|
||||
-6696 days -06:23:39
|
||||
1911 days 12:17:48
|
||||
-1128 days -04:26:05
|
||||
-7445 days -08:21:53
|
||||
-3892 days -14:50:27
|
||||
-5745 days -12:46:01
|
||||
-7389 days -21:27:09
|
||||
11436 days 05:06:06
|
||||
-2183 days -17:44:21
|
||||
-8301 days -19:05:16
|
||||
4941 days 10:04:16
|
||||
-1342 days -00:42:15
|
||||
-12044 days -01:16:13
|
||||
2758 days 20:28:33
|
||||
2832 days 18:05:22
|
||||
8076 days 00:20:56
|
||||
1457 days 19:01:58
|
||||
3509 days 06:02:22
|
||||
8288 days 14:43:44
|
||||
-7354 days -22:38:15
|
||||
-1453 days -23:14:42
|
||||
-7944 days -18:27:40
|
||||
-239 days -13:56:15
|
||||
-9699 days -18:33:50
|
||||
-10236 days -01:21:09
|
||||
-7188 days -09:39:59
|
||||
3234 days 15:52:22
|
||||
-10441 days -02:00:33
|
||||
-4574 days -17:32:16
|
||||
5013 days 04:00:31
|
||||
-4047 days -11:12:00
|
||||
\N
|
||||
-10041 days -01:03:19
|
||||
-12435 days -15:40:06
|
||||
-11694 days -07:11:46
|
||||
-434 days -05:39:07
|
||||
-19 days -16:31:13
|
||||
-4947 days -03:22:20
|
||||
6049 days 18:30:28
|
||||
-5790 days -13:09:39
|
||||
480 days 23:23:21
|
||||
2155 days 05:03:12
|
||||
2438 days 18:45:31
|
||||
7113 days 01:18:52
|
||||
-3259 days -19:19:31
|
||||
-9646 days -06:50:26
|
||||
-7176 days -15:17:24
|
||||
10588 days 22:57:01
|
||||
7427 days 09:25:16
|
||||
-7762 days -14:43:54
|
||||
3761 days 15:53:03
|
||||
290 days 15:40:32
|
||||
5955 days 19:07:54
|
||||
-7101 days -15:58:50
|
||||
1283 days 15:54:51
|
||||
-1856 days -20:27:35
|
||||
3953 days 03:13:19
|
||||
\N
|
||||
6286 days 00:33:36
|
||||
10668 days 05:28:51
|
||||
11000 days 14:01:35
|
||||
4973 days 08:38:59
|
||||
7503 days 08:55:14
|
||||
2837 days 06:51:40
|
||||
-2162 days -17:29:50
|
||||
9735 days 22:31:27
|
||||
-12643 days -09:03:02
|
||||
-3099 days -23:05:58
|
||||
3574 days 14:34:48
|
||||
-8487 days -16:33:27
|
||||
-3814 days -13:46:46
|
||||
-247 days -13:57:10
|
||||
109 days 02:01:52
|
||||
6894 days 03:39:53
|
||||
2791 days 23:24:16
|
||||
5763 days 15:52:42
|
||||
4160 days 22:20:52
|
||||
-3047 days -15:41:28
|
||||
10129 days 05:48:14
|
||||
655 days 21:22:30
|
||||
-1249 days -13:46:55
|
||||
-670 days -09:57:10
|
||||
8853 days 20:36:22
|
||||
31 days 23:14:00
|
||||
9370 days 13:03:26
|
||||
3914 days 00:30:54
|
||||
5921 days 22:43:34
|
||||
-3753 days -06:14:50
|
||||
9099 days 02:17:12
|
||||
2865 days 11:17:43
|
||||
2057 days 15:01:53
|
||||
-4108 days -10:23:00
|
||||
-5066 days -21:37:35
|
||||
2863 days 22:15:47
|
||||
-5654 days -14:37:25
|
||||
-11724 days -08:14:41
|
||||
-9317 days -17:40:37
|
||||
-12683 days -19:56:10
|
||||
-10364 days -01:28:57
|
||||
-12270 days -05:47:08
|
||||
-12181 days -06:26:48
|
||||
8378 days 09:56:31
|
||||
-9114 days -01:00:41
|
||||
-1174 days -22:58:50
|
||||
-9308 days -12:04:06
|
||||
1535 days 01:19:45
|
||||
-7855 days -05:25:15
|
||||
4205 days 00:35:17
|
||||
10507 days 04:27:33
|
||||
\N
|
||||
-566 days -01:36:09
|
||||
-11306 days -14:17:28
|
||||
-10463 days -09:44:02
|
||||
-2679 days -12:29:05
|
||||
7233 days 00:29:37
|
||||
-2959 days -14:45:29
|
||||
7409 days 12:12:27
|
||||
-2951 days -00:37:54
|
||||
6076 days 00:27:14
|
||||
1989 days 12:23:54
|
||||
-6286 days -00:15:17
|
||||
-5485 days -14:17:50
|
||||
-8739 days -17:42:24
|
||||
3875 days 11:24:17
|
||||
-3004 days -13:30:19
|
||||
10383 days 10:08:29
|
||||
-8261 days -01:24:41
|
||||
-4398 days -10:43:25
|
||||
8738 days 00:40:22
|
||||
6148 days 23:56:32
|
||||
-5789 days -14:22:50
|
||||
4747 days 18:58:16
|
||||
11555 days 21:52:56
|
||||
7034 days 06:35:38
|
||||
-12510 days -12:02:30
|
||||
-7087 days -08:28:34
|
||||
-7587 days -23:09:54
|
||||
4831 days 16:01:13
|
||||
-7746 days -16:43:47
|
||||
1962 days 11:08:54
|
||||
-7050 days -07:09:35
|
||||
-2595 days -08:02:15
|
||||
3135 days 16:20:43
|
||||
4114 days 06:42:47
|
||||
6542 days 05:09:18
|
||||
-11449 days -20:54:48
|
||||
9299 days 12:41:02
|
||||
4299 days 05:30:41
|
||||
-196 days -14:43:53
|
||||
9134 days 16:01:15
|
||||
10910 days 00:53:35
|
||||
-10974 days -17:26:16
|
||||
2952 days 07:37:10
|
||||
-8030 days -20:45:05
|
||||
-4037 days -05:51:34
|
||||
7553 days 01:05:58
|
||||
-2253 days -15:17:36
|
||||
-3808 days -13:47:12
|
||||
-5893 days -02:28:14
|
||||
8697 days 09:10:41
|
||||
-12560 days -21:45:19
|
||||
\N
|
||||
-6808 days -23:17:31
|
||||
-9275 days -06:24:17
|
||||
-4576 days -04:40:00
|
||||
-926 days -01:54:23
|
||||
-516 days -05:17:15
|
||||
4180 days 07:04:20
|
||||
-9826 days -23:33:11
|
||||
-77 days -03:56:25
|
||||
5599 days 05:02:56
|
||||
1247 days 11:33:16
|
||||
-11522 days -22:07:08
|
||||
1513 days 19:37:30
|
||||
-4664 days -17:59:08
|
||||
1202 days 14:16:15
|
||||
-5539 days -05:18:35
|
||||
-12706 days -23:17:47
|
||||
1735 days 00:57:48
|
||||
3471 days 20:40:18
|
||||
1365 days 00:44:23
|
||||
-8385 days -09:01:45
|
||||
7335 days 06:33:44
|
||||
-9736 days -06:09:59
|
||||
-8423 days -16:05:19
|
||||
-5411 days -17:11:17
|
||||
4304 days 01:12:07
|
||||
-4230 days -03:34:05
|
||||
-6570 days -22:06:27
|
||||
3576 days 05:13:19
|
||||
-2792 days -04:07:12
|
||||
-11528 days -13:42:31
|
||||
6526 days 19:45:07
|
||||
488 days 12:28:03
|
||||
2206 days 11:11:23
|
||||
10428 days 23:47:56
|
||||
-11168 days -16:23:59
|
||||
-689 days -15:58:43
|
||||
-5443 days -06:59:01
|
||||
-8505 days -05:59:07
|
||||
-6971 days -16:02:43
|
||||
5759 days 02:47:33
|
||||
-8460 days -12:54:34
|
||||
-6811 days -04:41:10
|
||||
161 days 04:05:43
|
||||
-3793 days -19:54:41
|
||||
5175 days 16:56:13
|
||||
9629 days 06:41:59
|
||||
-1957 days -20:57:17
|
||||
1386 days 02:52:34
|
||||
-11433 days -12:15:19
|
||||
6995 days 08:16:54
|
||||
-5440 days -13:50:07
|
||||
\N
|
||||
-12569 days -02:07:24
|
||||
-745 days -23:01:35
|
||||
-12126 days -09:59:26
|
||||
-6827 days -06:16:45
|
||||
5415 days 05:31:17
|
||||
-8860 days -05:00:30
|
||||
4263 days 22:01:16
|
||||
5529 days 19:33:03
|
||||
-9951 days -04:31:38
|
||||
4518 days 23:16:10
|
||||
-7559 days -02:17:48
|
||||
-3262 days -00:19:03
|
||||
3369 days 12:43:16
|
||||
7394 days 01:50:49
|
||||
-8384 days -05:35:48
|
||||
10399 days 22:57:43
|
||||
-3315 days -07:19:47
|
||||
3558 days 10:47:06
|
||||
-11365 days -08:52:35
|
||||
7162 days 05:55:08
|
||||
-15 days -11:28:55
|
||||
-1488 days -21:17:32
|
||||
1888 days 11:33:40
|
||||
6764 days 16:00:41
|
||||
3693 days 20:33:29
|
||||
3903 days 20:46:46
|
||||
4438 days 19:02:47
|
||||
10668 days 19:53:49
|
||||
9658 days 03:06:51
|
||||
9572 days 18:13:11
|
||||
11185 days 19:57:35
|
||||
11347 days 15:46:14
|
||||
2565 days 21:15:51
|
||||
-1429 days -16:46:30
|
||||
-7691 days -15:31:38
|
||||
-199 days -22:25:06
|
||||
-2118 days -16:03:13
|
||||
3371 days 12:32:24
|
||||
-12416 days -21:18:04
|
||||
11799 days 18:51:26
|
||||
-5976 days -19:33:37
|
||||
5980 days 13:44:23
|
||||
-1778 days -17:18:48
|
||||
-4636 days -17:45:06
|
||||
-8502 days -15:11:20
|
||||
-3732 days -14:34:28
|
||||
-7282 days -18:28:40
|
||||
5062 days 13:33:02
|
||||
6399 days 13:41:08
|
||||
2291 days 09:09:56
|
||||
9458 days 16:06:07
|
||||
7678 days 05:05:33
|
||||
-12054 days -13:31:00
|
||||
-3362 days -07:41:50
|
||||
-5693 days -21:32:36
|
||||
6597 days 19:10:20
|
||||
5161 days 09:56:55
|
||||
-9860 days -17:18:35
|
||||
-2293 days -23:12:04
|
||||
10459 days 13:16:26
|
||||
2265 days 13:04:27
|
||||
10313 days 14:45:01
|
||||
10054 days 22:24:22
|
||||
2984 days 07:57:12
|
||||
-5791 days -03:00:07
|
||||
6534 days 08:35:43
|
||||
-11438 days -14:25:10
|
||||
-6859 days -16:50:55
|
||||
-8909 days -10:22:34
|
||||
-3517 days -21:18:12
|
||||
7480 days 00:21:27
|
||||
-795 days -15:06:11
|
||||
-9404 days -23:24:01
|
||||
7663 days 01:41:12
|
||||
-713 days -01:01:42
|
||||
1650 days 12:24:05
|
||||
-7495 days -05:04:58
|
||||
4000 days 21:11:36
|
||||
1138 days 18:33:07
|
||||
3944 days 15:56:41
|
||||
3289 days 17:22:03
|
||||
-8837 days -21:25:58
|
||||
-4677 days -15:32:13
|
||||
-10750 days -23:04:22
|
||||
10140 days 05:58:50
|
||||
6143 days 21:16:02
|
||||
3566 days 23:49:41
|
||||
5887 days 06:12:51
|
||||
5423 days 20:58:45
|
||||
5379 days 11:15:53
|
||||
2123 days 03:34:50
|
||||
-9389 days -22:55:12
|
||||
1357 days 02:09:47
|
||||
10142 days 04:25:36
|
||||
-6926 days -18:43:31
|
||||
-6424 days -21:14:28
|
||||
2982 days 10:44:03
|
||||
4922 days 11:17:28
|
||||
-2045 days -18:22:51
|
||||
-8943 days -13:02:39
|
||||
6900 days 17:08:21
|
||||
2510 days 06:39:59
|
||||
-1835 days -22:15:12
|
||||
\N
|
||||
9024 days 00:03:49
|
||||
-2045 days -06:37:43
|
||||
6892 days 06:31:32
|
||||
-9844 days -06:17:20
|
||||
2870 days 23:46:12
|
||||
-5579 days -06:20:34
|
||||
-5641 days -22:13:10
|
||||
10487 days 10:27:35
|
||||
-7233 days -17:17:43
|
||||
-11226 days -05:05:14
|
||||
-5268 days -18:53:33
|
||||
-5999 days -09:32:42
|
||||
11656 days 06:29:49
|
||||
-8175 days -17:55:50
|
||||
10402 days 10:08:40
|
||||
-6480 days -11:33:32
|
||||
1328 days 08:48:12
|
||||
-2460 days -20:50:25
|
||||
-4343 days -20:26:12
|
||||
-12476 days -16:52:49
|
||||
-8221 days -00:19:12
|
||||
10934 days 04:29:47
|
||||
1567 days 06:22:11
|
||||
2907 days 10:19:15
|
||||
9512 days 13:17:14
|
||||
\N
|
||||
10031 days 05:58:55
|
||||
7973 days 06:57:28
|
||||
9828 days 05:58:27
|
||||
-6372 days -11:15:50
|
||||
10012 days 15:27:44
|
||||
-9097 days -03:49:51
|
||||
-7206 days -00:00:34
|
||||
1026 days 00:49:11
|
||||
-1597 days -12:20:05
|
||||
-8648 days -00:44:16
|
||||
-9790 days -02:52:49
|
||||
-981 days -04:10:39
|
||||
-7541 days -05:47:56
|
||||
-7105 days -15:37:54
|
||||
-1748 days -11:26:21
|
||||
-4519 days -23:19:44
|
||||
-7979 days -07:52:25
|
||||
7197 days 03:30:16
|
||||
1833 days 12:06:59
|
||||
-1548 days -14:04:58
|
||||
-5316 days -17:33:46
|
||||
-5486 days -21:42:56
|
||||
49 days 17:17:51
|
||||
9099 days 10:37:14
|
||||
-11276 days -03:05:00
|
||||
7899 days 22:58:17
|
||||
508 days 00:41:03
|
||||
-6076 days -05:36:00
|
||||
-12606 days -00:57:28
|
||||
-7702 days -09:58:18
|
||||
4291 days 23:13:54
|
||||
8567 days 20:57:07
|
||||
-8388 days -07:10:08
|
||||
-9814 days -11:50:01
|
||||
501 days 04:14:32
|
||||
9044 days 03:43:45
|
||||
-8051 days -03:34:59
|
||||
-13806 days -14:21:26
|
||||
-7486 days -22:05:47
|
||||
-11857 days -08:36:12
|
||||
-1806 days -13:41:46
|
||||
-13988 days -15:04:34
|
||||
-1807 days -23:19:37
|
||||
-949 days -09:21:28
|
||||
6163 days 11:45:40
|
||||
-1506 days -07:28:52
|
||||
-2139 days -00:49:29
|
||||
-6928 days -05:27:55
|
||||
-10326 days -04:36:26
|
||||
-13117 days -13:36:59
|
||||
-2080 days -23:54:20
|
||||
-327 days -06:04:45
|
||||
-3059 days -04:45:09
|
||||
10025 days 05:30:29
|
||||
-6291 days -12:12:10
|
||||
-2411 days -02:53:55
|
||||
-6596 days -00:56:36
|
||||
-9719 days -17:44:55
|
||||
8 days 22:33:21
|
||||
1826 days 05:51:20
|
||||
371 days 11:56:25
|
||||
-4683 days -11:52:58
|
||||
-5449 days -03:01:46
|
||||
-13807 days -09:11:52
|
||||
-245 days -01:48:06
|
||||
8771 days 12:08:03
|
||||
1827 days 06:53:03
|
||||
-12576 days -15:40:56
|
||||
-12355 days -23:54:52
|
||||
-2686 days -13:36:18
|
||||
1705 days 05:58:44
|
||||
-2297 days -03:42:11
|
||||
-4342 days -21:06:00
|
||||
7275 days 18:18:14
|
||||
1622 days 10:18:13
|
||||
3754 days 03:44:00
|
||||
-13316 days -06:15:12
|
||||
-10077 days -23:54:14
|
||||
-8001 days -07:54:09
|
||||
7540 days 20:11:37
|
||||
7243 days 19:10:42
|
||||
-2143 days -07:51:00
|
||||
-9553 days -11:47:20
|
||||
-14153 days -13:26:25
|
|
@ -0,0 +1,644 @@
|
|||
4a:31:57:23:9b:54
|
||||
e2:cc:11:0d:3a:a5
|
||||
a9:2b:32:79:3e:60
|
||||
53:1c:b9:1d:db:c7
|
||||
\N
|
||||
70:8a:83:2b:c0:23
|
||||
4c:55:af:1e:79:f9
|
||||
b9:4c:7c:39:c1:ee
|
||||
c5:83:ab:17:63:50
|
||||
b4:cf:fc:c4:fe:db
|
||||
12:33:a4:22:4e:a4
|
||||
99:db:22:10:3f:ae
|
||||
f4:31:5b:3a:26:c4
|
||||
\N
|
||||
db:a5:1a:67:bf:b5
|
||||
9c:c6:3f:59:ec:96
|
||||
8f:52:b2:83:41:b4
|
||||
49:ac:2a:44:a4:28
|
||||
0c:51:53:4e:10:79
|
||||
e5:54:31:9d:51:d9
|
||||
d0:8d:79:bd:4f:a1
|
||||
ee:ba:f1:4f:a1:bc
|
||||
76:25:97:80:8b:a7
|
||||
3a:dd:50:3b:82:d0
|
||||
34:8d:ca:fd:24:fc
|
||||
2f:f9:aa:93:0e:70
|
||||
93:29:d0:c2:7a:cb
|
||||
3a:a8:a7:c9:9c:5b
|
||||
8f:6c:0b:a1:1a:22
|
||||
ce:4a:b7:a6:59:9e
|
||||
\N
|
||||
\N
|
||||
e5:bd:83:62:cb:59
|
||||
ba:d9:ed:2f:68:58
|
||||
48:18:7a:6c:cc:2f
|
||||
76:03:b0:d3:ae:9d
|
||||
ef:3c:db:66:d9:82
|
||||
2d:73:91:dd:fb:69
|
||||
33:35:c3:7d:50:49
|
||||
50:a3:e9:24:18:32
|
||||
66:eb:ab:3a:14:2e
|
||||
a9:13:53:36:ee:95
|
||||
1f:4f:b4:57:34:0a
|
||||
60:26:2c:17:5c:d8
|
||||
01:43:b5:79:eb:0f
|
||||
c0:94:5d:b5:41:2c
|
||||
fb:e6:51:d6:49:9c
|
||||
87:7a:23:90:e9:df
|
||||
78:52:28:a5:f9:1f
|
||||
38:b2:03:d7:5d:b3
|
||||
bf:b5:5e:99:80:9f
|
||||
7c:8f:73:5c:07:95
|
||||
ba:b8:6b:d2:ef:ab
|
||||
9f:25:81:eb:33:0a
|
||||
82:cb:7c:44:6a:5f
|
||||
ca:46:2b:3c:cf:7f
|
||||
17:64:2a:89:cf:59
|
||||
\N
|
||||
35:59:4c:9d:5a:0d
|
||||
c9:5e:a4:dd:bb:ae
|
||||
d0:90:56:ef:30:05
|
||||
bd:2d:22:41:42:5e
|
||||
be:49:c2:de:66:22
|
||||
21:cb:55:17:01:c8
|
||||
22:00:5c:e5:9b:0d
|
||||
23:c8:5f:22:33:ca
|
||||
01:02:37:05:4f:36
|
||||
91:ba:08:fd:9e:ed
|
||||
bf:ad:23:1f:3e:4d
|
||||
c4:a6:c5:bd:89:dc
|
||||
b9:13:9f:85:d9:fa
|
||||
7d:b2:c9:07:4f:bc
|
||||
\N
|
||||
7a:84:d0:53:46:30
|
||||
f7:32:0c:87:f0:2f
|
||||
77:15:22:cd:68:a0
|
||||
17:f9:26:35:6e:73
|
||||
d7:21:4d:fe:43:22
|
||||
63:13:3a:af:94:e9
|
||||
f3:11:3c:68:ef:5e
|
||||
76:5a:06:33:31:fe
|
||||
63:d9:b8:ef:ec:36
|
||||
3b:f3:4d:c4:22:e6
|
||||
d0:a2:cb:f9:f1:0b
|
||||
95:0e:76:bc:99:ee
|
||||
ae:e7:64:d9:ce:5b
|
||||
ff:5a:6f:a2:26:9a
|
||||
75:96:d4:72:db:49
|
||||
a8:ac:2a:2a:23:67
|
||||
db:4e:14:4d:b1:7c
|
||||
45:fd:c8:52:05:cf
|
||||
91:7b:e7:6e:23:07
|
||||
71:50:0c:46:78:3d
|
||||
a9:90:9b:c0:b4:fc
|
||||
47:0e:9a:82:af:48
|
||||
e8:1c:cf:c0:16:d1
|
||||
e1:6a:42:25:89:c3
|
||||
\N
|
||||
55:8e:63:3b:44:c8
|
||||
93:8a:78:62:38:70
|
||||
29:81:d2:3d:12:80
|
||||
3e:d1:1e:94:2f:5d
|
||||
fb:8c:c4:ee:84:7c
|
||||
\N
|
||||
cc:ad:28:56:b2:4a
|
||||
52:f6:13:94:b7:03
|
||||
a2:8d:f8:f9:f8:c0
|
||||
57:68:00:9c:1b:f8
|
||||
a6:e2:31:88:8a:b4
|
||||
41:f7:0a:bd:47:08
|
||||
bf:5c:7d:64:08:73
|
||||
33:cc:60:43:05:e1
|
||||
cd:a5:a8:b0:99:14
|
||||
ef:fd:75:f1:3e:99
|
||||
b8:b0:b8:85:80:53
|
||||
7b:1c:fc:5c:b2:c8
|
||||
92:38:0c:df:81:57
|
||||
1e:ab:d4:18:c5:3a
|
||||
b0:a1:c6:88:a3:29
|
||||
c7:37:ec:30:2b:7c
|
||||
5e:5b:32:94:60:f7
|
||||
9d:ab:93:1f:de:1d
|
||||
ff:32:af:ef:10:2e
|
||||
f8:54:03:77:0d:e0
|
||||
49:e4:f8:f7:63:41
|
||||
18:f7:95:42:ea:32
|
||||
f8:a2:40:af:9e:af
|
||||
1d:e2:71:c3:be:6e
|
||||
\N
|
||||
6a:38:d7:a5:b7:cd
|
||||
df:51:52:74:c6:d4
|
||||
f2:05:5e:d2:1e:f3
|
||||
85:a7:b9:dd:80:72
|
||||
ae:ad:f5:1f:d1:7e
|
||||
cf:71:9a:9c:b4:4d
|
||||
\N
|
||||
ac:8d:0f:5b:63:21
|
||||
c4:f0:3e:23:9e:7d
|
||||
45:91:19:00:06:fa
|
||||
c6:b6:30:24:e2:c5
|
||||
48:e1:e1:4a:8f:99
|
||||
cd:74:2c:39:14:e3
|
||||
9b:bb:32:10:ec:14
|
||||
a5:3c:a6:c9:64:14
|
||||
bc:ea:9c:03:76:75
|
||||
d5:29:75:05:8a:5d
|
||||
\N
|
||||
37:92:8f:cb:f1:e5
|
||||
e5:eb:1b:0e:02:58
|
||||
9f:9c:a2:22:a4:25
|
||||
26:f4:f4:e6:b8:cb
|
||||
dd:79:87:70:0b:e7
|
||||
80:87:95:20:cd:ce
|
||||
0d:28:2a:d1:0f:e2
|
||||
05:b8:34:36:55:b0
|
||||
89:03:74:cd:43:a9
|
||||
74:10:93:21:1e:04
|
||||
27:bb:a9:3a:7b:f0
|
||||
73:3c:06:b1:51:ad
|
||||
47:0e:59:c0:5d:38
|
||||
13:13:e1:1c:aa:25
|
||||
4a:31:57:23:9b:54
|
||||
e2:cc:11:0d:3a:a5
|
||||
a9:2b:32:79:3e:60
|
||||
53:1c:b9:1d:db:c7
|
||||
\N
|
||||
70:8a:83:2b:c0:23
|
||||
4c:55:af:1e:79:f9
|
||||
b9:4c:7c:39:c1:ee
|
||||
c5:83:ab:17:63:50
|
||||
b4:cf:fc:c4:fe:db
|
||||
12:33:a4:22:4e:a4
|
||||
99:db:22:10:3f:ae
|
||||
f4:31:5b:3a:26:c4
|
||||
\N
|
||||
db:a5:1a:67:bf:b5
|
||||
9c:c6:3f:59:ec:96
|
||||
8f:52:b2:83:41:b4
|
||||
49:ac:2a:44:a4:28
|
||||
0c:51:53:4e:10:79
|
||||
e5:54:31:9d:51:d9
|
||||
d0:8d:79:bd:4f:a1
|
||||
ee:ba:f1:4f:a1:bc
|
||||
76:25:97:80:8b:a7
|
||||
3a:dd:50:3b:82:d0
|
||||
34:8d:ca:fd:24:fc
|
||||
2f:f9:aa:93:0e:70
|
||||
93:29:d0:c2:7a:cb
|
||||
3a:a8:a7:c9:9c:5b
|
||||
8f:6c:0b:a1:1a:22
|
||||
ce:4a:b7:a6:59:9e
|
||||
\N
|
||||
\N
|
||||
e5:bd:83:62:cb:59
|
||||
ba:d9:ed:2f:68:58
|
||||
48:18:7a:6c:cc:2f
|
||||
76:03:b0:d3:ae:9d
|
||||
ef:3c:db:66:d9:82
|
||||
2d:73:91:dd:fb:69
|
||||
33:35:c3:7d:50:49
|
||||
50:a3:e9:24:18:32
|
||||
66:eb:ab:3a:14:2e
|
||||
a9:13:53:36:ee:95
|
||||
1f:4f:b4:57:34:0a
|
||||
60:26:2c:17:5c:d8
|
||||
01:43:b5:79:eb:0f
|
||||
c0:94:5d:b5:41:2c
|
||||
fb:e6:51:d6:49:9c
|
||||
87:7a:23:90:e9:df
|
||||
78:52:28:a5:f9:1f
|
||||
38:b2:03:d7:5d:b3
|
||||
bf:b5:5e:99:80:9f
|
||||
7c:8f:73:5c:07:95
|
||||
ba:b8:6b:d2:ef:ab
|
||||
9f:25:81:eb:33:0a
|
||||
82:cb:7c:44:6a:5f
|
||||
ca:46:2b:3c:cf:7f
|
||||
17:64:2a:89:cf:59
|
||||
\N
|
||||
35:59:4c:9d:5a:0d
|
||||
c9:5e:a4:dd:bb:ae
|
||||
d0:90:56:ef:30:05
|
||||
bd:2d:22:41:42:5e
|
||||
be:49:c2:de:66:22
|
||||
21:cb:55:17:01:c8
|
||||
22:00:5c:e5:9b:0d
|
||||
23:c8:5f:22:33:ca
|
||||
01:02:37:05:4f:36
|
||||
91:ba:08:fd:9e:ed
|
||||
bf:ad:23:1f:3e:4d
|
||||
c4:a6:c5:bd:89:dc
|
||||
b9:13:9f:85:d9:fa
|
||||
7d:b2:c9:07:4f:bc
|
||||
\N
|
||||
7a:84:d0:53:46:30
|
||||
f7:32:0c:87:f0:2f
|
||||
77:15:22:cd:68:a0
|
||||
17:f9:26:35:6e:73
|
||||
d7:21:4d:fe:43:22
|
||||
63:13:3a:af:94:e9
|
||||
f3:11:3c:68:ef:5e
|
||||
76:5a:06:33:31:fe
|
||||
63:d9:b8:ef:ec:36
|
||||
3b:f3:4d:c4:22:e6
|
||||
d0:a2:cb:f9:f1:0b
|
||||
95:0e:76:bc:99:ee
|
||||
ae:e7:64:d9:ce:5b
|
||||
ff:5a:6f:a2:26:9a
|
||||
75:96:d4:72:db:49
|
||||
a8:ac:2a:2a:23:67
|
||||
db:4e:14:4d:b1:7c
|
||||
45:fd:c8:52:05:cf
|
||||
91:7b:e7:6e:23:07
|
||||
71:50:0c:46:78:3d
|
||||
a9:90:9b:c0:b4:fc
|
||||
47:0e:9a:82:af:48
|
||||
e8:1c:cf:c0:16:d1
|
||||
e1:6a:42:25:89:c3
|
||||
\N
|
||||
55:8e:63:3b:44:c8
|
||||
93:8a:78:62:38:70
|
||||
29:81:d2:3d:12:80
|
||||
3e:d1:1e:94:2f:5d
|
||||
fb:8c:c4:ee:84:7c
|
||||
\N
|
||||
cc:ad:28:56:b2:4a
|
||||
52:f6:13:94:b7:03
|
||||
a2:8d:f8:f9:f8:c0
|
||||
57:68:00:9c:1b:f8
|
||||
a6:e2:31:88:8a:b4
|
||||
41:f7:0a:bd:47:08
|
||||
bf:5c:7d:64:08:73
|
||||
33:cc:60:43:05:e1
|
||||
cd:a5:a8:b0:99:14
|
||||
ef:fd:75:f1:3e:99
|
||||
b8:b0:b8:85:80:53
|
||||
7b:1c:fc:5c:b2:c8
|
||||
92:38:0c:df:81:57
|
||||
1e:ab:d4:18:c5:3a
|
||||
b0:a1:c6:88:a3:29
|
||||
c7:37:ec:30:2b:7c
|
||||
5e:5b:32:94:60:f7
|
||||
9d:ab:93:1f:de:1d
|
||||
ff:32:af:ef:10:2e
|
||||
f8:54:03:77:0d:e0
|
||||
49:e4:f8:f7:63:41
|
||||
18:f7:95:42:ea:32
|
||||
f8:a2:40:af:9e:af
|
||||
1d:e2:71:c3:be:6e
|
||||
\N
|
||||
6a:38:d7:a5:b7:cd
|
||||
df:51:52:74:c6:d4
|
||||
f2:05:5e:d2:1e:f3
|
||||
85:a7:b9:dd:80:72
|
||||
ae:ad:f5:1f:d1:7e
|
||||
cf:71:9a:9c:b4:4d
|
||||
\N
|
||||
ac:8d:0f:5b:63:21
|
||||
c4:f0:3e:23:9e:7d
|
||||
45:91:19:00:06:fa
|
||||
c6:b6:30:24:e2:c5
|
||||
48:e1:e1:4a:8f:99
|
||||
cd:74:2c:39:14:e3
|
||||
9b:bb:32:10:ec:14
|
||||
a5:3c:a6:c9:64:14
|
||||
bc:ea:9c:03:76:75
|
||||
d5:29:75:05:8a:5d
|
||||
\N
|
||||
37:92:8f:cb:f1:e5
|
||||
e5:eb:1b:0e:02:58
|
||||
9f:9c:a2:22:a4:25
|
||||
26:f4:f4:e6:b8:cb
|
||||
dd:79:87:70:0b:e7
|
||||
80:87:95:20:cd:ce
|
||||
0d:28:2a:d1:0f:e2
|
||||
05:b8:34:36:55:b0
|
||||
89:03:74:cd:43:a9
|
||||
74:10:93:21:1e:04
|
||||
27:bb:a9:3a:7b:f0
|
||||
73:3c:06:b1:51:ad
|
||||
47:0e:59:c0:5d:38
|
||||
13:13:e1:1c:aa:25
|
||||
4a:31:57:23:9b:54
|
||||
e2:cc:11:0d:3a:a5
|
||||
a9:2b:32:79:3e:60
|
||||
53:1c:b9:1d:db:c7
|
||||
\N
|
||||
70:8a:83:2b:c0:23
|
||||
4c:55:af:1e:79:f9
|
||||
b9:4c:7c:39:c1:ee
|
||||
c5:83:ab:17:63:50
|
||||
b4:cf:fc:c4:fe:db
|
||||
12:33:a4:22:4e:a4
|
||||
99:db:22:10:3f:ae
|
||||
f4:31:5b:3a:26:c4
|
||||
\N
|
||||
db:a5:1a:67:bf:b5
|
||||
9c:c6:3f:59:ec:96
|
||||
8f:52:b2:83:41:b4
|
||||
49:ac:2a:44:a4:28
|
||||
0c:51:53:4e:10:79
|
||||
e5:54:31:9d:51:d9
|
||||
d0:8d:79:bd:4f:a1
|
||||
ee:ba:f1:4f:a1:bc
|
||||
76:25:97:80:8b:a7
|
||||
3a:dd:50:3b:82:d0
|
||||
34:8d:ca:fd:24:fc
|
||||
2f:f9:aa:93:0e:70
|
||||
93:29:d0:c2:7a:cb
|
||||
3a:a8:a7:c9:9c:5b
|
||||
8f:6c:0b:a1:1a:22
|
||||
ce:4a:b7:a6:59:9e
|
||||
\N
|
||||
\N
|
||||
e5:bd:83:62:cb:59
|
||||
ba:d9:ed:2f:68:58
|
||||
48:18:7a:6c:cc:2f
|
||||
76:03:b0:d3:ae:9d
|
||||
ef:3c:db:66:d9:82
|
||||
2d:73:91:dd:fb:69
|
||||
33:35:c3:7d:50:49
|
||||
50:a3:e9:24:18:32
|
||||
66:eb:ab:3a:14:2e
|
||||
a9:13:53:36:ee:95
|
||||
1f:4f:b4:57:34:0a
|
||||
60:26:2c:17:5c:d8
|
||||
01:43:b5:79:eb:0f
|
||||
c0:94:5d:b5:41:2c
|
||||
fb:e6:51:d6:49:9c
|
||||
87:7a:23:90:e9:df
|
||||
78:52:28:a5:f9:1f
|
||||
38:b2:03:d7:5d:b3
|
||||
bf:b5:5e:99:80:9f
|
||||
7c:8f:73:5c:07:95
|
||||
ba:b8:6b:d2:ef:ab
|
||||
9f:25:81:eb:33:0a
|
||||
82:cb:7c:44:6a:5f
|
||||
ca:46:2b:3c:cf:7f
|
||||
17:64:2a:89:cf:59
|
||||
\N
|
||||
35:59:4c:9d:5a:0d
|
||||
c9:5e:a4:dd:bb:ae
|
||||
d0:90:56:ef:30:05
|
||||
bd:2d:22:41:42:5e
|
||||
be:49:c2:de:66:22
|
||||
21:cb:55:17:01:c8
|
||||
22:00:5c:e5:9b:0d
|
||||
23:c8:5f:22:33:ca
|
||||
01:02:37:05:4f:36
|
||||
91:ba:08:fd:9e:ed
|
||||
bf:ad:23:1f:3e:4d
|
||||
c4:a6:c5:bd:89:dc
|
||||
b9:13:9f:85:d9:fa
|
||||
7d:b2:c9:07:4f:bc
|
||||
\N
|
||||
7a:84:d0:53:46:30
|
||||
f7:32:0c:87:f0:2f
|
||||
77:15:22:cd:68:a0
|
||||
17:f9:26:35:6e:73
|
||||
d7:21:4d:fe:43:22
|
||||
63:13:3a:af:94:e9
|
||||
f3:11:3c:68:ef:5e
|
||||
76:5a:06:33:31:fe
|
||||
63:d9:b8:ef:ec:36
|
||||
3b:f3:4d:c4:22:e6
|
||||
d0:a2:cb:f9:f1:0b
|
||||
95:0e:76:bc:99:ee
|
||||
ae:e7:64:d9:ce:5b
|
||||
ff:5a:6f:a2:26:9a
|
||||
75:96:d4:72:db:49
|
||||
a8:ac:2a:2a:23:67
|
||||
db:4e:14:4d:b1:7c
|
||||
45:fd:c8:52:05:cf
|
||||
91:7b:e7:6e:23:07
|
||||
71:50:0c:46:78:3d
|
||||
a9:90:9b:c0:b4:fc
|
||||
47:0e:9a:82:af:48
|
||||
e8:1c:cf:c0:16:d1
|
||||
e1:6a:42:25:89:c3
|
||||
\N
|
||||
55:8e:63:3b:44:c8
|
||||
93:8a:78:62:38:70
|
||||
29:81:d2:3d:12:80
|
||||
3e:d1:1e:94:2f:5d
|
||||
fb:8c:c4:ee:84:7c
|
||||
\N
|
||||
cc:ad:28:56:b2:4a
|
||||
52:f6:13:94:b7:03
|
||||
a2:8d:f8:f9:f8:c0
|
||||
57:68:00:9c:1b:f8
|
||||
a6:e2:31:88:8a:b4
|
||||
41:f7:0a:bd:47:08
|
||||
bf:5c:7d:64:08:73
|
||||
33:cc:60:43:05:e1
|
||||
cd:a5:a8:b0:99:14
|
||||
ef:fd:75:f1:3e:99
|
||||
b8:b0:b8:85:80:53
|
||||
7b:1c:fc:5c:b2:c8
|
||||
92:38:0c:df:81:57
|
||||
1e:ab:d4:18:c5:3a
|
||||
b0:a1:c6:88:a3:29
|
||||
c7:37:ec:30:2b:7c
|
||||
5e:5b:32:94:60:f7
|
||||
9d:ab:93:1f:de:1d
|
||||
ff:32:af:ef:10:2e
|
||||
f8:54:03:77:0d:e0
|
||||
49:e4:f8:f7:63:41
|
||||
18:f7:95:42:ea:32
|
||||
f8:a2:40:af:9e:af
|
||||
1d:e2:71:c3:be:6e
|
||||
\N
|
||||
6a:38:d7:a5:b7:cd
|
||||
df:51:52:74:c6:d4
|
||||
f2:05:5e:d2:1e:f3
|
||||
85:a7:b9:dd:80:72
|
||||
ae:ad:f5:1f:d1:7e
|
||||
cf:71:9a:9c:b4:4d
|
||||
\N
|
||||
ac:8d:0f:5b:63:21
|
||||
c4:f0:3e:23:9e:7d
|
||||
45:91:19:00:06:fa
|
||||
c6:b6:30:24:e2:c5
|
||||
48:e1:e1:4a:8f:99
|
||||
cd:74:2c:39:14:e3
|
||||
9b:bb:32:10:ec:14
|
||||
a5:3c:a6:c9:64:14
|
||||
bc:ea:9c:03:76:75
|
||||
d5:29:75:05:8a:5d
|
||||
\N
|
||||
37:92:8f:cb:f1:e5
|
||||
e5:eb:1b:0e:02:58
|
||||
9f:9c:a2:22:a4:25
|
||||
26:f4:f4:e6:b8:cb
|
||||
dd:79:87:70:0b:e7
|
||||
80:87:95:20:cd:ce
|
||||
0d:28:2a:d1:0f:e2
|
||||
05:b8:34:36:55:b0
|
||||
89:03:74:cd:43:a9
|
||||
74:10:93:21:1e:04
|
||||
27:bb:a9:3a:7b:f0
|
||||
73:3c:06:b1:51:ad
|
||||
47:0e:59:c0:5d:38
|
||||
13:13:e1:1c:aa:25
|
||||
4a:31:57:23:9b:54
|
||||
e2:cc:11:0d:3a:a5
|
||||
a9:2b:32:79:3e:60
|
||||
53:1c:b9:1d:db:c7
|
||||
\N
|
||||
70:8a:83:2b:c0:23
|
||||
4c:55:af:1e:79:f9
|
||||
b9:4c:7c:39:c1:ee
|
||||
c5:83:ab:17:63:50
|
||||
b4:cf:fc:c4:fe:db
|
||||
12:33:a4:22:4e:a4
|
||||
99:db:22:10:3f:ae
|
||||
f4:31:5b:3a:26:c4
|
||||
\N
|
||||
db:a5:1a:67:bf:b5
|
||||
9c:c6:3f:59:ec:96
|
||||
8f:52:b2:83:41:b4
|
||||
49:ac:2a:44:a4:28
|
||||
0c:51:53:4e:10:79
|
||||
e5:54:31:9d:51:d9
|
||||
d0:8d:79:bd:4f:a1
|
||||
ee:ba:f1:4f:a1:bc
|
||||
76:25:97:80:8b:a7
|
||||
3a:dd:50:3b:82:d0
|
||||
34:8d:ca:fd:24:fc
|
||||
2f:f9:aa:93:0e:70
|
||||
93:29:d0:c2:7a:cb
|
||||
3a:a8:a7:c9:9c:5b
|
||||
8f:6c:0b:a1:1a:22
|
||||
ce:4a:b7:a6:59:9e
|
||||
\N
|
||||
\N
|
||||
e5:bd:83:62:cb:59
|
||||
ba:d9:ed:2f:68:58
|
||||
48:18:7a:6c:cc:2f
|
||||
76:03:b0:d3:ae:9d
|
||||
ef:3c:db:66:d9:82
|
||||
2d:73:91:dd:fb:69
|
||||
33:35:c3:7d:50:49
|
||||
50:a3:e9:24:18:32
|
||||
66:eb:ab:3a:14:2e
|
||||
a9:13:53:36:ee:95
|
||||
1f:4f:b4:57:34:0a
|
||||
60:26:2c:17:5c:d8
|
||||
01:43:b5:79:eb:0f
|
||||
c0:94:5d:b5:41:2c
|
||||
fb:e6:51:d6:49:9c
|
||||
87:7a:23:90:e9:df
|
||||
78:52:28:a5:f9:1f
|
||||
38:b2:03:d7:5d:b3
|
||||
bf:b5:5e:99:80:9f
|
||||
7c:8f:73:5c:07:95
|
||||
ba:b8:6b:d2:ef:ab
|
||||
9f:25:81:eb:33:0a
|
||||
82:cb:7c:44:6a:5f
|
||||
ca:46:2b:3c:cf:7f
|
||||
17:64:2a:89:cf:59
|
||||
\N
|
||||
35:59:4c:9d:5a:0d
|
||||
c9:5e:a4:dd:bb:ae
|
||||
d0:90:56:ef:30:05
|
||||
bd:2d:22:41:42:5e
|
||||
be:49:c2:de:66:22
|
||||
21:cb:55:17:01:c8
|
||||
22:00:5c:e5:9b:0d
|
||||
23:c8:5f:22:33:ca
|
||||
01:02:37:05:4f:36
|
||||
91:ba:08:fd:9e:ed
|
||||
bf:ad:23:1f:3e:4d
|
||||
c4:a6:c5:bd:89:dc
|
||||
b9:13:9f:85:d9:fa
|
||||
7d:b2:c9:07:4f:bc
|
||||
\N
|
||||
7a:84:d0:53:46:30
|
||||
f7:32:0c:87:f0:2f
|
||||
77:15:22:cd:68:a0
|
||||
17:f9:26:35:6e:73
|
||||
d7:21:4d:fe:43:22
|
||||
63:13:3a:af:94:e9
|
||||
f3:11:3c:68:ef:5e
|
||||
76:5a:06:33:31:fe
|
||||
63:d9:b8:ef:ec:36
|
||||
3b:f3:4d:c4:22:e6
|
||||
d0:a2:cb:f9:f1:0b
|
||||
95:0e:76:bc:99:ee
|
||||
ae:e7:64:d9:ce:5b
|
||||
ff:5a:6f:a2:26:9a
|
||||
75:96:d4:72:db:49
|
||||
a8:ac:2a:2a:23:67
|
||||
db:4e:14:4d:b1:7c
|
||||
45:fd:c8:52:05:cf
|
||||
91:7b:e7:6e:23:07
|
||||
71:50:0c:46:78:3d
|
||||
a9:90:9b:c0:b4:fc
|
||||
47:0e:9a:82:af:48
|
||||
e8:1c:cf:c0:16:d1
|
||||
e1:6a:42:25:89:c3
|
||||
\N
|
||||
55:8e:63:3b:44:c8
|
||||
93:8a:78:62:38:70
|
||||
29:81:d2:3d:12:80
|
||||
3e:d1:1e:94:2f:5d
|
||||
fb:8c:c4:ee:84:7c
|
||||
\N
|
||||
cc:ad:28:56:b2:4a
|
||||
52:f6:13:94:b7:03
|
||||
a2:8d:f8:f9:f8:c0
|
||||
57:68:00:9c:1b:f8
|
||||
a6:e2:31:88:8a:b4
|
||||
41:f7:0a:bd:47:08
|
||||
bf:5c:7d:64:08:73
|
||||
33:cc:60:43:05:e1
|
||||
cd:a5:a8:b0:99:14
|
||||
ef:fd:75:f1:3e:99
|
||||
b8:b0:b8:85:80:53
|
||||
7b:1c:fc:5c:b2:c8
|
||||
92:38:0c:df:81:57
|
||||
1e:ab:d4:18:c5:3a
|
||||
b0:a1:c6:88:a3:29
|
||||
c7:37:ec:30:2b:7c
|
||||
5e:5b:32:94:60:f7
|
||||
9d:ab:93:1f:de:1d
|
||||
ff:32:af:ef:10:2e
|
||||
f8:54:03:77:0d:e0
|
||||
49:e4:f8:f7:63:41
|
||||
18:f7:95:42:ea:32
|
||||
f8:a2:40:af:9e:af
|
||||
1d:e2:71:c3:be:6e
|
||||
\N
|
||||
6a:38:d7:a5:b7:cd
|
||||
df:51:52:74:c6:d4
|
||||
f2:05:5e:d2:1e:f3
|
||||
85:a7:b9:dd:80:72
|
||||
ae:ad:f5:1f:d1:7e
|
||||
cf:71:9a:9c:b4:4d
|
||||
\N
|
||||
ac:8d:0f:5b:63:21
|
||||
c4:f0:3e:23:9e:7d
|
||||
45:91:19:00:06:fa
|
||||
c6:b6:30:24:e2:c5
|
||||
48:e1:e1:4a:8f:99
|
||||
cd:74:2c:39:14:e3
|
||||
9b:bb:32:10:ec:14
|
||||
a5:3c:a6:c9:64:14
|
||||
bc:ea:9c:03:76:75
|
||||
d5:29:75:05:8a:5d
|
||||
\N
|
||||
37:92:8f:cb:f1:e5
|
||||
e5:eb:1b:0e:02:58
|
||||
9f:9c:a2:22:a4:25
|
||||
26:f4:f4:e6:b8:cb
|
||||
dd:79:87:70:0b:e7
|
||||
80:87:95:20:cd:ce
|
||||
0d:28:2a:d1:0f:e2
|
||||
05:b8:34:36:55:b0
|
||||
89:03:74:cd:43:a9
|
||||
74:10:93:21:1e:04
|
||||
27:bb:a9:3a:7b:f0
|
||||
73:3c:06:b1:51:ad
|
||||
47:0e:59:c0:5d:38
|
||||
13:13:e1:1c:aa:25
|
|
@ -0,0 +1,11 @@
|
|||
-1890.000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||
-1889.999999999999999999999999999999999999999999999999999999999999999999999999999
|
||||
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
|
||||
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567891
|
||||
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567892
|
||||
10000
|
||||
0
|
||||
0
|
||||
0
|
||||
NaN
|
||||
NaN
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,599 @@
|
|||
23:56:29
|
||||
14:23:32
|
||||
15:46:58
|
||||
\N
|
||||
18:47:20
|
||||
11:54:06
|
||||
08:35:07
|
||||
06:37:29
|
||||
11:27:58
|
||||
\N
|
||||
14:05:32
|
||||
17:18:35
|
||||
20:40:36
|
||||
01:53:24
|
||||
06:30:54
|
||||
08:55:08
|
||||
14:09:40
|
||||
19:45:28
|
||||
18:56:29
|
||||
\N
|
||||
03:07:47
|
||||
20:07:06
|
||||
08:54:31
|
||||
03:48:12
|
||||
14:58:09
|
||||
04:23:51
|
||||
04:35:11
|
||||
17:51:38
|
||||
04:19:35
|
||||
14:54:46
|
||||
03:31:30
|
||||
17:03:30
|
||||
01:52:27
|
||||
07:45:51
|
||||
10:30:45
|
||||
14:55:59
|
||||
02:30:42
|
||||
04:28:11
|
||||
10:57:11
|
||||
12:47:13
|
||||
14:37:11
|
||||
15:47:57
|
||||
20:59:33
|
||||
15:51:53
|
||||
18:28:37
|
||||
16:24:13
|
||||
06:58:48
|
||||
20:58:13
|
||||
22:05:01
|
||||
13:20:20
|
||||
13:46:46
|
||||
08:06:45
|
||||
03:56:45
|
||||
00:48:10
|
||||
16:15:59
|
||||
05:39:04
|
||||
21:11:01
|
||||
18:57:40
|
||||
06:28:28
|
||||
07:09:17
|
||||
09:35:47
|
||||
07:08:00
|
||||
12:02:01
|
||||
00:32:50
|
||||
23:06:16
|
||||
02:57:27
|
||||
08:50:33
|
||||
18:40:40
|
||||
12:51:38
|
||||
19:34:22
|
||||
00:37:59
|
||||
09:39:35
|
||||
\N
|
||||
\N
|
||||
01:36:43
|
||||
\N
|
||||
12:58:39
|
||||
06:53:03
|
||||
05:14:10
|
||||
04:02:08
|
||||
04:40:02
|
||||
\N
|
||||
15:03:29
|
||||
20:25:02
|
||||
12:19:17
|
||||
13:47:39
|
||||
09:53:23
|
||||
06:23:25
|
||||
05:56:20
|
||||
14:18:24
|
||||
14:02:34
|
||||
12:27:36
|
||||
09:31:29
|
||||
13:35:03
|
||||
17:47:47
|
||||
17:55:57
|
||||
06:30:39
|
||||
06:21:38
|
||||
16:55:11
|
||||
01:49:01
|
||||
22:16:13
|
||||
12:17:35
|
||||
11:25:40
|
||||
\N
|
||||
00:29:46
|
||||
07:37:36
|
||||
\N
|
||||
14:52:12
|
||||
10:49:02
|
||||
18:40:02
|
||||
\N
|
||||
02:58:13
|
||||
21:33:44
|
||||
16:52:33
|
||||
01:40:26
|
||||
08:15:03
|
||||
05:20:44
|
||||
09:43:11
|
||||
\N
|
||||
19:34:51
|
||||
07:51:41
|
||||
04:20:43
|
||||
13:20:32
|
||||
20:30:08
|
||||
13:50:55
|
||||
00:44:30
|
||||
06:13:26
|
||||
03:29:43
|
||||
00:19:51
|
||||
05:11:23
|
||||
20:48:53
|
||||
12:52:42
|
||||
09:41:18
|
||||
03:45:21
|
||||
16:13:59
|
||||
06:19:58
|
||||
17:17:55
|
||||
18:28:12
|
||||
19:58:59
|
||||
03:25:07
|
||||
06:50:23
|
||||
23:00:13
|
||||
\N
|
||||
03:52:47
|
||||
21:13:06
|
||||
\N
|
||||
15:36:11
|
||||
12:36:08
|
||||
07:56:23
|
||||
23:32:03
|
||||
\N
|
||||
15:23:39
|
||||
21:20:05
|
||||
04:44:09
|
||||
22:48:19
|
||||
21:44:28
|
||||
02:17:10
|
||||
23:12:24
|
||||
12:38:57
|
||||
05:47:43
|
||||
23:17:09
|
||||
15:27:41
|
||||
02:04:03
|
||||
\N
|
||||
18:11:40
|
||||
06:54:54
|
||||
20:57:42
|
||||
01:14:59
|
||||
02:45:54
|
||||
22:51:42
|
||||
01:00:42
|
||||
04:29:29
|
||||
13:41:28
|
||||
14:36:19
|
||||
22:25:02
|
||||
23:08:45
|
||||
04:50:50
|
||||
01:44:02
|
||||
12:37:17
|
||||
03:40:05
|
||||
15:31:07
|
||||
\N
|
||||
00:32:35
|
||||
13:11:45
|
||||
18:05:35
|
||||
23:15:08
|
||||
01:52:35
|
||||
\N
|
||||
18:46:10
|
||||
20:06:36
|
||||
16:17:06
|
||||
17:47:39
|
||||
02:54:56
|
||||
20:42:39
|
||||
08:00:44
|
||||
23:53:40
|
||||
\N
|
||||
\N
|
||||
10:24:10
|
||||
15:46:42
|
||||
20:23:26
|
||||
20:12:43
|
||||
\N
|
||||
12:21:58
|
||||
17:52:22
|
||||
01:33:40
|
||||
15:55:22
|
||||
01:33:07
|
||||
17:46:27
|
||||
17:10:28
|
||||
00:39:40
|
||||
\N
|
||||
17:30:25
|
||||
22:48:37
|
||||
23:45:32
|
||||
23:45:59
|
||||
17:27:33
|
||||
13:23:46
|
||||
09:34:22
|
||||
16:59:06
|
||||
09:19:23
|
||||
16:06:27
|
||||
01:03:41
|
||||
06:10:45
|
||||
11:45:10
|
||||
\N
|
||||
23:30:22
|
||||
\N
|
||||
12:19:21
|
||||
09:06:09
|
||||
22:14:02
|
||||
22:30:58
|
||||
17:38:16
|
||||
06:07:40
|
||||
12:38:59
|
||||
02:39:50
|
||||
00:14:12
|
||||
01:09:47
|
||||
05:16:45
|
||||
17:47:53
|
||||
13:23:16
|
||||
23:54:39
|
||||
23:26:01
|
||||
03:14:19
|
||||
03:36:47
|
||||
\N
|
||||
15:49:11
|
||||
16:30:21
|
||||
06:31:21
|
||||
09:46:53
|
||||
17:48:40
|
||||
23:07:33
|
||||
09:30:58
|
||||
03:01:28
|
||||
18:48:39
|
||||
\N
|
||||
10:20:37
|
||||
18:03:26
|
||||
23:38:14
|
||||
11:12:46
|
||||
00:39:00
|
||||
05:15:56
|
||||
06:07:20
|
||||
16:32:30
|
||||
08:42:21
|
||||
03:10:56
|
||||
06:03:47
|
||||
12:57:58
|
||||
21:42:59
|
||||
17:12:12
|
||||
00:08:11
|
||||
08:05:07
|
||||
03:45:59
|
||||
16:55:19
|
||||
12:47:20
|
||||
12:49:35
|
||||
03:48:21
|
||||
11:32:33
|
||||
11:30:51
|
||||
09:11:06
|
||||
03:02:36
|
||||
02:23:03
|
||||
02:16:44
|
||||
17:16:26
|
||||
07:04:20
|
||||
13:29:28
|
||||
21:01:12
|
||||
06:35:03
|
||||
02:23:14
|
||||
10:53:45
|
||||
06:06:18
|
||||
13:40:10
|
||||
09:27:36
|
||||
\N
|
||||
07:00:44
|
||||
04:22:42
|
||||
\N
|
||||
12:50:38
|
||||
23:03:05
|
||||
10:32:59
|
||||
20:54:04
|
||||
\N
|
||||
07:53:27
|
||||
15:00:51
|
||||
\N
|
||||
15:30:20
|
||||
15:27:57
|
||||
06:01:36
|
||||
22:20:26
|
||||
01:21:20
|
||||
05:54:01
|
||||
09:31:20
|
||||
19:54:37
|
||||
19:06:34
|
||||
18:35:22
|
||||
22:44:32
|
||||
12:43:45
|
||||
04:24:22
|
||||
03:26:29
|
||||
22:06:36
|
||||
15:03:19
|
||||
06:20:33
|
||||
05:37:36
|
||||
18:59:04
|
||||
10:59:54
|
||||
\N
|
||||
17:04:29
|
||||
\N
|
||||
08:51:37
|
||||
02:47:04
|
||||
11:17:51
|
||||
01:36:35
|
||||
07:23:02
|
||||
21:01:14
|
||||
21:07:23
|
||||
15:58:20
|
||||
03:37:48
|
||||
17:43:22
|
||||
08:06:10
|
||||
03:21:13
|
||||
14:23:04
|
||||
00:15:56
|
||||
12:30:28
|
||||
04:51:05
|
||||
22:47:38
|
||||
04:29:31
|
||||
00:38:02
|
||||
00:16:09
|
||||
07:38:35
|
||||
03:55:56
|
||||
12:06:21
|
||||
07:46:45
|
||||
10:31:07
|
||||
12:13:46
|
||||
06:55:31
|
||||
00:58:12
|
||||
14:46:31
|
||||
07:28:15
|
||||
21:43:37
|
||||
02:10:16
|
||||
07:30:34
|
||||
19:05:11
|
||||
13:54:34
|
||||
04:03:22
|
||||
\N
|
||||
07:49:42
|
||||
02:53:33
|
||||
01:08:33
|
||||
09:42:32
|
||||
17:56:28
|
||||
17:37:54
|
||||
02:02:52
|
||||
07:43:47
|
||||
23:07:36
|
||||
\N
|
||||
21:43:23
|
||||
04:34:38
|
||||
06:17:36
|
||||
23:16:48
|
||||
19:55:50
|
||||
05:55:45
|
||||
16:49:59
|
||||
17:50:54
|
||||
11:52:36
|
||||
20:21:19
|
||||
08:48:56
|
||||
11:18:58
|
||||
06:28:01
|
||||
03:02:25
|
||||
15:28:12
|
||||
12:26:01
|
||||
20:02:07
|
||||
14:30:34
|
||||
09:43:31
|
||||
11:44:00
|
||||
20:06:06
|
||||
17:44:33
|
||||
11:53:21
|
||||
20:26:36
|
||||
07:04:27
|
||||
13:13:37
|
||||
14:56:54
|
||||
10:18:04
|
||||
05:37:29
|
||||
\N
|
||||
23:17:09
|
||||
04:50:14
|
||||
00:56:52
|
||||
09:20:10
|
||||
21:09:49
|
||||
11:10:24
|
||||
13:58:05
|
||||
23:14:01
|
||||
\N
|
||||
20:00:56
|
||||
11:43:43
|
||||
08:43:58
|
||||
\N
|
||||
\N
|
||||
15:44:40
|
||||
19:38:12
|
||||
23:26:57
|
||||
05:53:18
|
||||
12:51:41
|
||||
18:03:27
|
||||
22:57:21
|
||||
10:57:10
|
||||
\N
|
||||
15:56:10
|
||||
14:41:42
|
||||
04:04:38
|
||||
\N
|
||||
07:49:13
|
||||
20:08:21
|
||||
17:37:16
|
||||
11:31:02
|
||||
\N
|
||||
08:47:52
|
||||
20:19:41
|
||||
08:10:03
|
||||
02:45:28
|
||||
15:43:13
|
||||
\N
|
||||
18:02:24
|
||||
19:21:57
|
||||
07:24:41
|
||||
20:08:46
|
||||
22:19:29
|
||||
21:22:15
|
||||
07:40:41
|
||||
\N
|
||||
01:44:27
|
||||
13:22:27
|
||||
23:03:59
|
||||
17:46:43
|
||||
23:06:32
|
||||
19:55:27
|
||||
04:24:35
|
||||
03:50:26
|
||||
01:43:48
|
||||
17:05:49
|
||||
00:51:15
|
||||
18:17:56
|
||||
10:01:57
|
||||
13:16:32
|
||||
16:28:12
|
||||
05:36:40
|
||||
09:35:09
|
||||
\N
|
||||
\N
|
||||
04:36:40
|
||||
\N
|
||||
09:31:47
|
||||
10:21:54
|
||||
07:49:09
|
||||
19:51:28
|
||||
14:02:25
|
||||
07:54:40
|
||||
20:26:20
|
||||
09:50:27
|
||||
19:05:44
|
||||
\N
|
||||
11:43:30
|
||||
00:25:16
|
||||
05:07:26
|
||||
13:38:21
|
||||
19:48:53
|
||||
01:11:45
|
||||
07:06:48
|
||||
\N
|
||||
21:17:06
|
||||
\N
|
||||
17:33:35
|
||||
23:22:58
|
||||
21:47:12
|
||||
20:50:30
|
||||
01:04:16
|
||||
19:25:47
|
||||
22:57:00
|
||||
09:15:33
|
||||
\N
|
||||
02:29:36
|
||||
21:27:15
|
||||
13:29:22
|
||||
\N
|
||||
02:10:34
|
||||
06:14:24
|
||||
14:04:25
|
||||
03:37:23
|
||||
21:36:37
|
||||
15:41:07
|
||||
03:40:25
|
||||
15:51:36
|
||||
05:10:09
|
||||
18:54:02
|
||||
16:49:50
|
||||
03:18:24
|
||||
23:13:58
|
||||
05:55:06
|
||||
22:21:51
|
||||
02:23:28
|
||||
07:12:18
|
||||
02:33:13
|
||||
10:23:41
|
||||
\N
|
||||
05:44:10
|
||||
21:59:24
|
||||
00:22:35
|
||||
23:07:01
|
||||
22:25:59
|
||||
13:25:35
|
||||
08:44:13
|
||||
04:25:14
|
||||
\N
|
||||
14:04:18
|
||||
11:05:27
|
||||
13:42:39
|
||||
\N
|
||||
05:24:12
|
||||
01:01:47
|
||||
07:49:06
|
||||
19:07:56
|
||||
03:35:35
|
||||
07:28:30
|
||||
05:00:13
|
||||
16:27:26
|
||||
00:14:42
|
||||
02:57:18
|
||||
23:39:57
|
||||
07:31:16
|
||||
19:08:03
|
||||
13:26:21
|
||||
11:39:43
|
||||
21:07:04
|
||||
03:30:59
|
||||
07:59:10
|
||||
14:50:17
|
||||
02:57:29
|
||||
23:37:36
|
||||
07:48:10
|
||||
17:04:36
|
||||
13:24:45
|
||||
23:42:26
|
||||
04:31:37
|
||||
21:09:05
|
||||
07:47:28
|
||||
13:18:23
|
||||
00:45:21
|
||||
03:30:56
|
||||
10:09:02
|
||||
14:02:41
|
||||
23:11:51
|
||||
03:34:54
|
||||
\N
|
||||
02:20:03
|
||||
04:46:49
|
||||
06:12:58
|
||||
01:26:47
|
||||
01:33:06
|
||||
10:55:32
|
||||
16:14:38
|
||||
21:54:21
|
||||
20:59:06
|
||||
12:26:22
|
||||
19:34:40
|
||||
11:48:58
|
||||
14:32:43
|
||||
11:36:17
|
||||
06:57:47
|
||||
15:34:23
|
||||
02:56:30
|
||||
12:30:59
|
||||
11:33:55
|
||||
04:53:09
|
||||
00:01:24
|
||||
02:14:43
|
||||
\N
|
||||
14:26:05
|
||||
18:48:04
|
|
@ -0,0 +1,600 @@
|
|||
2019-11-22 23:56:29
|
||||
1995-05-20 14:23:32
|
||||
1989-04-12 15:46:58
|
||||
\N
|
||||
2023-10-21 18:47:20
|
||||
2028-11-27 11:54:06
|
||||
2024-05-24 08:35:07
|
||||
2018-08-31 06:37:29
|
||||
1988-07-16 11:27:58
|
||||
\N
|
||||
2019-05-21 14:05:32
|
||||
1972-12-12 17:18:35
|
||||
1975-05-07 20:40:36
|
||||
2022-08-11 01:53:24
|
||||
1975-06-27 06:30:54
|
||||
2004-10-26 08:55:08
|
||||
1983-05-14 14:09:40
|
||||
2015-06-20 19:45:28
|
||||
1978-02-17 18:56:29
|
||||
\N
|
||||
1970-12-04 03:07:47
|
||||
1977-03-22 20:07:06
|
||||
2032-10-28 08:54:31
|
||||
2004-03-02 03:48:12
|
||||
1992-10-29 14:58:09
|
||||
2021-05-05 04:23:51
|
||||
2025-06-25 04:35:11
|
||||
2036-07-15 17:51:38
|
||||
1981-03-10 04:19:35
|
||||
2012-12-04 14:54:46
|
||||
1996-02-02 03:31:30
|
||||
1992-12-31 17:03:30
|
||||
2003-02-03 01:52:27
|
||||
2008-12-15 07:45:51
|
||||
1994-11-19 10:30:45
|
||||
2036-09-20 14:55:59
|
||||
2034-10-21 02:30:42
|
||||
2019-11-16 04:28:11
|
||||
1995-01-23 10:57:11
|
||||
1974-10-11 12:47:13
|
||||
2027-02-26 14:37:11
|
||||
2027-08-08 15:47:57
|
||||
2037-08-30 20:59:33
|
||||
2026-01-08 15:51:53
|
||||
2023-09-18 18:28:37
|
||||
2012-03-07 16:24:13
|
||||
2011-08-29 06:58:48
|
||||
1979-11-06 20:58:13
|
||||
2033-09-25 22:05:01
|
||||
1986-06-08 13:20:20
|
||||
2020-01-13 13:46:46
|
||||
2015-09-19 08:06:45
|
||||
2035-11-16 03:56:45
|
||||
1985-11-12 00:48:10
|
||||
2002-05-26 16:15:59
|
||||
2002-01-30 05:39:04
|
||||
1980-01-26 21:11:01
|
||||
2037-03-23 18:57:40
|
||||
2016-02-23 06:28:28
|
||||
2023-04-21 07:09:17
|
||||
2033-04-11 09:35:47
|
||||
1985-09-09 07:08:00
|
||||
1993-01-29 12:02:01
|
||||
2015-06-28 00:32:50
|
||||
2036-04-06 23:06:16
|
||||
2031-12-08 02:57:27
|
||||
2014-02-26 08:50:33
|
||||
1994-01-23 18:40:40
|
||||
2019-01-27 12:51:38
|
||||
1978-08-01 19:34:22
|
||||
1979-05-21 00:37:59
|
||||
2022-12-12 09:39:35
|
||||
\N
|
||||
\N
|
||||
2007-10-16 01:36:43
|
||||
\N
|
||||
2037-05-17 12:58:39
|
||||
2034-08-14 06:53:03
|
||||
2014-12-20 05:14:10
|
||||
2033-03-13 04:02:08
|
||||
2010-10-03 04:40:02
|
||||
\N
|
||||
1992-12-23 15:03:29
|
||||
2029-05-15 20:25:02
|
||||
1993-07-17 12:19:17
|
||||
2007-11-06 13:47:39
|
||||
2024-10-22 09:53:23
|
||||
2019-03-02 06:23:25
|
||||
2026-07-24 05:56:20
|
||||
1973-03-29 14:18:24
|
||||
2006-06-02 14:02:34
|
||||
2032-06-11 12:27:36
|
||||
1990-01-28 09:31:29
|
||||
2019-06-16 13:35:03
|
||||
1970-04-21 17:47:47
|
||||
2012-09-17 17:55:57
|
||||
1993-10-06 06:30:39
|
||||
1993-02-24 06:21:38
|
||||
2014-12-07 16:55:11
|
||||
2018-09-17 01:49:01
|
||||
2015-05-22 22:16:13
|
||||
1983-01-19 12:17:35
|
||||
1978-11-08 11:25:40
|
||||
\N
|
||||
2021-06-01 00:29:46
|
||||
1970-11-19 07:37:36
|
||||
\N
|
||||
2030-06-12 14:52:12
|
||||
2035-08-11 10:49:02
|
||||
2021-01-31 18:40:02
|
||||
\N
|
||||
1996-06-25 02:58:13
|
||||
1974-11-28 21:33:44
|
||||
1989-04-28 16:52:33
|
||||
1998-07-17 01:40:26
|
||||
2029-09-14 08:15:03
|
||||
2010-01-06 05:20:44
|
||||
2013-05-04 09:43:11
|
||||
\N
|
||||
2023-10-03 19:34:51
|
||||
1998-02-06 07:51:41
|
||||
1984-07-16 04:20:43
|
||||
2008-01-11 13:20:32
|
||||
2015-06-23 20:30:08
|
||||
2026-04-02 13:50:55
|
||||
2021-11-26 00:44:30
|
||||
2012-07-09 06:13:26
|
||||
1975-01-07 03:29:43
|
||||
2022-12-04 00:19:51
|
||||
2013-01-22 05:11:23
|
||||
2001-02-13 20:48:53
|
||||
2001-11-20 12:52:42
|
||||
2008-12-27 09:41:18
|
||||
2030-07-05 03:45:21
|
||||
1970-07-22 16:13:59
|
||||
2037-07-11 06:19:58
|
||||
2034-12-24 17:17:55
|
||||
2022-04-04 18:28:12
|
||||
2018-03-24 19:58:59
|
||||
2037-03-25 03:25:07
|
||||
1972-06-24 06:50:23
|
||||
2034-08-15 23:00:13
|
||||
\N
|
||||
2030-01-12 03:52:47
|
||||
2000-08-15 21:13:06
|
||||
\N
|
||||
2034-07-25 15:36:11
|
||||
2030-04-06 12:36:08
|
||||
2003-08-22 07:56:23
|
||||
2012-04-17 23:32:03
|
||||
\N
|
||||
1992-11-30 15:23:39
|
||||
2017-03-31 21:20:05
|
||||
2004-06-19 04:44:09
|
||||
1974-02-07 22:48:19
|
||||
1992-11-02 21:44:28
|
||||
2006-07-03 02:17:10
|
||||
2030-09-03 23:12:24
|
||||
1989-12-15 12:38:57
|
||||
1992-05-03 05:47:43
|
||||
1981-05-05 23:17:09
|
||||
1983-06-04 15:27:41
|
||||
2010-08-13 02:04:03
|
||||
\N
|
||||
2022-06-15 18:11:40
|
||||
2011-03-10 06:54:54
|
||||
1973-11-06 20:57:42
|
||||
1998-03-22 01:14:59
|
||||
1992-07-20 02:45:54
|
||||
2022-01-15 22:51:42
|
||||
2022-05-03 01:00:42
|
||||
1972-06-08 04:29:29
|
||||
1976-10-27 13:41:28
|
||||
2023-12-13 14:36:19
|
||||
2027-08-01 22:25:02
|
||||
2009-05-04 23:08:45
|
||||
2021-03-19 04:50:50
|
||||
2025-04-09 01:44:02
|
||||
1988-07-28 12:37:17
|
||||
2023-07-31 03:40:05
|
||||
2003-07-25 15:31:07
|
||||
\N
|
||||
1995-12-12 00:32:35
|
||||
1992-04-19 13:11:45
|
||||
1997-08-20 18:05:35
|
||||
2028-01-13 23:15:08
|
||||
1980-04-18 01:52:35
|
||||
\N
|
||||
2030-03-08 18:46:10
|
||||
2000-03-22 20:06:36
|
||||
1987-03-17 16:17:06
|
||||
2008-03-10 17:47:39
|
||||
1982-04-02 02:54:56
|
||||
1970-01-29 20:42:39
|
||||
2032-03-28 08:00:44
|
||||
1991-10-03 23:53:40
|
||||
\N
|
||||
\N
|
||||
\N
|
||||
2035-07-02 10:24:10
|
||||
1988-11-27 15:46:42
|
||||
2034-08-29 20:23:26
|
||||
2004-11-29 20:12:43
|
||||
\N
|
||||
2013-08-28 12:21:58
|
||||
1997-04-06 17:52:22
|
||||
1994-10-12 01:33:40
|
||||
2027-06-18 15:55:22
|
||||
1971-01-10 01:33:07
|
||||
2035-02-23 17:46:27
|
||||
2036-10-25 17:10:28
|
||||
2033-06-29 00:39:40
|
||||
\N
|
||||
2028-07-29 17:30:25
|
||||
2003-03-18 22:48:37
|
||||
1994-11-29 23:45:32
|
||||
2001-10-08 23:45:59
|
||||
2019-03-10 17:27:33
|
||||
2022-05-19 13:23:46
|
||||
1971-07-13 09:34:22
|
||||
1979-07-25 16:59:06
|
||||
1980-11-27 09:19:23
|
||||
2030-02-20 16:06:27
|
||||
1973-01-02 01:03:41
|
||||
1992-12-20 06:10:45
|
||||
2034-03-04 11:45:10
|
||||
\N
|
||||
2036-11-27 23:30:22
|
||||
\N
|
||||
2023-09-22 12:19:21
|
||||
2023-07-13 09:06:09
|
||||
1996-02-13 22:14:02
|
||||
1974-02-11 22:30:58
|
||||
1996-08-07 17:38:16
|
||||
1998-06-13 06:07:40
|
||||
2035-04-21 12:38:59
|
||||
1996-03-04 02:39:50
|
||||
2019-05-04 00:14:12
|
||||
2024-06-01 01:09:47
|
||||
2007-02-20 05:16:45
|
||||
2003-07-29 17:47:53
|
||||
2000-07-13 13:23:16
|
||||
2011-09-08 23:54:39
|
||||
2019-06-10 23:26:01
|
||||
1975-02-25 03:14:19
|
||||
2002-01-16 03:36:47
|
||||
\N
|
||||
1986-04-08 15:49:11
|
||||
1986-03-08 16:30:21
|
||||
2019-06-21 06:31:21
|
||||
1988-09-19 09:46:53
|
||||
2035-11-30 17:48:40
|
||||
1986-11-27 23:07:33
|
||||
2037-03-10 09:30:58
|
||||
2030-07-15 03:01:28
|
||||
1988-06-29 18:48:39
|
||||
\N
|
||||
1980-04-23 10:20:37
|
||||
2020-01-19 18:03:26
|
||||
2012-09-14 23:38:14
|
||||
1983-12-28 11:12:46
|
||||
1987-02-10 00:39:00
|
||||
2029-09-21 05:15:56
|
||||
1972-03-12 06:07:20
|
||||
2035-11-20 16:32:30
|
||||
1996-10-25 08:42:21
|
||||
1981-02-05 03:10:56
|
||||
2031-09-10 06:03:47
|
||||
1986-04-24 12:57:58
|
||||
1987-04-26 21:42:59
|
||||
2017-06-10 17:12:12
|
||||
1980-07-26 00:08:11
|
||||
2009-10-18 08:05:07
|
||||
1981-05-24 03:45:59
|
||||
2026-07-17 16:55:19
|
||||
2015-09-30 12:47:20
|
||||
2032-05-02 12:49:35
|
||||
1987-08-17 03:48:21
|
||||
2034-10-20 11:32:33
|
||||
2008-11-20 11:30:51
|
||||
1986-11-06 09:11:06
|
||||
1980-04-06 03:02:36
|
||||
1982-11-12 02:23:03
|
||||
1975-01-24 02:16:44
|
||||
2015-04-25 17:16:26
|
||||
1980-03-14 07:04:20
|
||||
1998-04-07 13:29:28
|
||||
2020-12-16 21:01:12
|
||||
2004-10-31 06:35:03
|
||||
1975-02-26 02:23:14
|
||||
2024-10-29 10:53:45
|
||||
1974-10-29 06:06:18
|
||||
1986-09-21 13:40:10
|
||||
2037-11-06 09:27:36
|
||||
\N
|
||||
1979-06-02 07:00:44
|
||||
2001-06-28 04:22:42
|
||||
\N
|
||||
2024-10-14 12:50:38
|
||||
2031-03-22 23:03:05
|
||||
1983-11-27 10:32:59
|
||||
1989-01-01 20:54:04
|
||||
\N
|
||||
2037-03-05 07:53:27
|
||||
2002-12-28 15:00:51
|
||||
\N
|
||||
2031-12-20 15:30:20
|
||||
2002-08-30 15:27:57
|
||||
1997-11-16 06:01:36
|
||||
2023-07-17 22:20:26
|
||||
2010-04-02 01:21:20
|
||||
2019-09-21 05:54:01
|
||||
1978-03-04 09:31:20
|
||||
1992-11-08 19:54:37
|
||||
2002-02-11 19:06:34
|
||||
2012-06-06 18:35:22
|
||||
2012-11-23 22:44:32
|
||||
1997-09-27 12:43:45
|
||||
1972-12-18 04:24:22
|
||||
1985-10-25 03:26:29
|
||||
2028-09-29 22:06:36
|
||||
1976-03-31 15:03:19
|
||||
1996-06-26 06:20:33
|
||||
2014-07-06 05:37:36
|
||||
2032-05-21 18:59:04
|
||||
2018-12-18 10:59:54
|
||||
\N
|
||||
1974-06-02 17:04:29
|
||||
\N
|
||||
2024-09-29 08:51:37
|
||||
1996-07-03 02:47:04
|
||||
1973-02-11 11:17:51
|
||||
2019-12-02 01:36:35
|
||||
2035-09-04 07:23:02
|
||||
2008-10-10 21:01:14
|
||||
2018-05-16 21:07:23
|
||||
2020-04-17 15:58:20
|
||||
2030-05-04 03:37:48
|
||||
2002-10-27 17:43:22
|
||||
2036-03-04 08:06:10
|
||||
2002-10-29 03:21:13
|
||||
2000-06-22 14:23:04
|
||||
1981-01-01 00:15:56
|
||||
2001-12-31 12:30:28
|
||||
2003-09-25 04:51:05
|
||||
2020-12-07 22:47:38
|
||||
2016-11-04 04:29:31
|
||||
2026-02-23 00:38:02
|
||||
1990-12-16 00:16:09
|
||||
2033-10-15 07:38:35
|
||||
2003-07-29 03:55:56
|
||||
1998-10-09 12:06:21
|
||||
2006-04-02 07:46:45
|
||||
1970-06-06 10:31:07
|
||||
2015-02-06 12:13:46
|
||||
2004-06-23 06:55:31
|
||||
2015-12-08 00:58:12
|
||||
2024-06-26 14:46:31
|
||||
1997-11-07 07:28:15
|
||||
2023-05-09 21:43:37
|
||||
1992-11-16 02:10:16
|
||||
2016-04-17 07:30:34
|
||||
1996-11-09 19:05:11
|
||||
2010-09-12 13:54:34
|
||||
2012-10-17 04:03:22
|
||||
\N
|
||||
1998-07-19 07:49:42
|
||||
1973-11-11 02:53:33
|
||||
1992-11-15 01:08:33
|
||||
2032-04-22 09:42:32
|
||||
2031-09-14 17:56:28
|
||||
2005-03-25 17:37:54
|
||||
1993-03-17 02:02:52
|
||||
2004-03-01 07:43:47
|
||||
2009-10-06 23:07:36
|
||||
\N
|
||||
1993-06-07 21:43:23
|
||||
1994-07-31 04:34:38
|
||||
1987-08-07 06:17:36
|
||||
2034-05-01 23:16:48
|
||||
2025-06-19 19:55:50
|
||||
2019-10-13 05:55:45
|
||||
1977-03-25 16:49:59
|
||||
1978-01-16 17:50:54
|
||||
2003-09-29 11:52:36
|
||||
2002-04-07 20:21:19
|
||||
2024-01-12 08:48:56
|
||||
1984-08-29 11:18:58
|
||||
2036-08-16 06:28:01
|
||||
1972-05-14 03:02:25
|
||||
2019-01-24 15:28:12
|
||||
2009-12-19 12:26:01
|
||||
1982-07-26 20:02:07
|
||||
2012-01-22 14:30:34
|
||||
1983-07-22 09:43:31
|
||||
1978-05-27 11:44:00
|
||||
1974-04-02 20:06:06
|
||||
2008-02-15 17:44:33
|
||||
2003-01-14 11:53:21
|
||||
1989-03-30 20:26:36
|
||||
2009-12-14 07:04:27
|
||||
2030-07-05 13:13:37
|
||||
2032-07-22 14:56:54
|
||||
2016-05-17 10:18:04
|
||||
2031-07-02 05:37:29
|
||||
\N
|
||||
1980-07-28 23:17:09
|
||||
2031-09-06 04:50:14
|
||||
1975-01-20 00:56:52
|
||||
2019-05-05 09:20:10
|
||||
2025-05-02 21:09:49
|
||||
2001-12-27 11:10:24
|
||||
1991-09-27 13:58:05
|
||||
2021-12-14 23:14:01
|
||||
\N
|
||||
2027-03-24 20:00:56
|
||||
2009-01-07 11:43:43
|
||||
1985-02-04 08:43:58
|
||||
\N
|
||||
\N
|
||||
1996-12-23 15:44:40
|
||||
2012-05-22 19:38:12
|
||||
1980-02-29 23:26:57
|
||||
2018-06-14 05:53:18
|
||||
1981-07-04 12:51:41
|
||||
1993-04-25 18:03:27
|
||||
2027-03-09 22:57:21
|
||||
1981-01-10 10:57:10
|
||||
\N
|
||||
1974-06-16 15:56:10
|
||||
1985-10-15 14:41:42
|
||||
1988-01-11 04:04:38
|
||||
\N
|
||||
1997-03-15 07:49:13
|
||||
1982-02-26 20:08:21
|
||||
1991-05-13 17:37:16
|
||||
2015-09-03 11:31:02
|
||||
\N
|
||||
1987-06-05 08:47:52
|
||||
1971-03-29 20:19:41
|
||||
2002-03-28 08:10:03
|
||||
2032-03-25 02:45:28
|
||||
1983-07-23 15:43:13
|
||||
\N
|
||||
1999-01-15 18:02:24
|
||||
2014-01-31 19:21:57
|
||||
2021-09-02 07:24:41
|
||||
1999-01-02 20:08:46
|
||||
2001-03-24 22:19:29
|
||||
2002-01-21 21:22:15
|
||||
2007-08-06 07:40:41
|
||||
\N
|
||||
2032-09-07 01:44:27
|
||||
1984-11-22 13:22:27
|
||||
2035-06-18 23:03:59
|
||||
1994-07-29 17:46:43
|
||||
2023-04-20 23:06:32
|
||||
2010-02-17 19:55:27
|
||||
2014-08-23 04:24:35
|
||||
2017-02-08 03:50:26
|
||||
2036-10-24 01:43:48
|
||||
1994-11-14 17:05:49
|
||||
1979-04-19 00:51:15
|
||||
1973-10-09 18:17:56
|
||||
1999-01-17 10:01:57
|
||||
2012-07-08 13:16:32
|
||||
2012-12-03 16:28:12
|
||||
1980-11-22 05:36:40
|
||||
2002-02-28 09:35:09
|
||||
\N
|
||||
\N
|
||||
2023-03-01 04:36:40
|
||||
\N
|
||||
1981-05-13 09:31:47
|
||||
2026-01-29 10:21:54
|
||||
2034-02-14 07:49:09
|
||||
2031-09-22 19:51:28
|
||||
1986-11-13 14:02:25
|
||||
2031-10-25 07:54:40
|
||||
2010-10-13 20:26:20
|
||||
2036-09-11 09:50:27
|
||||
2027-09-30 19:05:44
|
||||
\N
|
||||
1990-07-28 11:43:30
|
||||
2001-05-05 00:25:16
|
||||
2029-01-10 05:07:26
|
||||
1972-10-09 13:38:21
|
||||
2012-03-25 19:48:53
|
||||
1987-04-06 01:11:45
|
||||
1998-06-04 07:06:48
|
||||
\N
|
||||
2008-12-26 21:17:06
|
||||
\N
|
||||
1979-04-23 17:33:35
|
||||
2010-01-16 23:22:58
|
||||
1982-07-23 21:47:12
|
||||
2013-08-21 20:50:30
|
||||
1982-12-23 01:04:16
|
||||
1997-04-03 19:25:47
|
||||
1986-02-20 22:57:00
|
||||
2034-09-08 09:15:33
|
||||
\N
|
||||
1999-05-14 02:29:36
|
||||
1989-11-18 21:27:15
|
||||
1987-09-17 13:29:22
|
||||
\N
|
||||
1978-05-03 02:10:34
|
||||
2005-05-22 06:14:24
|
||||
2001-02-11 14:04:25
|
||||
1980-07-28 03:37:23
|
||||
1984-04-11 21:36:37
|
||||
2010-06-02 15:41:07
|
||||
2023-09-05 03:40:25
|
||||
2020-12-29 15:51:36
|
||||
1997-06-06 05:10:09
|
||||
2005-10-01 18:54:02
|
||||
2023-01-17 16:49:50
|
||||
2013-04-27 03:18:24
|
||||
2018-05-23 23:13:58
|
||||
2022-11-23 05:55:06
|
||||
1971-05-09 22:21:51
|
||||
1997-12-05 02:23:28
|
||||
2008-08-22 07:12:18
|
||||
2025-05-23 02:33:13
|
||||
1989-02-18 10:23:41
|
||||
\N
|
||||
2035-08-21 05:44:10
|
||||
1995-02-09 21:59:24
|
||||
1994-11-28 00:22:35
|
||||
1980-07-20 23:07:01
|
||||
1998-09-02 22:25:59
|
||||
1993-01-20 13:25:35
|
||||
1979-12-21 08:44:13
|
||||
2010-03-05 04:25:14
|
||||
\N
|
||||
1989-01-07 14:04:18
|
||||
2015-10-09 11:05:27
|
||||
2006-08-23 13:42:39
|
||||
\N
|
||||
2003-04-27 05:24:12
|
||||
2029-03-21 01:01:47
|
||||
2030-09-08 07:49:06
|
||||
2022-05-05 19:07:56
|
||||
1993-10-22 03:35:35
|
||||
2031-04-01 07:28:30
|
||||
2015-03-10 05:00:13
|
||||
1988-12-08 16:27:26
|
||||
2004-07-07 00:14:42
|
||||
1978-01-11 02:57:18
|
||||
2013-09-28 23:39:57
|
||||
2030-02-25 07:31:16
|
||||
2036-09-15 19:08:03
|
||||
2019-07-16 13:26:21
|
||||
2034-09-05 11:39:43
|
||||
2003-11-07 21:07:04
|
||||
2000-10-02 03:30:59
|
||||
2002-09-19 07:59:10
|
||||
2016-03-16 14:50:17
|
||||
1986-02-06 02:57:29
|
||||
2018-07-07 23:37:36
|
||||
1972-02-07 07:48:10
|
||||
2001-05-06 17:04:36
|
||||
1996-10-05 13:24:45
|
||||
1995-12-26 23:42:26
|
||||
1990-05-13 04:31:37
|
||||
1983-03-10 21:09:05
|
||||
2011-08-03 07:47:28
|
||||
2029-01-26 13:18:23
|
||||
2022-04-24 00:45:21
|
||||
1973-09-03 03:30:56
|
||||
2002-09-19 10:09:02
|
||||
1982-04-30 14:02:41
|
||||
2023-11-30 23:11:51
|
||||
1992-05-13 03:34:54
|
||||
\N
|
||||
1986-05-11 02:20:03
|
||||
1976-12-31 04:46:49
|
||||
2009-10-23 06:12:58
|
||||
2022-02-08 01:26:47
|
||||
1999-02-24 01:33:06
|
||||
2007-09-30 10:55:32
|
||||
1991-11-03 16:14:38
|
||||
1985-06-14 21:54:21
|
||||
1973-06-15 20:59:06
|
||||
1972-07-18 12:26:22
|
||||
2012-07-05 19:34:40
|
||||
1989-01-17 11:48:58
|
||||
1982-02-13 14:32:43
|
||||
1994-11-23 11:36:17
|
||||
2008-08-01 06:57:47
|
||||
2032-11-22 15:34:23
|
||||
1976-01-04 02:56:30
|
||||
2037-04-11 12:30:59
|
||||
2011-02-24 11:33:55
|
||||
1992-11-16 04:53:09
|
||||
2025-11-25 00:01:24
|
||||
2013-02-08 02:14:43
|
||||
\N
|
||||
2002-05-13 14:26:05
|
||||
1983-10-15 18:48:04
|
|
@ -0,0 +1,600 @@
|
|||
\N
|
||||
2002-08-30 15:27:57 GMT
|
||||
1997-11-16 06:01:36 GMT-2
|
||||
\N
|
||||
2010-04-02 01:21:20 GMT+2
|
||||
2019-09-21 05:54:01 GMT+6
|
||||
1978-03-04 09:31:20 GMT-9
|
||||
1992-11-08 19:54:37 GMT-4
|
||||
2002-02-11 19:06:34 GMT-1
|
||||
2012-06-06 18:35:22 GMT+3
|
||||
2012-11-23 22:44:32 GMT+3
|
||||
1997-09-27 12:43:45 GMT-2
|
||||
1972-12-18 04:24:22 GMT-11
|
||||
\N
|
||||
2028-09-29 22:06:36 GMT+9
|
||||
1976-03-31 15:03:19 GMT-10
|
||||
1996-06-26 06:20:33 GMT-3
|
||||
2014-07-06 05:37:36 GMT+4
|
||||
2032-05-21 18:59:04 GMT+10
|
||||
2018-12-18 10:59:54 GMT+3
|
||||
1986-02-15 10:47:42 GMT-6
|
||||
1974-06-02 17:04:29 GMT-10
|
||||
2020-11-03 05:11:44 GMT+6
|
||||
2024-09-29 08:51:37 GMT+7
|
||||
1996-07-03 02:47:04 GMT-3
|
||||
1973-02-11 11:17:51 GMT-11
|
||||
2019-12-02 01:36:35 GMT+6
|
||||
2035-09-04 07:23:02 GMT+11
|
||||
\N
|
||||
2018-05-16 21:07:23 GMT+5
|
||||
\N
|
||||
2030-05-04 03:37:48 GMT+9
|
||||
2002-10-27 17:43:22 GMT
|
||||
2036-03-04 08:06:10 GMT+11
|
||||
2002-10-29 03:21:13 GMT
|
||||
2000-06-22 14:23:04 GMT-1
|
||||
1981-01-01 00:15:56 GMT-8
|
||||
2001-12-31 12:30:28 GMT-1
|
||||
2003-09-25 04:51:05 GMT
|
||||
\N
|
||||
2016-11-04 04:29:31 GMT+5
|
||||
2026-02-23 00:38:02 GMT+8
|
||||
\N
|
||||
2033-10-15 07:38:35 GMT+10
|
||||
2003-07-29 03:55:56 GMT
|
||||
1998-10-09 12:06:21 GMT-2
|
||||
2006-04-02 07:46:45 GMT+1
|
||||
1970-06-06 10:31:07 GMT-12
|
||||
2015-02-06 12:13:46 GMT+4
|
||||
2004-06-23 06:55:31 GMT+0
|
||||
2015-12-08 00:58:12 GMT+4
|
||||
2024-06-26 14:46:31 GMT+7
|
||||
1997-11-07 07:28:15 GMT-2
|
||||
\N
|
||||
1992-11-16 02:10:16 GMT-4
|
||||
\N
|
||||
1996-11-09 19:05:11 GMT-3
|
||||
2010-09-12 13:54:34 GMT+2
|
||||
2012-10-17 04:03:22 GMT+3
|
||||
2035-09-05 02:13:28 GMT+11
|
||||
1998-07-19 07:49:42 GMT-2
|
||||
1973-11-11 02:53:33 GMT-11
|
||||
1992-11-15 01:08:33 GMT-4
|
||||
2032-04-22 09:42:32 GMT+10
|
||||
2031-09-14 17:56:28 GMT+10
|
||||
2005-03-25 17:37:54 GMT+0
|
||||
1993-03-17 02:02:52 GMT-4
|
||||
2004-03-01 07:43:47 GMT+0
|
||||
2009-10-06 23:07:36 GMT+2
|
||||
1977-12-15 18:43:22 GMT-9
|
||||
1993-06-07 21:43:23 GMT-4
|
||||
\N
|
||||
1987-08-07 06:17:36 GMT-6
|
||||
2034-05-01 23:16:48 GMT+11
|
||||
2025-06-19 19:55:50 GMT+8
|
||||
2019-10-13 05:55:45 GMT+6
|
||||
1977-03-25 16:49:59 GMT-9
|
||||
1978-01-16 17:50:54 GMT-9
|
||||
2003-09-29 11:52:36 GMT
|
||||
\N
|
||||
2024-01-12 08:48:56 GMT+7
|
||||
\N
|
||||
2036-08-16 06:28:01 GMT+11
|
||||
1972-05-14 03:02:25 GMT-11
|
||||
2019-01-24 15:28:12 GMT+5
|
||||
2009-12-19 12:26:01 GMT+2
|
||||
1982-07-26 20:02:07 GMT-8
|
||||
2012-01-22 14:30:34 GMT+3
|
||||
1983-07-22 09:43:31 GMT-7
|
||||
1978-05-27 11:44:00 GMT-9
|
||||
1974-04-02 20:06:06 GMT-11
|
||||
2008-02-15 17:44:33 GMT+1
|
||||
2003-01-14 11:53:21 GMT
|
||||
1989-03-30 20:26:36 GMT-5
|
||||
2009-12-14 07:04:27 GMT+2
|
||||
\N
|
||||
\N
|
||||
\N
|
||||
2031-07-02 05:37:29 GMT+10
|
||||
2002-06-01 01:18:02 GMT-1
|
||||
1980-07-28 23:17:09 GMT-8
|
||||
2031-09-06 04:50:14 GMT+10
|
||||
1975-01-20 00:56:52 GMT-10
|
||||
\N
|
||||
2025-05-02 21:09:49 GMT+8
|
||||
\N
|
||||
1991-09-27 13:58:05 GMT-4
|
||||
\N
|
||||
\N
|
||||
2027-03-24 20:00:56 GMT+8
|
||||
2009-01-07 11:43:43 GMT+2
|
||||
1985-02-04 08:43:58 GMT-7
|
||||
\N
|
||||
1982-11-28 07:25:38 GMT-7
|
||||
1996-12-23 15:44:40 GMT-2
|
||||
2012-05-22 19:38:12 GMT+3
|
||||
1980-02-29 23:26:57 GMT-8
|
||||
2018-06-14 05:53:18 GMT+5
|
||||
1981-07-04 12:51:41 GMT-8
|
||||
1993-04-25 18:03:27 GMT-4
|
||||
2027-03-09 22:57:21 GMT+8
|
||||
1981-01-10 10:57:10 GMT-8
|
||||
2005-11-25 19:03:21 GMT+1
|
||||
1974-06-16 15:56:10 GMT-10
|
||||
1985-10-15 14:41:42 GMT-6
|
||||
\N
|
||||
2030-12-31 21:55:54 GMT+10
|
||||
1997-03-15 07:49:13 GMT-2
|
||||
1982-02-26 20:08:21 GMT-8
|
||||
1991-05-13 17:37:16 GMT-4
|
||||
2015-09-03 11:31:02 GMT+4
|
||||
1977-10-28 18:16:43 GMT-9
|
||||
1987-06-05 08:47:52 GMT-6
|
||||
1971-03-29 20:19:41 GMT-12
|
||||
2002-03-28 08:10:03 GMT-1
|
||||
2032-03-25 02:45:28 GMT+10
|
||||
1983-07-23 15:43:13 GMT-7
|
||||
2035-01-02 09:00:43 GMT+11
|
||||
1999-01-15 18:02:24 GMT-2
|
||||
2014-01-31 19:21:57 GMT+4
|
||||
2021-09-02 07:24:41 GMT+6
|
||||
1999-01-02 20:08:46 GMT-2
|
||||
2001-03-24 22:19:29 GMT-1
|
||||
2002-01-21 21:22:15 GMT-1
|
||||
2007-08-06 07:40:41 GMT+1
|
||||
1975-12-07 20:04:02 GMT-10
|
||||
2032-09-07 01:44:27 GMT+10
|
||||
1984-11-22 13:22:27 GMT-7
|
||||
2035-06-18 23:03:59 GMT+11
|
||||
1994-07-29 17:46:43 GMT-3
|
||||
2023-04-20 23:06:32 GMT+7
|
||||
2010-02-17 19:55:27 GMT+2
|
||||
2014-08-23 04:24:35 GMT+4
|
||||
2017-02-08 03:50:26 GMT+5
|
||||
2036-10-24 01:43:48 GMT+12
|
||||
1994-11-14 17:05:49 GMT-3
|
||||
1979-04-19 00:51:15 GMT-9
|
||||
1973-10-09 18:17:56 GMT-11
|
||||
1999-01-17 10:01:57 GMT-2
|
||||
2012-07-08 13:16:32 GMT+3
|
||||
\N
|
||||
1980-11-22 05:36:40 GMT-8
|
||||
2002-02-28 09:35:09 GMT-1
|
||||
2025-11-10 01:29:26 GMT+8
|
||||
2005-03-24 03:31:43 GMT+0
|
||||
\N
|
||||
1987-09-11 07:03:58 GMT-6
|
||||
\N
|
||||
2026-01-29 10:21:54 GMT+8
|
||||
2034-02-14 07:49:09 GMT+11
|
||||
\N
|
||||
\N
|
||||
2031-10-25 07:54:40 GMT+10
|
||||
2010-10-13 20:26:20 GMT+2
|
||||
2036-09-11 09:50:27 GMT+12
|
||||
2027-09-30 19:05:44 GMT+8
|
||||
1995-04-10 19:58:12 GMT-3
|
||||
1990-07-28 11:43:30 GMT-5
|
||||
2001-05-05 00:25:16 GMT-1
|
||||
2029-01-10 05:07:26 GMT+9
|
||||
1972-10-09 13:38:21 GMT-11
|
||||
2012-03-25 19:48:53 GMT+3
|
||||
1987-04-06 01:11:45 GMT-6
|
||||
1998-06-04 07:06:48 GMT-2
|
||||
2038-01-16 08:56:45 GMT+12
|
||||
2008-12-26 21:17:06 GMT+2
|
||||
1981-08-23 10:06:56 GMT-8
|
||||
1979-04-23 17:33:35 GMT-9
|
||||
2010-01-16 23:22:58 GMT+2
|
||||
1982-07-23 21:47:12 GMT-8
|
||||
2013-08-21 20:50:30 GMT+3
|
||||
1982-12-23 01:04:16 GMT-7
|
||||
1997-04-03 19:25:47 GMT-2
|
||||
1986-02-20 22:57:00 GMT-6
|
||||
2034-09-08 09:15:33 GMT+11
|
||||
1975-04-02 17:16:48 GMT-10
|
||||
1999-05-14 02:29:36 GMT-2
|
||||
1989-11-18 21:27:15 GMT-5
|
||||
\N
|
||||
2030-05-15 08:09:46 GMT+9
|
||||
1978-05-03 02:10:34 GMT-9
|
||||
2005-05-22 06:14:24 GMT+0
|
||||
2001-02-11 14:04:25 GMT-1
|
||||
1980-07-28 03:37:23 GMT-8
|
||||
1984-04-11 21:36:37 GMT-7
|
||||
2010-06-02 15:41:07 GMT+2
|
||||
2023-09-05 03:40:25 GMT+7
|
||||
2020-12-29 15:51:36 GMT+6
|
||||
1997-06-06 05:10:09 GMT-2
|
||||
2005-10-01 18:54:02 GMT+1
|
||||
2023-01-17 16:49:50 GMT+7
|
||||
2013-04-27 03:18:24 GMT+3
|
||||
2018-05-23 23:13:58 GMT+5
|
||||
2022-11-23 05:55:06 GMT+7
|
||||
1971-05-09 22:21:51 GMT-12
|
||||
\N
|
||||
2008-08-22 07:12:18 GMT+2
|
||||
2025-05-23 02:33:13 GMT+8
|
||||
1989-02-18 10:23:41 GMT-5
|
||||
2006-05-03 15:10:12 GMT+1
|
||||
2035-08-21 05:44:10 GMT+11
|
||||
1995-02-09 21:59:24 GMT-3
|
||||
1994-11-28 00:22:35 GMT-3
|
||||
1980-07-20 23:07:01 GMT-8
|
||||
1998-09-02 22:25:59 GMT-2
|
||||
1993-01-20 13:25:35 GMT-4
|
||||
1979-12-21 08:44:13 GMT-8
|
||||
\N
|
||||
2022-10-19 07:06:12 GMT+7
|
||||
\N
|
||||
\N
|
||||
2006-08-23 13:42:39 GMT+1
|
||||
2024-05-31 02:55:37 GMT+7
|
||||
2003-04-27 05:24:12 GMT
|
||||
2029-03-21 01:01:47 GMT+9
|
||||
2030-09-08 07:49:06 GMT+9
|
||||
2022-05-05 19:07:56 GMT+6
|
||||
1993-10-22 03:35:35 GMT-4
|
||||
2031-04-01 07:28:30 GMT+10
|
||||
2015-03-10 05:00:13 GMT+4
|
||||
1988-12-08 16:27:26 GMT-5
|
||||
\N
|
||||
\N
|
||||
2013-09-28 23:39:57 GMT+3
|
||||
2030-02-25 07:31:16 GMT+9
|
||||
2036-09-15 19:08:03 GMT+12
|
||||
\N
|
||||
2034-09-05 11:39:43 GMT+11
|
||||
2003-11-07 21:07:04 GMT
|
||||
\N
|
||||
2002-09-19 07:59:10 GMT
|
||||
2016-03-16 14:50:17 GMT+4
|
||||
1986-02-06 02:57:29 GMT-6
|
||||
2018-07-07 23:37:36 GMT+5
|
||||
\N
|
||||
2001-05-06 17:04:36 GMT-1
|
||||
1996-10-05 13:24:45 GMT-3
|
||||
1995-12-26 23:42:26 GMT-3
|
||||
\N
|
||||
1983-03-10 21:09:05 GMT-7
|
||||
2011-08-03 07:47:28 GMT+3
|
||||
2029-01-26 13:18:23 GMT+9
|
||||
2022-04-24 00:45:21 GMT+6
|
||||
1973-09-03 03:30:56 GMT-11
|
||||
\N
|
||||
1982-04-30 14:02:41 GMT-8
|
||||
2023-11-30 23:11:51 GMT+7
|
||||
1992-05-13 03:34:54 GMT-4
|
||||
2001-11-13 00:47:25 GMT-1
|
||||
1986-05-11 02:20:03 GMT-6
|
||||
\N
|
||||
\N
|
||||
2022-02-08 01:26:47 GMT+6
|
||||
1999-02-24 01:33:06 GMT-2
|
||||
2007-09-30 10:55:32 GMT+1
|
||||
1991-11-03 16:14:38 GMT-4
|
||||
1985-06-14 21:54:21 GMT-7
|
||||
1973-06-15 20:59:06 GMT-11
|
||||
1972-07-18 12:26:22 GMT-11
|
||||
\N
|
||||
1989-01-17 11:48:58 GMT-5
|
||||
1982-02-13 14:32:43 GMT-8
|
||||
1994-11-23 11:36:17 GMT-3
|
||||
2008-08-01 06:57:47 GMT+2
|
||||
\N
|
||||
1976-01-04 02:56:30 GMT-10
|
||||
2037-04-11 12:30:59 GMT+12
|
||||
2011-02-24 11:33:55 GMT+3
|
||||
1992-11-16 04:53:09 GMT-4
|
||||
2025-11-25 00:01:24 GMT+8
|
||||
2013-02-08 02:14:43 GMT+3
|
||||
2003-05-05 05:25:07 GMT
|
||||
2002-05-13 14:26:05 GMT-1
|
||||
1983-10-15 18:48:04 GMT-7
|
||||
1995-01-07 19:03:41 GMT-3
|
||||
1986-11-19 05:35:15 GMT-6
|
||||
1991-04-09 21:07:05 GMT-4
|
||||
2011-01-03 05:09:25 GMT+2
|
||||
1974-12-06 19:39:43 GMT-10
|
||||
2000-11-12 19:05:27 GMT-1
|
||||
2006-01-31 04:14:52 GMT+1
|
||||
2004-07-01 01:25:07 GMT+0
|
||||
1978-06-04 03:51:35 GMT-9
|
||||
\N
|
||||
2002-07-29 17:13:57 GMT-1
|
||||
1977-01-03 12:24:31 GMT-10
|
||||
1991-12-12 18:57:03 GMT-4
|
||||
1986-06-13 22:44:23 GMT-6
|
||||
2012-12-08 18:42:47 GMT+3
|
||||
\N
|
||||
1977-10-01 22:10:45 GMT-9
|
||||
1994-10-26 07:10:14 GMT-3
|
||||
1997-01-11 02:26:04 GMT-2
|
||||
2013-11-28 22:50:57 GMT+3
|
||||
2016-07-14 09:05:32 GMT+4
|
||||
\N
|
||||
1994-10-27 20:12:10 GMT-3
|
||||
2018-02-22 01:05:22 GMT+5
|
||||
2034-10-05 12:42:38 GMT+11
|
||||
2028-03-04 00:08:34 GMT+9
|
||||
2037-05-21 23:24:07 GMT+12
|
||||
2031-01-14 06:56:54 GMT+10
|
||||
2036-04-03 10:15:05 GMT+11
|
||||
2036-01-05 10:54:45 GMT+11
|
||||
1979-09-22 14:31:26 GMT-9
|
||||
\N
|
||||
2027-08-13 08:28:38 GMT+8
|
||||
2005-11-17 13:26:47 GMT+1
|
||||
2028-02-23 18:32:03 GMT+9
|
||||
1998-06-17 16:08:12 GMT-2
|
||||
2024-03-02 13:53:12 GMT+7
|
||||
1991-02-24 19:52:40 GMT-5
|
||||
1973-11-23 22:00:24 GMT-11
|
||||
2004-03-18 17:04:06 GMT+0
|
||||
2033-08-13 19:45:25 GMT+10
|
||||
2031-04-23 15:11:59 GMT+10
|
||||
2009-12-31 01:57:02 GMT+2
|
||||
1982-11-10 21:58:20 GMT-7
|
||||
2010-10-07 04:13:26 GMT+2
|
||||
1982-05-18 11:15:30 GMT-8
|
||||
2010-09-28 14:05:51 GMT+2
|
||||
1986-01-10 21:00:43 GMT-6
|
||||
1997-03-20 05:04:03 GMT-2
|
||||
2019-11-15 09:43:14 GMT+6
|
||||
2017-09-06 00:45:47 GMT+5
|
||||
2026-08-04 01:10:21 GMT+8
|
||||
1992-01-20 08:03:40 GMT-4
|
||||
2010-11-21 02:58:16 GMT+2
|
||||
1974-03-27 16:19:28 GMT-11
|
||||
2025-04-12 09:52:38 GMT+7
|
||||
2014-09-14 22:11:22 GMT+4
|
||||
1978-09-27 23:47:35 GMT-9
|
||||
1985-10-29 21:31:25 GMT-6
|
||||
2018-07-07 00:50:47 GMT+5
|
||||
1989-08-31 01:29:41 GMT-5
|
||||
1971-01-10 05:35:01 GMT-12
|
||||
1983-05-28 15:52:19 GMT-7
|
||||
2036-11-29 15:30:27 GMT+12
|
||||
2022-01-24 17:56:31 GMT+6
|
||||
2023-06-09 07:37:51 GMT+7
|
||||
1989-06-08 04:26:44 GMT-5
|
||||
2023-11-15 01:11:44 GMT+7
|
||||
1997-04-16 06:19:03 GMT-2
|
||||
2021-12-18 16:37:32 GMT+6
|
||||
2009-10-07 21:30:12 GMT+2
|
||||
1994-01-29 03:07:14 GMT-4
|
||||
1991-05-26 12:45:10 GMT-4
|
||||
1984-10-01 17:18:39 GMT-7
|
||||
2034-01-04 01:22:45 GMT+11
|
||||
1977-03-15 11:46:55 GMT-9
|
||||
1990-11-22 14:57:16 GMT-5
|
||||
2003-03-15 06:11:50 GMT
|
||||
1977-08-27 08:26:42 GMT-9
|
||||
1972-10-17 01:34:22 GMT-11
|
||||
2032-09-15 22:54:13 GMT+10
|
||||
1994-07-31 10:50:47 GMT-3
|
||||
2024-08-25 05:13:02 GMT+7
|
||||
2013-09-18 18:19:31 GMT+3
|
||||
\N
|
||||
\N
|
||||
1981-12-25 22:21:59 GMT-8
|
||||
\N
|
||||
2008-10-31 04:45:33 GMT+2
|
||||
2013-02-02 02:15:09 GMT+3
|
||||
2018-10-18 12:56:11 GMT+5
|
||||
1978-11-07 15:17:16 GMT-9
|
||||
2037-01-19 01:13:16 GMT+12
|
||||
\N
|
||||
2021-04-21 08:45:28 GMT+6
|
||||
2028-01-21 13:52:14 GMT+8
|
||||
2015-03-11 16:07:57 GMT+4
|
||||
2005-03-13 17:22:20 GMT+0
|
||||
2004-01-28 20:45:12 GMT+0
|
||||
1991-03-21 13:23:37 GMT-5
|
||||
2029-07-26 06:01:08 GMT+9
|
||||
2002-11-15 19:24:22 GMT
|
||||
1987-05-02 16:25:01 GMT-6
|
||||
1999-04-01 05:54:41 GMT-2
|
||||
2034-03-18 02:35:05 GMT+11
|
||||
1998-07-08 21:50:27 GMT-2
|
||||
2015-06-08 05:27:05 GMT+4
|
||||
1999-05-16 03:11:42 GMT-2
|
||||
2017-10-29 15:46:32 GMT+5
|
||||
2037-06-14 02:45:44 GMT+12
|
||||
1997-11-29 16:30:09 GMT-2
|
||||
1993-02-26 22:47:39 GMT-4
|
||||
1998-12-04 16:43:34 GMT-2
|
||||
2025-08-14 16:29:42 GMT+8
|
||||
1982-07-31 16:54:13 GMT-8
|
||||
\N
|
||||
2029-04-26 12:37:56 GMT+9
|
||||
2025-09-21 23:33:16 GMT+8
|
||||
\N
|
||||
2017-06-24 03:39:14 GMT+5
|
||||
1990-11-17 19:15:50 GMT-5
|
||||
2014-03-30 15:02:02 GMT+4
|
||||
\N
|
||||
2020-08-26 07:34:24 GMT+6
|
||||
1992-11-14 14:14:38 GMT-4
|
||||
2010-04-22 17:35:09 GMT+2
|
||||
2034-03-23 18:10:28 GMT+11
|
||||
1984-10-17 02:42:50 GMT-7
|
||||
2001-04-29 03:59:54 GMT-1
|
||||
1996-08-15 07:16:34 GMT-3
|
||||
\N
|
||||
1974-02-10 02:40:01 GMT-11
|
||||
2033-03-28 21:51:56 GMT+10
|
||||
2004-07-20 07:26:40 GMT+0
|
||||
2017-07-25 17:26:58 GMT+5
|
||||
2025-12-12 13:27:04 GMT+8
|
||||
2021-10-01 01:30:40 GMT+6
|
||||
1986-11-23 18:40:24 GMT-6
|
||||
2025-10-28 20:22:31 GMT+8
|
||||
2021-04-23 14:09:07 GMT+6
|
||||
2002-03-22 12:22:14 GMT-1
|
||||
2013-01-18 08:22:38 GMT+3
|
||||
1988-06-29 03:31:44 GMT-5
|
||||
1976-04-19 18:45:58 GMT-10
|
||||
2008-01-09 11:25:14 GMT+1
|
||||
1998-11-13 14:35:23 GMT-2
|
||||
2033-12-18 16:43:16 GMT+11
|
||||
1983-07-06 14:11:03 GMT-7
|
||||
2017-07-23 00:18:04 GMT+5
|
||||
2037-01-27 05:35:21 GMT+12
|
||||
2004-09-14 14:29:32 GMT+0
|
||||
2035-11-11 14:27:23 GMT+11
|
||||
2021-05-09 15:44:42 GMT+6
|
||||
1987-11-02 15:56:40 GMT-6
|
||||
\N
|
||||
2026-12-02 12:28:27 GMT+8
|
||||
1990-12-27 22:26:41 GMT-5
|
||||
\N
|
||||
1987-07-11 01:54:54 GMT-6
|
||||
2029-11-27 10:59:35 GMT+9
|
||||
1990-04-16 21:11:47 GMT-5
|
||||
2023-05-11 10:45:45 GMT+7
|
||||
\N
|
||||
2011-08-05 12:47:00 GMT+3
|
||||
1993-06-09 06:44:41 GMT-4
|
||||
1982-06-02 21:37:08 GMT-8
|
||||
2025-08-13 13:03:45 GMT+8
|
||||
1974-03-11 03:30:14 GMT-11
|
||||
2011-09-27 19:47:44 GMT+3
|
||||
1992-12-02 08:40:51 GMT-4
|
||||
2033-10-11 14:20:32 GMT+10
|
||||
1983-01-20 16:32:49 GMT-7
|
||||
2002-09-15 02:56:52 GMT
|
||||
2006-09-27 11:45:29 GMT+1
|
||||
1997-06-29 05:54:17 GMT-2
|
||||
\N
|
||||
1984-02-22 06:27:16 GMT-7
|
||||
1992-07-19 22:54:28 GMT-4
|
||||
1991-12-22 22:41:11 GMT-4
|
||||
1990-07-06 01:25:10 GMT-5
|
||||
1973-06-15 06:34:08 GMT-11
|
||||
1976-03-21 22:21:06 GMT-10
|
||||
1976-06-15 07:14:46 GMT-10
|
||||
1972-01-15 06:30:22 GMT-11
|
||||
1971-08-06 10:41:43 GMT-11
|
||||
1995-08-21 21:12:06 GMT-3
|
||||
2006-07-30 07:14:27 GMT+1
|
||||
2023-09-20 23:59:35 GMT+7
|
||||
2003-03-18 13:53:03 GMT
|
||||
2008-06-18 05:31:10 GMT+2
|
||||
1993-06-07 06:55:33 GMT-4
|
||||
2036-08-28 00:46:01 GMT+12
|
||||
1970-05-11 08:36:31 GMT-12
|
||||
\N
|
||||
2019-01-10 06:01:34 GMT+5
|
||||
1986-04-16 07:43:34 GMT-6
|
||||
2007-07-14 07:46:45 GMT+1
|
||||
2015-05-11 05:13:03 GMT+4
|
||||
2025-12-09 22:39:17 GMT+8
|
||||
\N
|
||||
2012-11-18 03:02:25 GMT+3
|
||||
2022-08-08 02:56:37 GMT+7
|
||||
1988-10-20 06:54:55 GMT-5
|
||||
1985-02-21 08:46:49 GMT-7
|
||||
1996-05-22 09:18:01 GMT-3
|
||||
1976-10-07 09:21:50 GMT-10
|
||||
1981-08-22 18:22:24 GMT-8
|
||||
2035-08-31 17:58:57 GMT+11
|
||||
\N
|
||||
\N
|
||||
\N
|
||||
2011-11-13 20:09:47 GMT+3
|
||||
2018-04-02 08:00:33 GMT+5
|
||||
1984-08-07 03:17:37 GMT-7
|
||||
1988-07-13 10:31:02 GMT-5
|
||||
\N
|
||||
2029-08-28 23:46:32 GMT+9
|
||||
2008-12-10 12:40:01 GMT+2
|
||||
1974-01-10 13:11:31 GMT-11
|
||||
1996-06-17 05:23:30 GMT-3
|
||||
1974-06-05 10:42:56 GMT-10
|
||||
1975-02-19 03:03:35 GMT-10
|
||||
1994-06-29 10:30:45 GMT-3
|
||||
2018-07-08 13:28:04 GMT+5
|
||||
\N
|
||||
1984-10-09 13:52:14 GMT-7
|
||||
2033-12-23 18:53:07 GMT+11
|
||||
2021-06-11 02:18:52 GMT+6
|
||||
2027-01-20 17:50:31 GMT+8
|
||||
2012-04-17 09:46:09 GMT+3
|
||||
1982-03-08 23:06:30 GMT-8
|
||||
2004-11-03 06:34:08 GMT+0
|
||||
2028-05-30 05:51:58 GMT+9
|
||||
1981-09-06 21:46:45 GMT-8
|
||||
2004-08-12 16:29:39 GMT+0
|
||||
1998-02-22 05:03:52 GMT-2
|
||||
2023-03-08 13:32:55 GMT+7
|
||||
1991-09-16 22:16:21 GMT-4
|
||||
\N
|
||||
1999-07-18 22:54:50 GMT-2
|
||||
\N
|
||||
1991-11-12 03:31:16 GMT-4
|
||||
1993-08-28 02:05:54 GMT-4
|
||||
2026-11-10 04:53:55 GMT+8
|
||||
2015-06-21 03:00:10 GMT+4
|
||||
2032-02-05 04:32:19 GMT+10
|
||||
1974-11-25 19:29:07 GMT-10
|
||||
1985-11-04 00:11:55 GMT-6
|
||||
1992-11-23 19:38:16 GMT-4
|
||||
1986-07-18 15:15:06 GMT-6
|
||||
1987-10-25 00:29:12 GMT-6
|
||||
1987-12-08 10:12:04 GMT-6
|
||||
1996-11-06 14:53:07 GMT-3
|
||||
2028-05-15 05:23:09 GMT+9
|
||||
1998-12-12 15:18:10 GMT-2
|
||||
1974-11-23 21:02:21 GMT-10
|
||||
2021-08-17 04:11:28 GMT+6
|
||||
2020-04-02 06:42:25 GMT+6
|
||||
\N
|
||||
1994-07-01 07:43:54 GMT-3
|
||||
1989-03-09 09:10:29 GMT-5
|
||||
2008-04-06 08:50:48 GMT+1
|
||||
2027-02-23 20:30:36 GMT+8
|
||||
1983-10-09 05:19:36 GMT-7
|
||||
1995-10-16 11:47:58 GMT-3
|
||||
2007-09-09 12:43:09 GMT+1
|
||||
1977-12-16 00:24:08 GMT-9
|
||||
2008-04-05 21:05:40 GMT+1
|
||||
\N
|
||||
1983-10-17 15:56:25 GMT-7
|
||||
2029-08-12 12:45:17 GMT+9
|
||||
1994-10-20 18:41:45 GMT-3
|
||||
2017-12-08 16:48:31 GMT+5
|
||||
2018-02-09 08:41:07 GMT+5
|
||||
1973-12-13 16:00:22 GMT-11
|
||||
2022-06-20 01:45:40 GMT+7
|
||||
2033-05-25 10:33:11 GMT+10
|
||||
2017-02-01 05:21:30 GMT+5
|
||||
2019-02-01 20:00:39 GMT+5
|
||||
1970-10-01 20:58:08 GMT-12
|
||||
2025-01-17 02:23:47 GMT+7
|
||||
1974-03-08 16:19:17 GMT-11
|
||||
2020-05-27 21:01:29 GMT+6
|
||||
1999-01-10 08:39:45 GMT-2
|
||||
2009-05-26 10:18:22 GMT+2
|
||||
2014-07-22 07:54:09 GMT+4
|
||||
2036-10-26 20:20:46 GMT+12
|
||||
2025-03-03 08:47:09 GMT+7
|
||||
1972-09-22 21:58:10 GMT-11
|
||||
1998-05-16 11:05:46 GMT-2
|
||||
1994-09-14 08:08:42 GMT-3
|
||||
1976-08-14 12:10:43 GMT-10
|
||||
1975-03-14 19:29:02 GMT-10
|
||||
1980-10-31 16:30:29 GMT-8
|
||||
1975-10-03 19:29:30 GMT-10
|
||||
2020-02-09 20:43:47 GMT+6
|
||||
1975-04-02 10:00:13 GMT-10
|
||||
2027-07-27 11:17:48 GMT+8
|
||||
2022-05-23 09:28:31 GMT+6
|
||||
1999-11-08 15:38:46 GMT-1
|
||||
2007-01-14 02:48:02 GMT+1
|
||||
2026-05-04 08:12:13 GMT+8
|
||||
2029-06-19 09:20:46 GMT+9
|
||||
2005-05-07 19:38:36 GMT+0
|
||||
2023-04-23 14:15:53 GMT+7
|
||||
2022-02-12 01:05:51 GMT+6
|
|
@ -0,0 +1,599 @@
|
|||
15:27:57 GMT
|
||||
06:01:36 GMT-2
|
||||
\N
|
||||
01:21:20 GMT+2
|
||||
05:54:01 GMT+6
|
||||
09:31:20 GMT-9
|
||||
19:54:37 GMT-4
|
||||
19:06:34 GMT-1
|
||||
18:35:22 GMT+3
|
||||
22:44:32 GMT+3
|
||||
12:43:45 GMT-2
|
||||
04:24:22 GMT-11
|
||||
\N
|
||||
22:06:36 GMT+9
|
||||
15:03:19 GMT-10
|
||||
06:20:33 GMT-3
|
||||
05:37:36 GMT+4
|
||||
18:59:04 GMT+10
|
||||
10:59:54 GMT+3
|
||||
10:47:42 GMT-6
|
||||
17:04:29 GMT-10
|
||||
05:11:44 GMT+6
|
||||
08:51:37 GMT+7
|
||||
02:47:04 GMT-3
|
||||
11:17:51 GMT-11
|
||||
01:36:35 GMT+6
|
||||
07:23:02 GMT+11
|
||||
\N
|
||||
21:07:23 GMT+5
|
||||
\N
|
||||
03:37:48 GMT+9
|
||||
17:43:22 GMT
|
||||
08:06:10 GMT+11
|
||||
03:21:13 GMT
|
||||
14:23:04 GMT-1
|
||||
00:15:56 GMT-8
|
||||
12:30:28 GMT-1
|
||||
04:51:05 GMT
|
||||
\N
|
||||
04:29:31 GMT+5
|
||||
00:38:02 GMT+8
|
||||
\N
|
||||
07:38:35 GMT+10
|
||||
03:55:56 GMT
|
||||
12:06:21 GMT-2
|
||||
07:46:45 GMT+3
|
||||
10:31:07 GMT-12
|
||||
12:13:46 GMT+4
|
||||
06:55:31 GMT+0
|
||||
00:58:12 GMT+4
|
||||
14:46:31 GMT+7
|
||||
07:28:15 GMT-2
|
||||
\N
|
||||
02:10:16 GMT-4
|
||||
\N
|
||||
19:05:11 GMT-3
|
||||
13:54:34 GMT+2
|
||||
04:03:22 GMT+3
|
||||
02:13:28 GMT+11
|
||||
07:49:42 GMT-2
|
||||
02:53:33 GMT-11
|
||||
01:08:33 GMT-4
|
||||
09:42:32 GMT+10
|
||||
17:56:28 GMT+10
|
||||
17:37:54 GMT+0
|
||||
02:02:52 GMT-4
|
||||
07:43:47 GMT+0
|
||||
23:07:36 GMT+2
|
||||
18:43:22 GMT-9
|
||||
21:43:23 GMT-4
|
||||
\N
|
||||
06:17:36 GMT-6
|
||||
23:16:48 GMT+11
|
||||
19:55:50 GMT+8
|
||||
05:55:45 GMT+6
|
||||
16:49:59 GMT-9
|
||||
17:50:54 GMT-9
|
||||
11:52:36 GMT
|
||||
\N
|
||||
08:48:56 GMT+7
|
||||
\N
|
||||
06:28:01 GMT+11
|
||||
03:02:25 GMT-11
|
||||
15:28:12 GMT+5
|
||||
12:26:01 GMT+2
|
||||
20:02:07 GMT-8
|
||||
14:30:34 GMT+3
|
||||
09:43:31 GMT-7
|
||||
11:44:00 GMT-9
|
||||
20:06:06 GMT-11
|
||||
17:44:33 GMT+1
|
||||
11:53:21 GMT
|
||||
20:26:36 GMT-5
|
||||
07:04:27 GMT+2
|
||||
\N
|
||||
\N
|
||||
\N
|
||||
05:37:29 GMT+10
|
||||
01:18:02 GMT-1
|
||||
23:17:09 GMT-8
|
||||
04:50:14 GMT+10
|
||||
00:56:52 GMT-10
|
||||
\N
|
||||
21:09:49 GMT+8
|
||||
\N
|
||||
13:58:05 GMT-4
|
||||
\N
|
||||
\N
|
||||
20:00:56 GMT+8
|
||||
11:43:43 GMT+2
|
||||
08:43:58 GMT-7
|
||||
\N
|
||||
07:25:38 GMT-7
|
||||
15:44:40 GMT-2
|
||||
19:38:12 GMT+3
|
||||
23:26:57 GMT-8
|
||||
05:53:18 GMT+5
|
||||
12:51:41 GMT-8
|
||||
18:03:27 GMT-4
|
||||
22:57:21 GMT+8
|
||||
10:57:10 GMT-8
|
||||
19:03:21 GMT+1
|
||||
15:56:10 GMT-10
|
||||
14:41:42 GMT-6
|
||||
\N
|
||||
21:55:54 GMT+10
|
||||
07:49:13 GMT-2
|
||||
20:08:21 GMT-8
|
||||
17:37:16 GMT-4
|
||||
11:31:02 GMT+4
|
||||
18:16:43 GMT-9
|
||||
08:47:52 GMT-6
|
||||
20:19:41 GMT-12
|
||||
08:10:03 GMT-1
|
||||
02:45:28 GMT+10
|
||||
15:43:13 GMT-7
|
||||
09:00:43 GMT+11
|
||||
18:02:24 GMT-2
|
||||
19:21:57 GMT+4
|
||||
07:24:41 GMT+6
|
||||
20:08:46 GMT-2
|
||||
22:19:29 GMT-1
|
||||
21:22:15 GMT-1
|
||||
07:40:41 GMT+1
|
||||
20:04:02 GMT-10
|
||||
01:44:27 GMT+10
|
||||
13:22:27 GMT-7
|
||||
23:03:59 GMT+11
|
||||
17:46:43 GMT-3
|
||||
23:06:32 GMT+7
|
||||
19:55:27 GMT+2
|
||||
04:24:35 GMT+4
|
||||
03:50:26 GMT+5
|
||||
01:43:48 GMT+12
|
||||
17:05:49 GMT-3
|
||||
00:51:15 GMT-9
|
||||
18:17:56 GMT-11
|
||||
10:01:57 GMT-2
|
||||
13:16:32 GMT+3
|
||||
\N
|
||||
05:36:40 GMT-8
|
||||
09:35:09 GMT-1
|
||||
01:29:26 GMT+8
|
||||
03:31:43 GMT+0
|
||||
\N
|
||||
07:03:58 GMT-6
|
||||
\N
|
||||
10:21:54 GMT+8
|
||||
07:49:09 GMT+11
|
||||
\N
|
||||
\N
|
||||
07:54:40 GMT+10
|
||||
20:26:20 GMT+2
|
||||
09:50:27 GMT+12
|
||||
19:05:44 GMT+8
|
||||
19:58:12 GMT-3
|
||||
11:43:30 GMT-5
|
||||
00:25:16 GMT-1
|
||||
05:07:26 GMT+9
|
||||
13:38:21 GMT-11
|
||||
19:48:53 GMT+3
|
||||
01:11:45 GMT-6
|
||||
07:06:48 GMT-2
|
||||
08:56:45 GMT+12
|
||||
21:17:06 GMT+2
|
||||
10:06:56 GMT-8
|
||||
17:33:35 GMT-9
|
||||
23:22:58 GMT+2
|
||||
21:47:12 GMT-8
|
||||
20:50:30 GMT+3
|
||||
01:04:16 GMT-7
|
||||
19:25:47 GMT-2
|
||||
22:57:00 GMT-6
|
||||
09:15:33 GMT+11
|
||||
17:16:48 GMT-10
|
||||
02:29:36 GMT-2
|
||||
21:27:15 GMT-5
|
||||
\N
|
||||
08:09:46 GMT+9
|
||||
02:10:34 GMT-9
|
||||
06:14:24 GMT+0
|
||||
14:04:25 GMT-1
|
||||
03:37:23 GMT-8
|
||||
21:36:37 GMT-7
|
||||
15:41:07 GMT+2
|
||||
03:40:25 GMT+7
|
||||
15:51:36 GMT+6
|
||||
05:10:09 GMT-2
|
||||
18:54:02 GMT+1
|
||||
16:49:50 GMT+7
|
||||
03:18:24 GMT+3
|
||||
23:13:58 GMT+5
|
||||
05:55:06 GMT+7
|
||||
22:21:51 GMT-12
|
||||
\N
|
||||
07:12:18 GMT+2
|
||||
02:33:13 GMT+8
|
||||
10:23:41 GMT-5
|
||||
15:10:12 GMT+1
|
||||
05:44:10 GMT+11
|
||||
21:59:24 GMT-3
|
||||
00:22:35 GMT-3
|
||||
23:07:01 GMT-8
|
||||
22:25:59 GMT-2
|
||||
13:25:35 GMT-4
|
||||
08:44:13 GMT-8
|
||||
\N
|
||||
07:06:12 GMT+7
|
||||
\N
|
||||
\N
|
||||
13:42:39 GMT+1
|
||||
02:55:37 GMT+7
|
||||
05:24:12 GMT
|
||||
01:01:47 GMT+9
|
||||
07:49:06 GMT+9
|
||||
19:07:56 GMT+6
|
||||
03:35:35 GMT-4
|
||||
07:28:30 GMT+10
|
||||
05:00:13 GMT+4
|
||||
16:27:26 GMT-5
|
||||
\N
|
||||
\N
|
||||
23:39:57 GMT+3
|
||||
07:31:16 GMT+9
|
||||
19:08:03 GMT+12
|
||||
\N
|
||||
11:39:43 GMT+11
|
||||
21:07:04 GMT
|
||||
\N
|
||||
07:59:10 GMT
|
||||
14:50:17 GMT+4
|
||||
02:57:29 GMT-6
|
||||
23:37:36 GMT+5
|
||||
\N
|
||||
17:04:36 GMT-1
|
||||
13:24:45 GMT-3
|
||||
23:42:26 GMT-3
|
||||
\N
|
||||
21:09:05 GMT-7
|
||||
07:47:28 GMT+3
|
||||
13:18:23 GMT+9
|
||||
00:45:21 GMT+6
|
||||
03:30:56 GMT-11
|
||||
\N
|
||||
14:02:41 GMT-8
|
||||
23:11:51 GMT+7
|
||||
03:34:54 GMT-4
|
||||
00:47:25 GMT-1
|
||||
02:20:03 GMT-6
|
||||
\N
|
||||
\N
|
||||
01:26:47 GMT+6
|
||||
01:33:06 GMT-2
|
||||
10:55:32 GMT+1
|
||||
16:14:38 GMT-4
|
||||
21:54:21 GMT-7
|
||||
20:59:06 GMT-11
|
||||
12:26:22 GMT-11
|
||||
\N
|
||||
11:48:58 GMT-5
|
||||
14:32:43 GMT-8
|
||||
11:36:17 GMT-3
|
||||
06:57:47 GMT+2
|
||||
\N
|
||||
02:56:30 GMT-10
|
||||
12:30:59 GMT+12
|
||||
11:33:55 GMT+3
|
||||
04:53:09 GMT-4
|
||||
00:01:24 GMT+8
|
||||
02:14:43 GMT+3
|
||||
05:25:07 GMT
|
||||
14:26:05 GMT-1
|
||||
18:48:04 GMT-7
|
||||
19:03:41 GMT-3
|
||||
05:35:15 GMT-6
|
||||
21:07:05 GMT-4
|
||||
05:09:25 GMT+2
|
||||
19:39:43 GMT-10
|
||||
19:05:27 GMT-1
|
||||
04:14:52 GMT+1
|
||||
01:25:07 GMT+0
|
||||
03:51:35 GMT-9
|
||||
\N
|
||||
17:13:57 GMT-1
|
||||
12:24:31 GMT-10
|
||||
18:57:03 GMT-4
|
||||
22:44:23 GMT-6
|
||||
18:42:47 GMT+3
|
||||
\N
|
||||
22:10:45 GMT-9
|
||||
07:10:14 GMT-3
|
||||
02:26:04 GMT-2
|
||||
22:50:57 GMT+3
|
||||
09:05:32 GMT+4
|
||||
\N
|
||||
20:12:10 GMT-3
|
||||
01:05:22 GMT+5
|
||||
12:42:38 GMT+11
|
||||
00:08:34 GMT+9
|
||||
23:24:07 GMT+12
|
||||
06:56:54 GMT+10
|
||||
10:15:05 GMT+11
|
||||
10:54:45 GMT+11
|
||||
14:31:26 GMT-9
|
||||
\N
|
||||
08:28:38 GMT+8
|
||||
13:26:47 GMT+1
|
||||
18:32:03 GMT+9
|
||||
16:08:12 GMT-2
|
||||
13:53:12 GMT+7
|
||||
19:52:40 GMT-5
|
||||
22:00:24 GMT-11
|
||||
17:04:06 GMT+0
|
||||
19:45:25 GMT+10
|
||||
15:11:59 GMT+10
|
||||
01:57:02 GMT+2
|
||||
21:58:20 GMT-7
|
||||
04:13:26 GMT+2
|
||||
11:15:30 GMT-8
|
||||
14:05:51 GMT+2
|
||||
21:00:43 GMT-6
|
||||
05:04:03 GMT-2
|
||||
09:43:14 GMT+6
|
||||
00:45:47 GMT+5
|
||||
01:10:21 GMT+8
|
||||
08:03:40 GMT-4
|
||||
02:58:16 GMT+2
|
||||
16:19:28 GMT-11
|
||||
09:52:38 GMT+7
|
||||
22:11:22 GMT+4
|
||||
23:47:35 GMT-9
|
||||
21:31:25 GMT-6
|
||||
00:50:47 GMT+5
|
||||
01:29:41 GMT-5
|
||||
05:35:01 GMT-12
|
||||
15:52:19 GMT-7
|
||||
15:30:27 GMT+12
|
||||
17:56:31 GMT+6
|
||||
07:37:51 GMT+7
|
||||
04:26:44 GMT-5
|
||||
01:11:44 GMT+7
|
||||
06:19:03 GMT-2
|
||||
16:37:32 GMT+6
|
||||
21:30:12 GMT+2
|
||||
03:07:14 GMT-4
|
||||
12:45:10 GMT-4
|
||||
17:18:39 GMT-7
|
||||
01:22:45 GMT+11
|
||||
11:46:55 GMT-9
|
||||
14:57:16 GMT-5
|
||||
06:11:50 GMT
|
||||
08:26:42 GMT-9
|
||||
01:34:22 GMT-11
|
||||
22:54:13 GMT+10
|
||||
10:50:47 GMT-3
|
||||
05:13:02 GMT+7
|
||||
18:19:31 GMT+3
|
||||
\N
|
||||
\N
|
||||
22:21:59 GMT-8
|
||||
\N
|
||||
04:45:33 GMT+2
|
||||
02:15:09 GMT+3
|
||||
12:56:11 GMT+5
|
||||
15:17:16 GMT-9
|
||||
01:13:16 GMT+12
|
||||
\N
|
||||
08:45:28 GMT+6
|
||||
13:52:14 GMT+8
|
||||
16:07:57 GMT+4
|
||||
17:22:20 GMT+0
|
||||
20:45:12 GMT+0
|
||||
13:23:37 GMT-5
|
||||
06:01:08 GMT+9
|
||||
19:24:22 GMT
|
||||
16:25:01 GMT-6
|
||||
05:54:41 GMT-2
|
||||
02:35:05 GMT+11
|
||||
21:50:27 GMT-2
|
||||
05:27:05 GMT+4
|
||||
03:11:42 GMT-2
|
||||
15:46:32 GMT+5
|
||||
02:45:44 GMT+12
|
||||
16:30:09 GMT-2
|
||||
22:47:39 GMT-4
|
||||
16:43:34 GMT-2
|
||||
16:29:42 GMT+8
|
||||
16:54:13 GMT-8
|
||||
\N
|
||||
12:37:56 GMT+9
|
||||
23:33:16 GMT+8
|
||||
\N
|
||||
03:39:14 GMT+5
|
||||
19:15:50 GMT-5
|
||||
15:02:02 GMT+4
|
||||
\N
|
||||
07:34:24 GMT+6
|
||||
14:14:38 GMT-4
|
||||
17:35:09 GMT+2
|
||||
18:10:28 GMT+11
|
||||
02:42:50 GMT-7
|
||||
03:59:54 GMT-1
|
||||
07:16:34 GMT-3
|
||||
\N
|
||||
02:40:01 GMT-11
|
||||
21:51:56 GMT+10
|
||||
07:26:40 GMT+0
|
||||
17:26:58 GMT+5
|
||||
13:27:04 GMT+8
|
||||
01:30:40 GMT+6
|
||||
18:40:24 GMT-6
|
||||
20:22:31 GMT+8
|
||||
14:09:07 GMT+6
|
||||
12:22:14 GMT-1
|
||||
08:22:38 GMT+3
|
||||
03:31:44 GMT-5
|
||||
18:45:58 GMT-10
|
||||
11:25:14 GMT+1
|
||||
14:35:23 GMT-2
|
||||
16:43:16 GMT+11
|
||||
14:11:03 GMT-7
|
||||
00:18:04 GMT+5
|
||||
05:35:21 GMT+12
|
||||
14:29:32 GMT+0
|
||||
14:27:23 GMT+11
|
||||
15:44:42 GMT+6
|
||||
15:56:40 GMT-6
|
||||
\N
|
||||
12:28:27 GMT+8
|
||||
22:26:41 GMT-5
|
||||
\N
|
||||
01:54:54 GMT-6
|
||||
10:59:35 GMT+9
|
||||
21:11:47 GMT-5
|
||||
10:45:45 GMT+7
|
||||
\N
|
||||
12:47:00 GMT+3
|
||||
06:44:41 GMT-4
|
||||
21:37:08 GMT-8
|
||||
13:03:45 GMT+8
|
||||
03:30:14 GMT-11
|
||||
19:47:44 GMT+3
|
||||
08:40:51 GMT-4
|
||||
14:20:32 GMT+10
|
||||
16:32:49 GMT-7
|
||||
02:56:52 GMT
|
||||
11:45:29 GMT+1
|
||||
05:54:17 GMT-2
|
||||
\N
|
||||
06:27:16 GMT-7
|
||||
22:54:28 GMT-4
|
||||
22:41:11 GMT-4
|
||||
01:25:10 GMT-5
|
||||
06:34:08 GMT-11
|
||||
22:21:06 GMT-10
|
||||
07:14:46 GMT-10
|
||||
06:30:22 GMT-11
|
||||
10:41:43 GMT-11
|
||||
21:12:06 GMT-3
|
||||
07:14:27 GMT+1
|
||||
23:59:35 GMT+7
|
||||
13:53:03 GMT
|
||||
05:31:10 GMT+2
|
||||
06:55:33 GMT-4
|
||||
00:46:01 GMT+12
|
||||
08:36:31 GMT-12
|
||||
\N
|
||||
06:01:34 GMT+5
|
||||
07:43:34 GMT-6
|
||||
07:46:45 GMT+1
|
||||
05:13:03 GMT+4
|
||||
22:39:17 GMT+8
|
||||
\N
|
||||
03:02:25 GMT+3
|
||||
02:56:37 GMT+7
|
||||
06:54:55 GMT-5
|
||||
08:46:49 GMT-7
|
||||
09:18:01 GMT-3
|
||||
09:21:50 GMT-10
|
||||
18:22:24 GMT-8
|
||||
17:58:57 GMT+11
|
||||
\N
|
||||
\N
|
||||
\N
|
||||
20:09:47 GMT+3
|
||||
08:00:33 GMT+5
|
||||
03:17:37 GMT-7
|
||||
10:31:02 GMT-5
|
||||
\N
|
||||
23:46:32 GMT+9
|
||||
12:40:01 GMT+2
|
||||
13:11:31 GMT-11
|
||||
05:23:30 GMT-3
|
||||
10:42:56 GMT-10
|
||||
03:03:35 GMT-10
|
||||
10:30:45 GMT-3
|
||||
13:28:04 GMT+5
|
||||
\N
|
||||
13:52:14 GMT-7
|
||||
18:53:07 GMT+11
|
||||
02:18:52 GMT+6
|
||||
17:50:31 GMT+8
|
||||
09:46:09 GMT+3
|
||||
23:06:30 GMT-8
|
||||
06:34:08 GMT+0
|
||||
05:51:58 GMT+9
|
||||
21:46:45 GMT-8
|
||||
16:29:39 GMT+0
|
||||
05:03:52 GMT-2
|
||||
13:32:55 GMT+7
|
||||
22:16:21 GMT-4
|
||||
\N
|
||||
22:54:50 GMT-2
|
||||
\N
|
||||
03:31:16 GMT-4
|
||||
02:05:54 GMT-4
|
||||
04:53:55 GMT+8
|
||||
03:00:10 GMT+4
|
||||
04:32:19 GMT+10
|
||||
19:29:07 GMT-10
|
||||
00:11:55 GMT-6
|
||||
19:38:16 GMT-4
|
||||
15:15:06 GMT-6
|
||||
00:29:12 GMT-6
|
||||
10:12:04 GMT-6
|
||||
14:53:07 GMT-3
|
||||
05:23:09 GMT+9
|
||||
15:18:10 GMT-2
|
||||
21:02:21 GMT-10
|
||||
04:11:28 GMT+6
|
||||
06:42:25 GMT+6
|
||||
\N
|
||||
07:43:54 GMT-3
|
||||
09:10:29 GMT-5
|
||||
08:50:48 GMT+1
|
||||
20:30:36 GMT+8
|
||||
05:19:36 GMT-7
|
||||
11:47:58 GMT-3
|
||||
12:43:09 GMT+1
|
||||
00:24:08 GMT-9
|
||||
21:05:40 GMT+1
|
||||
\N
|
||||
15:56:25 GMT-7
|
||||
12:45:17 GMT+9
|
||||
18:41:45 GMT-3
|
||||
16:48:31 GMT+5
|
||||
08:41:07 GMT+5
|
||||
16:00:22 GMT-11
|
||||
01:45:40 GMT+7
|
||||
10:33:11 GMT+10
|
||||
05:21:30 GMT+5
|
||||
20:00:39 GMT+5
|
||||
20:58:08 GMT-12
|
||||
02:23:47 GMT+7
|
||||
16:19:17 GMT-11
|
||||
21:01:29 GMT+6
|
||||
08:39:45 GMT-2
|
||||
10:18:22 GMT+2
|
||||
07:54:09 GMT+4
|
||||
20:20:46 GMT+12
|
||||
08:47:09 GMT+7
|
||||
21:58:10 GMT-11
|
||||
11:05:46 GMT-2
|
||||
08:08:42 GMT-3
|
||||
12:10:43 GMT-10
|
||||
19:29:02 GMT-10
|
||||
16:30:29 GMT-8
|
||||
19:29:30 GMT-10
|
||||
20:43:47 GMT+6
|
||||
10:00:13 GMT-10
|
||||
11:17:48 GMT+8
|
||||
09:28:31 GMT+6
|
||||
15:38:46 GMT-1
|
||||
02:48:02 GMT+1
|
||||
08:12:13 GMT+8
|
||||
09:20:46 GMT+9
|
||||
19:38:36 GMT+0
|
||||
14:15:53 GMT+7
|
||||
01:05:51 GMT+6
|
|
@ -0,0 +1,621 @@
|
|||
10101001001110001110101100110110000000110011010000101000100010001000011110000111100110111111111
|
||||
001110101100110
|
||||
010000011101100110001001111111101110011110110100011001101011110010101100111011011101101101
|
||||
1111000010000011110011101001101101011110101111011011001000000101111110000000111011010100011001
|
||||
1111110111111000000100000101010010011101111100010100010101101101110010111110110010110000000000
|
||||
000000110100001010001011101110111110100111010011000101111111000100001001000011001011000111101
|
||||
0100001010001011101110111110100111010011000101111111000100001001000011001011000
|
||||
011000001000011110010000111001110101000110000011000000011100010111000111001010111110
|
||||
1010100011001111110111111000000100000101010010
|
||||
01001110100110001011111110001000010010000110010110001111
|
||||
1011000111101100000110100000010101010111101100000100001
|
||||
01011011001100110100000011000101000100010100100000110100011110010001010000011
|
||||
0111101100000100001111001000011100111010100011000
|
||||
1101101110010111110110010110000000
|
||||
11010111101011110110110
|
||||
01000001111001110100
|
||||
01101101011110101111
|
||||
1111100110010111101111110101010110000010001111000000110010101010011100100011011000001101011
|
||||
1010000111011010111001111111110000001011010011110101101100100000010111010111
|
||||
101011011100000010111000010011011100000
|
||||
011111000000001101111010000111011001100001110101001110
|
||||
11
|
||||
\N
|
||||
0010101010011100100011011000001101011010110001101010110010110101001000000
|
||||
0101111101011011001100110100000011000
|
||||
110111
|
||||
1001111001010101110101000100110110110011000111000011011110101010001110011000100011101
|
||||
110000001011010011110101101100100000010111010111101100
|
||||
0001010100101110001001000010001101010010001101001001010111100011101101100001100000011
|
||||
101000000101010101111
|
||||
00011101001010111110100000101011000110100101100001111010111110110001000111101100011011111000000
|
||||
1001001111001011100001010100101110001001000010001101010010001101001001010111
|
||||
1100011101101100001100000011110111110100011000110100010101111111011011011010
|
||||
0010101110100110001001001011011111111111101011
|
||||
0100111010011000
|
||||
1111101000110111011011111101001010011111001000110011101010000100101110110101010010101001001
|
||||
11110
|
||||
00011011100110110001000000010101111111111011101111010
|
||||
011011110100001110110011000011
|
||||
01111010111110110001000111101100011011111000000101100001100000001101000001
|
||||
111101111111100111111011000110000100111100101010111010
|
||||
001
|
||||
1110100111010
|
||||
01001101001111101001000000000000100100101010110001111101111100
|
||||
\N
|
||||
\N
|
||||
0001100101101111000100000000101000110100000100101001001010000100000001000001011010
|
||||
10110110111110100001010011000001010110001101000011101010001101101100111100010011000111101111001
|
||||
11010101101110101001110010111111010101101000100000011110
|
||||
101001000000000000100100101010110001111101111100111000111
|
||||
000011001101101011110101000110001101011000
|
||||
01100001111100011100000110001100101111100100111101100010101101101111101000010100110000
|
||||
01011111110110010010010000000000110111000010011011111000001100100001010001100100010101010111110110
|
||||
111110101010000111111111110000010001110001010000011110001110011001111010101111000
|
||||
00011000001000101111000000001000010000011100011010100100101100011110101
|
||||
010101111011
|
||||
11111110111000010111101110101011100
|
||||
1110011001101011010000100010101110110111000110100010000011010101011101001011000011010111101010101
|
||||
0000001111011010011010110010100001000010011010011110111011101100000101110011111
|
||||
00101001000011010110100100010111000101011100110000110111100001010010011
|
||||
100101000010000000100000101101010100000110000010001011110000000
|
||||
010110001000110010110111001101011111110000101100110010000010011001011111101100010110101011001
|
||||
01011110001110101110000011100011111111011111010000
|
||||
110101100001100110110101111010100
|
||||
010000010100111010111010000100000110011100011110110011
|
||||
1001100101111110110001011010101100110110101100100100000100101101110001001101111001101010
|
||||
010101110011001010110100000111
|
||||
\N
|
||||
0100011010101110110000010011
|
||||
011101111101000110111011011111101001010011111001
|
||||
10010100110110011011001111110001001000110111101011101011010110001001001111110
|
||||
1110111110011100011111101010110001101110
|
||||
01010101110101000100110110110011
|
||||
10101110100
|
||||
001110100000100101000001010011110101110111011000100000
|
||||
100000111010111111110011000100100000111100000010100100011011101001110100001000100011
|
||||
101101000001001010011100001111000110000100100011100001000111111011110010110010111101
|
||||
11111011111001001110111111101
|
||||
1111111011100001001100100001110100011010110000000001001010101001001111101000011110011000000101111000
|
||||
001111000110000100100011100001000111111011110010110010111101001100010101110001110
|
||||
011000001000101111000000001000010000011100011010
|
||||
110010100001000010011010011110111011101100000101110011111
|
||||
000011101101110001
|
||||
01111001100111010000100100110101
|
||||
000001010001100010010010001001000101111000011111
|
||||
1001001011011111111
|
||||
01100111000110001010010000100101011101010
|
||||
11001011111111011111111111111011100001001100100001110100011010110000000001001010101001001
|
||||
1101111010111100011
|
||||
\N
|
||||
00101011000110100001110101000110110110011110001001
|
||||
001001101110000010100011110011110101111101110100000101111111101011101100111010101011111010
|
||||
010101111001101011011111011111000101110101000110010010010010111010001100011001011011100110011000001
|
||||
0000011100
|
||||
00110010110111010100111111011111111111101100110001000001101111010000100011101110101100010101
|
||||
110100110010001011000010010101100010001100101101110011010111
|
||||
000111000111111110111110100000010
|
||||
0000001011010011
|
||||
00100101000001010011110101110111011000100
|
||||
\N
|
||||
001000110110000011
|
||||
1101100110110010
|
||||
001101011101001100010101
|
||||
0001001000101111000011111110011100110011
|
||||
10101010101000100101101001111011101000010001101
|
||||
000001011001100010011110010011101010001011000110110001000101110110001100001001110101
|
||||
10011000011101010001010111101001100011100100001100011100001011110011
|
||||
110111110100001010011000001010110001101000
|
||||
000110000010001011110000000010000100
|
||||
0100000100101100101000101100010000010011110111001100000000000111
|
||||
000000111001010001001111101110011011011110011111100011101001001010010011100011111100100010
|
||||
001000011111011010000110110111101010000011111100010000110111111110
|
||||
001
|
||||
000011110001101001110111110101101101111110111110001001001100011011010101010100101101101011
|
||||
00011010101100111110001110011001011111111010111010110011101111000100101010
|
||||
1011011001001000110010100000111001000111010101
|
||||
00110100000010111010100110001101100011001110101011101110111111010000000100010100010110111011
|
||||
1101000001010111110110111001011111010000110000110010101111101010100001001000110
|
||||
101111000010100010100010000000010110011000001100011010101001011011110110110000110
|
||||
00100100001101100011101111110011101110000001001111
|
||||
010011010001000001110011101100001111011011110101111
|
||||
\N
|
||||
\N
|
||||
1001010010011100011111100100010100100110011110111111100101110110101111100011111111
|
||||
001111110000001100111011001010010100000000110110001110100100010110000010011011110100011011
|
||||
11110110011100011000101001000
|
||||
00101001110110111111101011100110110011110110000101100010100110
|
||||
011111010101001011000011111000000000101101100101101111100011110011
|
||||
10101000110001000001110101111111100110001001000001
|
||||
0010100100011010011100100011111110001101010000011101110100101101011
|
||||
111111001111110110
|
||||
1111110101010011101000111
|
||||
001011001111101010000011001101110001011011000011100
|
||||
0000001111010111000100111000111010010001100010010101001101101110010101001101000001
|
||||
011
|
||||
00000010110010
|
||||
000000111111110101010011
|
||||
101
|
||||
0100
|
||||
001101101100111100010011000111101
|
||||
111000010100111101010111010111010011000010001001100010001110001000000111000010101111010011101110
|
||||
000101100110010110101100001000100000000011010101100111110001
|
||||
10001000111011001101000110000101100011000000
|
||||
11101010000011001101110001011011000011100001101
|
||||
\N
|
||||
0000001101011110001010101010101000
|
||||
11010011110100101011110110101110001101011101110010110001000010010011011010011
|
||||
1010010100000000110110001110100100010110000010011011110100011011010011110100
|
||||
10110011110110000101100010100110110111011110110010110
|
||||
1001111001010101
|
||||
100011000010110001100000001100001110111100
|
||||
\N
|
||||
001000001110110111111100011000011011010101
|
||||
001100101
|
||||
000101001100010101100011000101111011110000101000101000100000000
|
||||
0000110010101111101010100001001000110101000110110101101000010
|
||||
1011000011010111101010101011011100000
|
||||
1110100101010010100101100101101111110111000110101100
|
||||
001001011000000000000101011100110111000
|
||||
0101111111000010110011001000001001100
|
||||
01001110110000111111011100011001101001010100000100011101110010101010011001010100
|
||||
0001100011111110100101100111110010000111110110
|
||||
111000100000000101000110
|
||||
01011010101101110011001100100110100010010100011010000111101000000
|
||||
001111010100000010101101100010001111100100
|
||||
11111110011111111010101011000101111111100110010110111
|
||||
01101010001000111111010
|
||||
00001110111100010000011101101111111000
|
||||
0011101000101011100011100000
|
||||
11000111111111011010100110011100110011100
|
||||
10100010
|
||||
101010001101101100111100010
|
||||
1001001011
|
||||
\N
|
||||
11000110
|
||||
01100001110000011110001101001110111110101101101111110111110
|
||||
0101000110010011001110110111100010101011001101000000001111110111111111100101100001100110101
|
||||
1111000
|
||||
100011001011011100110101111111000
|
||||
0011
|
||||
0001000001011010101000
|
||||
10001110100100010110000010011011110100011011010011110100101011
|
||||
111000001110001111
|
||||
11001100011101001110010110100111000101011000000001111010010001
|
||||
1111100011110011000111101111110011000000010011
|
||||
010010001101111010111010110101
|
||||
10100000110111100000010
|
||||
10010111110001010001110001001001111000001100010011001101110010111000101000001001000
|
||||
1011110100101001100011111011100100011011010010011110000001010110
|
||||
\N
|
||||
000111
|
||||
0011000010100110001011000000001110110111110001101100010110100101001101100100001100001101110
|
||||
1010110001
|
||||
10110
|
||||
110011000001111110101011101100111110011111111111101001010110101000101100011001010111111000
|
||||
100000100001101011011111011000001011111000000001000011100110100010101
|
||||
111001011001011000010100010010101010110110101101110000000101110
|
||||
100111001010100011011101110100110101011111000000111011011010010011111110011001000110000010011110
|
||||
1011111000010111111010100100101010000101101110011110001000000110000001111010001100000111101100000110
|
||||
0011001010111111000100010101001001100110010100101001011011100010000011110110101000000001
|
||||
01110
|
||||
11111011011110001000111100101111001
|
||||
0010011110010010111001100101111011110001101011011011011010010000
|
||||
101101101111110111110001001001100011011010101010100
|
||||
001100111000111101
|
||||
1001010001001111101110011011011110011111100011101
|
||||
11000111111100110000110101100101100
|
||||
0001101101010100011100100100001
|
||||
000111100000110110101111001101110101100001000101111001101000011010
|
||||
1110001010010000001001110011101101110101011110000100000110110111111010000101110000001001100111100
|
||||
0010000010110001011001001011110101110100101011001111011100110000101111011110100
|
||||
00111001001111101011101111001011110100001101100011101001100010110001100
|
||||
110101101100100001011000111001011011011010100100011101110000001011010110011011011010111110
|
||||
110000111100101111010010100110001100001010011000101100000000111011011111000110110
|
||||
000001011111000111100101001001010111000101010101100001101101100010101000101011110111111
|
||||
00100010100100110011110111111100101110110101111
|
||||
1011110011001
|
||||
10000101110100100101011010100001010010010011100000001100011000000100100101101101100
|
||||
1011111110011011011001100001110010011111100111101000100011010010000111100000001101001010
|
||||
110011011011100000100110000011010000111101100110001100101011
|
||||
100000110101101111000011100000001110010001100111110101101011011000010000111001101011110011
|
||||
10100001010110100100111000001111001110011011101110
|
||||
110100100101
|
||||
0010100110100010000011100111
|
||||
10101010010100000111010101000001111101000101101
|
||||
001000001010001111110011000011010000
|
||||
0100111110100
|
||||
11111111011111111111111011100001001
|
||||
00101010000011010111111011000011000101011100001101011111111111001001110100000000
|
||||
110111101011111000111010110100000
|
||||
011001
|
||||
11101111111011111011110010011100100101111101101110011111001101001001110
|
||||
01100010010101010110111000110111100000000110011101010011100001001001000010001100111110100100010010010
|
||||
\N
|
||||
101011101111100101010000000000010100101000111110110001111000011001000001111000100011111111011
|
||||
0010010110
|
||||
11111110101111010100000000000110000001000010011001
|
||||
010110000000011110100100010000110000001101100111
|
||||
001000000111000010101111010011101110100100110011101010101
|
||||
0111110011110011100001100010010011010111000110111100011101000
|
||||
110001111010011000111111100110
|
||||
111101010101011101
|
||||
1001
|
||||
10011110111110011001100011101001000101101
|
||||
0100001001100111011110101111100
|
||||
011010011100110100110011011110111100110111011011110101110110011000011111000010101011111001100111000
|
||||
000011001110001
|
||||
0001000010000111000111111000111111001000110010111011001001
|
||||
111100101111111000101101001001001000001111101111010
|
||||
00010000111001010011001111100111101010011010100
|
||||
001111111010100111100010000
|
||||
0011000111011111101001001100111010001101100101010101011111110101001
|
||||
010110111001100110010011010001001010001101
|
||||
1010001110
|
||||
001011110010110110010100100101000000001010000010101110010010111111110001101011110000000001101
|
||||
010010001100111110010000010011011110101011110101001111000000011100111
|
||||
110001
|
||||
10011110111111001100110100010110100100101000100100100111101000100101011101101111
|
||||
0100111000010010010000100011001111101001000100100101100101111010000110011110100011100101000
|
||||
01101100011100
|
||||
011001111000100110
|
||||
0001010011000101011000110001011110111
|
||||
10011010100010011100110011101110000010001100011011100101101010010011001000
|
||||
100111001000111111100011010100000
|
||||
01011110000111101011011000110110111100111100001001100
|
||||
101001011110010110100100100010110100101100011100110010101000111110110010001001111001011101010001
|
||||
00000101011011000100011111
|
||||
1110010000100001111101101
|
||||
111100011001010001110
|
||||
011011100011011110000000011001110101001110000100100100001000110011111010010001001001011
|
||||
0001101111000000
|
||||
011010000101011111010010101001
|
||||
010000101001001001110000000110001100000010010010110110110001111101
|
||||
0001111110110010110111000000111101010000110011011010100101101101110000001100111001101110000101000
|
||||
0000011101110010010101
|
||||
1001100001111100001010101111100110011100000001011100100000111111001110011011100001111101
|
||||
1101001100010100111010100011011000110111101011011110
|
||||
\N
|
||||
0110100101010000010001110111001010101001100101
|
||||
10010101011010011101011010011100010100001011010010111011110111001100011010110101010110110
|
||||
00100010110011010101011001
|
||||
111000100001001000010010000101011101010000011100110110111011011101100111010101010001110110100
|
||||
1100000111101100000110000011010110111100001110000000111001000110011111
|
||||
011110101
|
||||
11000110001011100010100100000010011100111011011101010111100001000001101
|
||||
0110110100101001001000001000011001100000101010101010000111100011010001101101000
|
||||
11101001100000010100101111101110000101001111010
|
||||
01100101100100001001100111101111000010100000001010001001001111011100010111010010001100
|
||||
1010001000011000110011011000111111110001101010100110101011100100001001010011000001000101
|
||||
10101011101011110010000110110101100110011111101
|
||||
11000001111011000001100000110101101111000011100000001110010001100111
|
||||
1111000100000111011011
|
||||
001101100111111110000011011101111011011
|
||||
00101
|
||||
100100110000000110010010000001010111100011100001110000010000110000011111111011010101010010111101
|
||||
0111010111101110010101101011011000001000000100001000000010110011000010100010111111110000001110
|
||||
010011011111000001
|
||||
01011001100100000100
|
||||
11111011110101001101000110011101110111101010110111010101100001101011110101011011100101001000100101101
|
||||
101000010100000000011000010000101001111001110100100001001100010010101010110111
|
||||
1100011110010101010100111111011000100100100110101001100100110011110100001110011
|
||||
1001100110011101110000011101110100000010001
|
||||
000001110100010011101100000001001111110101110000101100100010000101110011101011101
|
||||
0010000010011011110101011110101001111000000011100111001101
|
||||
00
|
||||
1110011100
|
||||
11010110001010101111101001010
|
||||
111000000010010101001111111111001011000110011010010111010000
|
||||
10010110001000101110111110111001001101001001011010010110101001001111011
|
||||
100010100010000110001100000110110011011101001101000101000110010001111010
|
||||
01010001100001111011000001001111100100000100001101110001101010101011010110000001100111100111
|
||||
00010010110111110100101001010100011011010100111010011100001101011100101000100000010110101100100010100
|
||||
10010010000000000
|
||||
011110101001101000110011101110111101010110111010101100001101011110101011011100101001000100101101
|
||||
111100011001010001
|
||||
11101111010111101101000001101100111111101110
|
||||
01101110101000001111001010111001011110001000011111011000101011001011010000101001100001111101
|
||||
10011
|
||||
01100011011011110011110000100110001011100001
|
||||
10111010000100011011111011100010011101111001000
|
||||
00100111001011111001110110110000000110111010111001010010111011011111000
|
||||
0001011111011010000001010011000001111011011010110010
|
||||
10000101110110001001010001110110000010000000010000101110110111011010001010
|
||||
010110110010000100001110011010111101101011001100010101
|
||||
111010011111011111111100001110010100110101111010
|
||||
011101010100111010001110000110100010011101010011000111000010000001011101100101001000001000
|
||||
1100110101000101010011000010101011111010011111011000100000001
|
||||
0100100011101110000001011010110011011011010111110001110100
|
||||
1000110101100111110111101
|
||||
001111001010011010101101110011101111010111
|
||||
011101010100000100101010101111010000100010010110001000101110111110
|
||||
011011001001001010011001100100100011001100001011100111101000101010001101000110001010111
|
||||
100000001100011000000100100101101101100011111010110111
|
||||
10010111011
|
||||
101111000000001
|
||||
001000100010111110011011011100000100110
|
||||
1110111111101000111011011100001
|
||||
110010011110111011011110101100111100011
|
||||
110110110001100110011110001111111011000001110100010011101100000001001111
|
||||
110100011010001001
|
||||
11010101101000011011001110100010101010000110010010110
|
||||
010110001001000110100100000000100011110011011111101000010111001110000101010000
|
||||
0100000111001101101110110111011001110101010100011101101001010111001000100001
|
||||
\N
|
||||
000001111000100011111111011111010001101110100111110001011010111
|
||||
000110000110111000100110101101011111001111
|
||||
01001101011001
|
||||
0011111110101010001000000101110010001000000110100000110010100100010100111001100111000
|
||||
00111000111111001000101001001
|
||||
10000110
|
||||
111111100000000100100100001100
|
||||
10000110011010000000000010100011110101101010011110001110100100110000000110010010
|
||||
1001001011000111111011101000
|
||||
111100011111010111101101101100011001100111100011111110110000011101000
|
||||
1010101111000
|
||||
011111
|
||||
011010000011011001111111011101111010011
|
||||
101011001111110101010011000001100111011000001110000011000101101101000001110000011110001010
|
||||
01011101110010010100111000101000100001100011000001101100110111
|
||||
0110000110011011110000010111110100111001010100011011
|
||||
000101000111101011010100111100011101001001100000001100100100000010101111000111
|
||||
1101011100001101001010110111000011100011101
|
||||
0001010110001
|
||||
110010001111111000110101
|
||||
100000
|
||||
\N
|
||||
10110111001100110010011010001
|
||||
001111111001011001100101000010011011001000111111011001011011100000011110
|
||||
00000011100110000110000001010110111011101
|
||||
1011100111101000000111000
|
||||
01100010011101010111010111011111001011010001101110000011111000101100001000101011110000100100110
|
||||
001000111011101011000101
|
||||
10100001011111111001101000000100100100001000100011001100001100110001100000100100011100111110100
|
||||
100111
|
||||
00110010101000111110110010001001111001011101010001001011001111101011
|
||||
1000111010110111111101000001010110110000010
|
||||
11111010111010110011101
|
||||
0100100001000001010000001000010
|
||||
101101011000100
|
||||
0001111010111111100000010111100100100101111000010000111
|
||||
1001011100100110010000010101101010100101000100100011100
|
||||
1101010000011101
|
||||
110000010000011110011110001011010111100001001001
|
||||
111101001101011111010110110000
|
||||
010111010010110101101000101011110100000011100000011101101110
|
||||
01111110111111111111011
|
||||
0001011010101100001101101111000
|
||||
0101010
|
||||
001110010000001010111001101101110101111101111001010101111101110010111
|
||||
101111010
|
||||
000001010100110010110000011110000011010110100001011101010110111011101101010111010011100011010000
|
||||
011100111110011010010011101100000110110110
|
||||
0011011010111010110111001101000000110111100000010111000010101100101110001001001101001100100110000100
|
||||
1001100000110111110100100100011000000001111100011001111110001111110010100
|
||||
10010001100101
|
||||
0011101110111101010110111010101100001101011110101011011100101001000100101101
|
||||
011100011000001101111010001000000111011100111111000010010100100101
|
||||
11
|
||||
111000010010101101101001000010001000110001010111010000000111010101001110101
|
||||
1000000100100110001101111001011100000111010010000001010100101110000010011101100111
|
||||
01111000
|
||||
0011011110100011011010011110
|
||||
10001011101010001000010001011001011101100101011001100100111011101000000011101100100111100
|
||||
001001100100100000001011100111001001000001110001110011110110110010010011101
|
||||
1001101000111011110101110101001001000101000000010101011110111110
|
||||
010
|
||||
1100110101000101010011000010101011111010011111011
|
||||
00011101011110110100100010110011110010000010111001111010000110010110000000
|
||||
100001111010111111100000010111100100100101111000010
|
||||
\N
|
||||
10000111011101100011111010011011110010000100010100000111100001011010010001001100010110001001111
|
||||
10110101011100101111011101001111011111011011101001110000010111100001110110111001011010111111111
|
||||
1101110110110000011100010000000001101000101001111010
|
||||
1010010101100110010000001010101000111010111101101001000101100111100100000
|
||||
011011101101110110011101010101000111011010010101110010001000011
|
||||
1111001011100000111010010000001010100101110000010011101100111000010001101100010
|
||||
10
|
||||
0100010100111011010110110000100010110111000101101011101111101010101011010
|
||||
0111110001010001110001001001111000001
|
||||
1101000101101001001010001001001001111010001001010
|
||||
0111111101000100000111001001101111000011010100101010010101110110111100011
|
||||
110110100010010110010010011110001010100111110000101100011110110011011111101110011111111
|
||||
1010011101110010101000111100100011101100001110000
|
||||
0111110000000000000100110110011010011011110110001
|
||||
001011110101110100101011001111011100110
|
||||
0011110010110111001010011111001111110001
|
||||
1000110010111001101000111100111111001000000000111111010001001011010011011
|
||||
111010100111101111110011001101000101101001001010
|
||||
1001100100101011001001110001011010001111011011111111100100110011010101011000
|
||||
1001111111111001011000110011010010111010000
|
||||
0010100011110100011110101111001110001101101100011000000100100110001101111001
|
||||
\N
|
||||
00100111100101110101000100101100111110101111010011011111100
|
||||
0101101011001011010001100111101110100011101011110101000001011010100100010011001111001111
|
||||
10001110100111110101001001010111101011111110
|
||||
1100110100000010111010100
|
||||
01
|
||||
1100010010
|
||||
1010001110011001101000111001001101001111101000101110110011100001000100111110110111001000001111101001
|
||||
000110000111001111110000010010001100001010111110100111011
|
||||
1100100111100111010010110001111111101001001011100111010000101010000011110011100100111101100
|
||||
10111000000010111000111010000100111110000110100010111001011010111001011010100001001101101000
|
||||
11010100110100011001110111011110101011011101010110000110101111010101
|
||||
0001110
|
||||
0001010001111010010110111111101011110011110010010111110011001011000111001101101011101000100110
|
||||
11000001110001111100001110100110101111010000101011100000001000000000100011001001100011001011
|
||||
01101111010100000
|
||||
00000110011100001100001000000000001110111001001001001110000110101001011010110100
|
||||
00111001000011111001111111001011000
|
||||
101010000111001010001010000000011001111101111110000011111000101101101
|
||||
011111110011011011001001001111111001101100111000001101011110000100110000001
|
||||
001011000
|
||||
001000010011100101100101011
|
||||
\N
|
||||
010101111010011101110100100110
|
||||
0100100100100000111110111101
|
||||
000000010000110111100011100001101110111011110000001
|
||||
11111111001011011110010
|
||||
101000101000000110010010111001000001111001010100101001111000001100110111000000
|
||||
011010010100000101001011010001110010000010101111001101100011110110100010100111000000011
|
||||
11111100110010001100000100111100010000010
|
||||
01011010101000000100000111011011100100111101001001
|
||||
010111101111000001101001001110001000100001111101011010011011100101110000101110
|
||||
100000101
|
||||
10011111001000001001101111010101111010
|
||||
0010111011001001010100100000100
|
||||
0001010100010101111011111110101101010000
|
||||
011110001010001011101000111010011110000011000010001110010101010001111101
|
||||
11000100101010101101110001101111000000001100111010
|
||||
0001100100011101010101001100110110011111110010100100110
|
||||
10011000011000101111010101001000001000001010111001100101110101011101111001101000111111100101100100
|
||||
1000101111100110110111000001
|
||||
11000101110110001001110000010010000001111010101101011001100000101011101100000101
|
||||
100000111010100011010010010101
|
||||
110011110100110101011000101011110101010110001101001000110001110110110100010010001111111100100011
|
||||
0111111011111001010010101100110100011111110110001111001000001001001101100100111101100011010100
|
||||
1110010101001111101010011000000100100100011101011101110001110001101110110010100111110010001000011
|
||||
00110010100100010100111001100111000101100010000101110111101001
|
||||
1011001011010000101001100001111101010001101110010111100001001
|
||||
1101110100101110000001010110100100111111010100001011000110110101101000110101011110010
|
||||
111110000001000100101001011011101111010000111100011011111001101000011101110110001
|
||||
10000100101001010010101011100111101011000100011001110100000100010000110100100000001101
|
||||
0010110000100010101111000010010011011011100011110110110100101001100010000
|
||||
010011000110111110100000001110001001110011
|
||||
0101010100111111011000100100100110101001100100110
|
||||
1001100111000101100010000101110111101001101000001001011001100
|
||||
1101011110011000000100011011000110010111001101000111100111111001
|
||||
11000000000001001111011010010111001100010110100010001000
|
||||
000111001011000110001111111100110
|
||||
11111101111010101110110101101111110001110011100101101100000110011001000101010011001011
|
||||
110100111111100110100111010000101111111100110100000010010010000100010001
|
||||
00101000101000100000
|
||||
101100111100011100000110010
|
||||
011011101011101011110100111110010011100000101010100010
|
||||
011000010000111010110111110010010010011101000101101001001001100001101011
|
||||
1000101010001111001000010110110100000110111001010000101001000010101100101011100001011111101000000
|
||||
000111100100000100100110110010011110110001101010001110000010111101011011000100000111111101
|
||||
\N
|
||||
101000011110101111111000000101111001001001
|
||||
0011010000001011111010100101010000001110101001010111010111011000101011101101000111101
|
||||
001111111110000101110100100101011010
|
||||
0101
|
||||
110011011101000001011010
|
||||
0110001111010110011111101010100110000011001110110000011100000110
|
||||
100101010110111011001001110000011010111111101110110001010111010001111000001010010
|
||||
00001110010011111100111101000100011010
|
||||
11110101011010000100111011100101010110011010010011110100101100100001100111100010100001
|
||||
1001011100000110100101111010010011001001111000010100101101010001000001010111011110010001111100
|
||||
110111110010011111001010101101011001001000111100111011001010101110000100110011001110101011000101
|
||||
1101001011111100111000111001
|
||||
0110100000110010100100010100111001100111000101100010000101
|
||||
10010110110110011110011110100110101011000101011110101010110001101001000110001110110110100
|
||||
0001000001011001101101101100101101111000110110000010011011101011101101100
|
||||
00101011110110100011011111001001111100101010110101100100100011110011101100101010111000010011001
|
||||
011011100110000
|
||||
0001001011011111010010100101010001101101010011101001110000110
|
||||
0101110010100010000001011010110010001010010010001010000100110
|
||||
00
|
||||
111100111111000110011001101101010
|
||||
\N
|
||||
111011101
|
||||
0011110001100
|
||||
110100000000000101000111101011010100111100011110010011
|
||||
100000001100100100000010101111000111000011100000100001
|
||||
010101100011010010001100011101101101000100100011111111001000110101011100000111000000010
|
||||
011000000001110110111110001101100
|
||||
0100001110010010110
|
||||
10
|
||||
000011011100101100000010011010111010101010001111010010101111100
|
||||
1000
|
||||
001101000101110010000011
|
||||
10110010000100010010011100001100110100000000000101000
|
||||
0010110101011100111111000000011000001111010011100110000010001000101110001
|
||||
1010011100110111010000101111010110110110100001000010100101
|
||||
1000110110010010010011111110111000100001111111001010100001
|
||||
011011001110000010100001001011001010110001000011110100010010101101101011011000100110111
|
||||
11010001011010101101
|
||||
111110101100110010111010101110010100011001010011001111101110110010100
|
||||
000111101111101110110000110000000100101101001000010010001110110110001111001000
|
||||
00111101000000010111
|
||||
1101001011000101000101011111111000000011
|
||||
110111011111000110011011100011101100000100111100001010101011111111000100111011011001110110010010011
|
||||
000010110011011011011001011011110001101100000100110111010111011011001
|
||||
010011110001100001101110100011100111010111101110010
|
||||
11110110110011110001101100101110000001
|
||||
01001001101000101110011011010111110001100100110001001000111000101010111001010000111100
|
||||
1010111010101110010111
|
||||
1111110000000001010010000011
|
||||
110011111001001001000110111000110001100101100110100011010100111101
|
||||
101110111101001101000001001011001100001101001000001101
|
||||
01
|
||||
11001110110100000000000010101001100101100000111100000110101101000010
|
||||
1100000110110101111001101
|
||||
100
|
||||
00011110101110001001
|
||||
111110111010100111100011010011001001100111100110010
|
||||
0100111110000110100010111001011010111001011010100001001101101000000011000
|
||||
101111100110010110001110011011010111010001001100101001110110010111011111101
|
||||
00010011010111001111101
|
||||
10100011100001000111010110111
|
||||
0111010010111111101111110111101010101101010
|
||||
10111111011
|
||||
10001011010
|
||||
1000011111010110100110111001011100001011101100010001101000111110
|
||||
010100100111101110110111001110110011110
|
||||
000110101001111100110000101001111011101011001100000011010011
|
||||
000111
|
||||
10010001110110110001111001000101000101111010100110011101111101111100100011
|
||||
01111101010001110011001101000111001001101001111101000101110110011100001000100
|
||||
10100001110001
|
||||
0101100000100001100001010011001010010001110000110010000110010111101110011010110100011
|
||||
11101000100101010010111110
|
||||
11010010110111011011101110100110000000110100001101100101101010000111110011110100100110100011
|
||||
1100000000100100010110110101001101011010010100000111111110011100111011111111010111
|
||||
101110111001100111010001111001101110101001101100010000001000001100010101001000001101100110110000001
|
||||
01001011100100010001011
|
||||
0001010111010000000111010101001110101110000011010100
|
||||
110000111000011001001110111100001111111111001111101
|
||||
00110001000011100
|
||||
0110110011
|
||||
0011110111110000001011011101101100000
|
||||
0100011101011000011011100100110110011111000011001010010001011101111011001101100101001
|
||||
10
|
||||
1
|
||||
00111101111000100110101010001100001001111010101110000001001001100101010111111001010111001001
|
||||
011010011000110110100111010110000000111111111100100010111111101110101010111000000
|
||||
111000000100010100001111001011011001101011000101111001000100001010011101
|
||||
10100011110100101101111111010111100111100100101111100110010110001110011
|
||||
100100000011110111000001011100100000101001000101000001001100010
|
||||
0000100100010100101010010010110111011010110011110001101001010110100101
|
||||
0101100011110010101111110100001110010011101100000000011
|
||||
1001100111100100010110011111101011111101011011010011001101
|
||||
1100001000111101010001100111111101111010001100000
|
||||
010001111001101100100000111010110
|
||||
01000011001110010011001010000
|
||||
0111011100101010110011010010011110100101100100001100111100010100001000111
|
||||
011110111110000001011011101101100000
|
||||
101011010101101100010111111011011101110001011110010001001000001101001111001100011100011001000010
|
||||
0001100011101101101000100100011111111001000110101011100000111000000010000011
|
||||
11000111111000111110000000000110110101001110110100101011010101010101000010000000110
|
||||
1011
|
||||
1110110101110110010001011011110110000110000111111001011110010011010111001000111010010001
|
||||
110101100010110101000
|
||||
10110011011101101001111011110001001101010100011000010011110101011100000010010011001010101
|
||||
00011111100100010
|
||||
00
|
||||
01010010000001011010101000000100000111
|
||||
11010010110110101001110011011101010110101100010111011000100111
|
||||
10101000110011010000011000101110011000111110011111101111100110100011000011111001100100
|
||||
11111100001000011001101110110101101010111
|
||||
10110011000111011
|
||||
01000111100111
|
||||
0000110101010000010111111101101001011100111111101011010111001111110111000100010011001101011011100
|
||||
10011100010110000111101101111101100100101010000010011010111110101010110101011100011010011101000010
|
||||
110111110101000001111011110010010010010111110000100001001111001010010010010100110100
|
||||
001100000000
|
||||
10000101101110011110001000000110
|
||||
00101010101001101111000
|
||||
011000111001010000111101
|
||||
0110100000111000001111000101010000110110100101101100
|
||||
1011100101010110011010010011110100101100100001100111100010100001000111
|
|
@ -0,0 +1,66 @@
|
|||
-- bit check
|
||||
CREATE TABLE bittmp (a bit(33));
|
||||
\copy bittmp from 'data/bit.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM bittmp WHERE a < '011011000100010111011000110000100';
|
||||
count
|
||||
-------
|
||||
249
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a <= '011011000100010111011000110000100';
|
||||
count
|
||||
-------
|
||||
250
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a = '011011000100010111011000110000100';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a >= '011011000100010111011000110000100';
|
||||
count
|
||||
-------
|
||||
351
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a > '011011000100010111011000110000100';
|
||||
count
|
||||
-------
|
||||
350
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX bitidx ON bittmp USING GIST ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM bittmp WHERE a < '011011000100010111011000110000100';
|
||||
count
|
||||
-------
|
||||
249
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a <= '011011000100010111011000110000100';
|
||||
count
|
||||
-------
|
||||
250
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a = '011011000100010111011000110000100';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a >= '011011000100010111011000110000100';
|
||||
count
|
||||
-------
|
||||
351
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a > '011011000100010111011000110000100';
|
||||
count
|
||||
-------
|
||||
350
|
||||
(1 row)
|
||||
|
|
@ -1,102 +0,0 @@
|
|||
--
|
||||
-- first, define the datatype. Turn off echoing so that expected file
|
||||
-- does not depend on contents of btree_gist.sql.
|
||||
--
|
||||
\set ECHO none
|
||||
psql:btree_gist.sql:8: NOTICE: type "int2key" is not yet defined
|
||||
DETAIL: Creating a shell type definition.
|
||||
psql:btree_gist.sql:13: NOTICE: argument type int2key is only a shell
|
||||
psql:btree_gist.sql:25: NOTICE: type "int4key" is not yet defined
|
||||
DETAIL: Creating a shell type definition.
|
||||
psql:btree_gist.sql:30: NOTICE: argument type int4key is only a shell
|
||||
psql:btree_gist.sql:42: NOTICE: type "int8key" is not yet defined
|
||||
DETAIL: Creating a shell type definition.
|
||||
psql:btree_gist.sql:47: NOTICE: argument type int8key is only a shell
|
||||
psql:btree_gist.sql:59: NOTICE: type "float4key" is not yet defined
|
||||
DETAIL: Creating a shell type definition.
|
||||
psql:btree_gist.sql:64: NOTICE: argument type float4key is only a shell
|
||||
psql:btree_gist.sql:77: NOTICE: type "float8key" is not yet defined
|
||||
DETAIL: Creating a shell type definition.
|
||||
psql:btree_gist.sql:82: NOTICE: argument type float8key is only a shell
|
||||
psql:btree_gist.sql:392: NOTICE: type "tskey" is not yet defined
|
||||
DETAIL: Creating a shell type definition.
|
||||
psql:btree_gist.sql:397: NOTICE: argument type tskey is only a shell
|
||||
CREATE TABLE int4tmp (b int4);
|
||||
\copy int4tmp from 'data/test_btree.data'
|
||||
CREATE TABLE int8tmp (b int8);
|
||||
\copy int8tmp from 'data/test_btree.data'
|
||||
CREATE TABLE float4tmp (b float4);
|
||||
\copy float4tmp from 'data/test_btree.data'
|
||||
CREATE TABLE float8tmp (b float8);
|
||||
\copy float8tmp from 'data/test_btree.data'
|
||||
CREATE TABLE tstmp ( t timestamp without time zone );
|
||||
\copy tstmp from 'data/test_btree_ts.data'
|
||||
-- without idx
|
||||
SELECT count(*) FROM int4tmp WHERE b <=10;
|
||||
count
|
||||
-------
|
||||
11
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE b <=10;
|
||||
count
|
||||
-------
|
||||
11
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE b <=10;
|
||||
count
|
||||
-------
|
||||
11
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE b <=10;
|
||||
count
|
||||
-------
|
||||
11
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM tstmp WHERE t < '2001-05-29 08:33:09';
|
||||
count
|
||||
-------
|
||||
66
|
||||
(1 row)
|
||||
|
||||
-- create idx
|
||||
CREATE INDEX aaaidx ON int4tmp USING gist ( b );
|
||||
CREATE INDEX bbbidx ON int8tmp USING gist ( b );
|
||||
CREATE INDEX cccidx ON float4tmp USING gist ( b );
|
||||
CREATE INDEX dddidx ON float8tmp USING gist ( b );
|
||||
CREATE INDEX tsidx ON tstmp USING gist ( t );
|
||||
--with idx
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM int4tmp WHERE b <=10::int4;
|
||||
count
|
||||
-------
|
||||
11
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE b <=10::int8;
|
||||
count
|
||||
-------
|
||||
11
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE b <=10::float4;
|
||||
count
|
||||
-------
|
||||
11
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE b <=10::float8;
|
||||
count
|
||||
-------
|
||||
11
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM tstmp WHERE t < '2001-05-29 08:33:09';
|
||||
count
|
||||
-------
|
||||
66
|
||||
(1 row)
|
||||
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,66 @@
|
|||
-- money check
|
||||
CREATE TABLE moneytmp (a money) WITH OIDS;
|
||||
\copy moneytmp from 'data/cash.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM moneytmp WHERE a < '22649.64';
|
||||
count
|
||||
-------
|
||||
289
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a <= '22649.64';
|
||||
count
|
||||
-------
|
||||
290
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a = '22649.64';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a >= '22649.64';
|
||||
count
|
||||
-------
|
||||
254
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a > '22649.64';
|
||||
count
|
||||
-------
|
||||
253
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX moneyidx ON moneytmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM moneytmp WHERE a < '22649.64'::money;
|
||||
count
|
||||
-------
|
||||
289
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a <= '22649.64'::money;
|
||||
count
|
||||
-------
|
||||
290
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a = '22649.64'::money;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a >= '22649.64'::money;
|
||||
count
|
||||
-------
|
||||
254
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a > '22649.64'::money;
|
||||
count
|
||||
-------
|
||||
253
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- char check
|
||||
CREATE TABLE chartmp (a char(32));
|
||||
\copy chartmp from 'data/char.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM chartmp WHERE a < '31b0'::char(32);
|
||||
count
|
||||
-------
|
||||
121
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a <= '31b0'::char(32);
|
||||
count
|
||||
-------
|
||||
122
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a = '31b0'::char(32);
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a >= '31b0'::char(32);
|
||||
count
|
||||
-------
|
||||
401
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a > '31b0'::char(32);
|
||||
count
|
||||
-------
|
||||
400
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX charidx ON chartmp USING GIST ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM chartmp WHERE a < '31b0'::char(32);
|
||||
count
|
||||
-------
|
||||
121
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a <= '31b0'::char(32);
|
||||
count
|
||||
-------
|
||||
122
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a = '31b0'::char(32);
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a >= '31b0'::char(32);
|
||||
count
|
||||
-------
|
||||
401
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a > '31b0'::char(32);
|
||||
count
|
||||
-------
|
||||
400
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- cidr check
|
||||
CREATE TABLE cidrtmp AS
|
||||
SELECT cidr(a) AS a FROM inettmp ;
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM cidrtmp WHERE a < '121.111.63.82';
|
||||
count
|
||||
-------
|
||||
290
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a <= '121.111.63.82';
|
||||
count
|
||||
-------
|
||||
291
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a = '121.111.63.82';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a >= '121.111.63.82';
|
||||
count
|
||||
-------
|
||||
310
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a > '121.111.63.82';
|
||||
count
|
||||
-------
|
||||
309
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX cidridx ON cidrtmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM cidrtmp WHERE a < '121.111.63.82'::cidr;
|
||||
count
|
||||
-------
|
||||
290
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a <= '121.111.63.82'::cidr;
|
||||
count
|
||||
-------
|
||||
291
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a = '121.111.63.82'::cidr;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a >= '121.111.63.82'::cidr;
|
||||
count
|
||||
-------
|
||||
310
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a > '121.111.63.82'::cidr;
|
||||
count
|
||||
-------
|
||||
309
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- date check
|
||||
CREATE TABLE datetmp (a date);
|
||||
\copy datetmp from 'data/date.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM datetmp WHERE a < '2001-02-13';
|
||||
count
|
||||
-------
|
||||
230
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a <= '2001-02-13';
|
||||
count
|
||||
-------
|
||||
231
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a = '2001-02-13';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a >= '2001-02-13';
|
||||
count
|
||||
-------
|
||||
314
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a > '2001-02-13';
|
||||
count
|
||||
-------
|
||||
313
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX dateidx ON datetmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM datetmp WHERE a < '2001-02-13'::date;
|
||||
count
|
||||
-------
|
||||
230
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a <= '2001-02-13'::date;
|
||||
count
|
||||
-------
|
||||
231
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a = '2001-02-13'::date;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a >= '2001-02-13'::date;
|
||||
count
|
||||
-------
|
||||
314
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a > '2001-02-13'::date;
|
||||
count
|
||||
-------
|
||||
313
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- float4 check
|
||||
CREATE TABLE float4tmp (a float4);
|
||||
\copy float4tmp from 'data/float4.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM float4tmp WHERE a < -179.0;
|
||||
count
|
||||
-------
|
||||
244
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a <= -179.0;
|
||||
count
|
||||
-------
|
||||
245
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a = -179.0;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a >= -179.0;
|
||||
count
|
||||
-------
|
||||
303
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a > -179.0;
|
||||
count
|
||||
-------
|
||||
302
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX float4idx ON float4tmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM float4tmp WHERE a < -179.0::float4;
|
||||
count
|
||||
-------
|
||||
244
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a <= -179.0::float4;
|
||||
count
|
||||
-------
|
||||
245
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a = -179.0::float4;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a >= -179.0::float4;
|
||||
count
|
||||
-------
|
||||
303
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a > -179.0::float4;
|
||||
count
|
||||
-------
|
||||
302
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- float8 check
|
||||
CREATE TABLE float8tmp (a float8);
|
||||
\copy float8tmp from 'data/float8.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM float8tmp WHERE a < -1890.0;
|
||||
count
|
||||
-------
|
||||
237
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a <= -1890.0;
|
||||
count
|
||||
-------
|
||||
238
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a = -1890.0;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a >= -1890.0;
|
||||
count
|
||||
-------
|
||||
307
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a > -1890.0;
|
||||
count
|
||||
-------
|
||||
306
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX float8idx ON float8tmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM float8tmp WHERE a < -1890.0::float8;
|
||||
count
|
||||
-------
|
||||
237
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a <= -1890.0::float8;
|
||||
count
|
||||
-------
|
||||
238
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a = -1890.0::float8;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a >= -1890.0::float8;
|
||||
count
|
||||
-------
|
||||
307
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a > -1890.0::float8;
|
||||
count
|
||||
-------
|
||||
306
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- inet check
|
||||
CREATE TABLE inettmp (a inet);
|
||||
\copy inettmp from 'data/inet.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM inettmp WHERE a < '89.225.196.191';
|
||||
count
|
||||
-------
|
||||
213
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a <= '89.225.196.191';
|
||||
count
|
||||
-------
|
||||
214
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a = '89.225.196.191';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a >= '89.225.196.191';
|
||||
count
|
||||
-------
|
||||
387
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a > '89.225.196.191';
|
||||
count
|
||||
-------
|
||||
386
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX inetidx ON inettmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM inettmp WHERE a < '89.225.196.191'::inet;
|
||||
count
|
||||
-------
|
||||
213
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a <= '89.225.196.191'::inet;
|
||||
count
|
||||
-------
|
||||
214
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a = '89.225.196.191'::inet;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a >= '89.225.196.191'::inet;
|
||||
count
|
||||
-------
|
||||
387
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a > '89.225.196.191'::inet;
|
||||
count
|
||||
-------
|
||||
386
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
--
|
||||
-- first, define the datatype. Turn off echoing so that expected file
|
||||
-- does not depend on contents of btree_gist.sql.
|
||||
--
|
||||
\set ECHO none
|
||||
psql:btree_gist.sql:7: NOTICE: type "gbtreekey4" is not yet defined
|
||||
DETAIL: Creating a shell type definition.
|
||||
psql:btree_gist.sql:12: NOTICE: argument type gbtreekey4 is only a shell
|
||||
psql:btree_gist.sql:23: NOTICE: type "gbtreekey8" is not yet defined
|
||||
DETAIL: Creating a shell type definition.
|
||||
psql:btree_gist.sql:28: NOTICE: argument type gbtreekey8 is only a shell
|
||||
psql:btree_gist.sql:39: NOTICE: type "gbtreekey16" is not yet defined
|
||||
DETAIL: Creating a shell type definition.
|
||||
psql:btree_gist.sql:44: NOTICE: argument type gbtreekey16 is only a shell
|
||||
psql:btree_gist.sql:55: NOTICE: type "gbtreekey24" is not yet defined
|
||||
DETAIL: Creating a shell type definition.
|
||||
psql:btree_gist.sql:60: NOTICE: argument type gbtreekey24 is only a shell
|
||||
psql:btree_gist.sql:71: NOTICE: type "gbtreekey_var" is not yet defined
|
||||
DETAIL: Creating a shell type definition.
|
||||
psql:btree_gist.sql:76: NOTICE: argument type gbtreekey_var is only a shell
|
|
@ -0,0 +1,66 @@
|
|||
-- int2 check
|
||||
CREATE TABLE int2tmp (a int2);
|
||||
\copy int2tmp from 'data/int2.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM int2tmp WHERE a < 237;
|
||||
count
|
||||
-------
|
||||
297
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a <= 237;
|
||||
count
|
||||
-------
|
||||
298
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a = 237;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a >= 237;
|
||||
count
|
||||
-------
|
||||
249
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a > 237;
|
||||
count
|
||||
-------
|
||||
248
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX int2idx ON int2tmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM int2tmp WHERE a < 237::int2;
|
||||
count
|
||||
-------
|
||||
297
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a <= 237::int2;
|
||||
count
|
||||
-------
|
||||
298
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a = 237::int2;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a >= 237::int2;
|
||||
count
|
||||
-------
|
||||
249
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a > 237::int2;
|
||||
count
|
||||
-------
|
||||
248
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- int4 check
|
||||
CREATE TABLE int4tmp (a int4);
|
||||
\copy int4tmp from 'data/int2.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM int4tmp WHERE a < 237;
|
||||
count
|
||||
-------
|
||||
297
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a <= 237;
|
||||
count
|
||||
-------
|
||||
298
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a = 237;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a >= 237;
|
||||
count
|
||||
-------
|
||||
249
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a > 237;
|
||||
count
|
||||
-------
|
||||
248
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX int4idx ON int4tmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM int4tmp WHERE a < 237::int4;
|
||||
count
|
||||
-------
|
||||
297
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a <= 237::int4;
|
||||
count
|
||||
-------
|
||||
298
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a = 237::int4;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a >= 237::int4;
|
||||
count
|
||||
-------
|
||||
249
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a > 237::int4;
|
||||
count
|
||||
-------
|
||||
248
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- int8 check
|
||||
CREATE TABLE int8tmp (a int8);
|
||||
\copy int8tmp from 'data/int8.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM int8tmp WHERE a < 464571291354841;
|
||||
count
|
||||
-------
|
||||
276
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a <= 464571291354841;
|
||||
count
|
||||
-------
|
||||
277
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a = 464571291354841;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a >= 464571291354841;
|
||||
count
|
||||
-------
|
||||
271
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a > 464571291354841;
|
||||
count
|
||||
-------
|
||||
270
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX int8idx ON int8tmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM int8tmp WHERE a < 464571291354841::int8;
|
||||
count
|
||||
-------
|
||||
276
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a <= 464571291354841::int8;
|
||||
count
|
||||
-------
|
||||
277
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a = 464571291354841::int8;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a >= 464571291354841::int8;
|
||||
count
|
||||
-------
|
||||
271
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a > 464571291354841::int8;
|
||||
count
|
||||
-------
|
||||
270
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- interval check
|
||||
CREATE TABLE intervaltmp (a interval);
|
||||
\copy intervaltmp from 'data/interval.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM intervaltmp WHERE a < '199 days 21:21:23';
|
||||
count
|
||||
-------
|
||||
329
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a <= '199 days 21:21:23';
|
||||
count
|
||||
-------
|
||||
330
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a = '199 days 21:21:23';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a >= '199 days 21:21:23';
|
||||
count
|
||||
-------
|
||||
271
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a > '199 days 21:21:23';
|
||||
count
|
||||
-------
|
||||
270
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX intervalidx ON intervaltmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM intervaltmp WHERE a < '199 days 21:21:23'::interval;
|
||||
count
|
||||
-------
|
||||
329
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a <= '199 days 21:21:23'::interval;
|
||||
count
|
||||
-------
|
||||
330
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a = '199 days 21:21:23'::interval;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a >= '199 days 21:21:23'::interval;
|
||||
count
|
||||
-------
|
||||
271
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a > '199 days 21:21:23'::interval;
|
||||
count
|
||||
-------
|
||||
270
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- macaddr check
|
||||
CREATE TABLE macaddrtmp (a macaddr);
|
||||
\copy macaddrtmp from 'data/macaddr.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM macaddrtmp WHERE a < '22:00:5c:e5:9b:0d';
|
||||
count
|
||||
-------
|
||||
56
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a <= '22:00:5c:e5:9b:0d';
|
||||
count
|
||||
-------
|
||||
60
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a = '22:00:5c:e5:9b:0d';
|
||||
count
|
||||
-------
|
||||
4
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a >= '22:00:5c:e5:9b:0d';
|
||||
count
|
||||
-------
|
||||
544
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a > '22:00:5c:e5:9b:0d';
|
||||
count
|
||||
-------
|
||||
540
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX macaddridx ON macaddrtmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM macaddrtmp WHERE a < '22:00:5c:e5:9b:0d'::macaddr;
|
||||
count
|
||||
-------
|
||||
56
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a <= '22:00:5c:e5:9b:0d'::macaddr;
|
||||
count
|
||||
-------
|
||||
60
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a = '22:00:5c:e5:9b:0d'::macaddr;
|
||||
count
|
||||
-------
|
||||
4
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a >= '22:00:5c:e5:9b:0d'::macaddr;
|
||||
count
|
||||
-------
|
||||
544
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a > '22:00:5c:e5:9b:0d'::macaddr;
|
||||
count
|
||||
-------
|
||||
540
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,188 @@
|
|||
-- numeric check
|
||||
CREATE TABLE numerictmp (a numeric);
|
||||
\copy numerictmp from 'data/int8.data'
|
||||
\copy numerictmp from 'data/numeric.data'
|
||||
\copy numerictmp from 'data/float8.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM numerictmp WHERE a < -1890.0;
|
||||
count
|
||||
-------
|
||||
505
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a <= -1890.0;
|
||||
count
|
||||
-------
|
||||
506
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a = -1890.0;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a >= -1890.0;
|
||||
count
|
||||
-------
|
||||
597
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a > -1890.0;
|
||||
count
|
||||
-------
|
||||
596
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a < 'NaN' ;
|
||||
count
|
||||
-------
|
||||
1100
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a <= 'NaN' ;
|
||||
count
|
||||
-------
|
||||
1102
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a = 'NaN' ;
|
||||
count
|
||||
-------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a >= 'NaN' ;
|
||||
count
|
||||
-------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a > 'NaN' ;
|
||||
count
|
||||
-------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a < 0 ;
|
||||
count
|
||||
-------
|
||||
523
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a <= 0 ;
|
||||
count
|
||||
-------
|
||||
526
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a = 0 ;
|
||||
count
|
||||
-------
|
||||
3
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a >= 0 ;
|
||||
count
|
||||
-------
|
||||
579
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a > 0 ;
|
||||
count
|
||||
-------
|
||||
576
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX numericidx ON numerictmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM numerictmp WHERE a < -1890.0;
|
||||
count
|
||||
-------
|
||||
505
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a <= -1890.0;
|
||||
count
|
||||
-------
|
||||
506
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a = -1890.0;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a >= -1890.0;
|
||||
count
|
||||
-------
|
||||
597
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a > -1890.0;
|
||||
count
|
||||
-------
|
||||
596
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a < 'NaN' ;
|
||||
count
|
||||
-------
|
||||
1100
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a <= 'NaN' ;
|
||||
count
|
||||
-------
|
||||
1102
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a = 'NaN' ;
|
||||
count
|
||||
-------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a >= 'NaN' ;
|
||||
count
|
||||
-------
|
||||
2
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a > 'NaN' ;
|
||||
count
|
||||
-------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a < 0 ;
|
||||
count
|
||||
-------
|
||||
523
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a <= 0 ;
|
||||
count
|
||||
-------
|
||||
526
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a = 0 ;
|
||||
count
|
||||
-------
|
||||
3
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a >= 0 ;
|
||||
count
|
||||
-------
|
||||
579
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a > 0 ;
|
||||
count
|
||||
-------
|
||||
576
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
-- oid check
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM moneytmp WHERE oid < ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
count
|
||||
-------
|
||||
372
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid <= ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
count
|
||||
-------
|
||||
373
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid = ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid >= ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
count
|
||||
-------
|
||||
228
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid > ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
count
|
||||
-------
|
||||
227
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX oididx ON moneytmp USING gist ( oid );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM moneytmp WHERE oid < ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
count
|
||||
-------
|
||||
372
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid <= ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
count
|
||||
-------
|
||||
373
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid = ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid >= ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
count
|
||||
-------
|
||||
228
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid > ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
count
|
||||
-------
|
||||
227
|
||||
(1 row)
|
||||
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,66 @@
|
|||
-- time check
|
||||
CREATE TABLE timetmp (a time);
|
||||
\copy timetmp from 'data/time.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM timetmp WHERE a < '10:57:11';
|
||||
count
|
||||
-------
|
||||
251
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a <= '10:57:11';
|
||||
count
|
||||
-------
|
||||
252
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a = '10:57:11';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a >= '10:57:11';
|
||||
count
|
||||
-------
|
||||
293
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a > '10:57:11';
|
||||
count
|
||||
-------
|
||||
292
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX timeidx ON timetmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM timetmp WHERE a < '10:57:11'::time;
|
||||
count
|
||||
-------
|
||||
251
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a <= '10:57:11'::time;
|
||||
count
|
||||
-------
|
||||
252
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a = '10:57:11'::time;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a >= '10:57:11'::time;
|
||||
count
|
||||
-------
|
||||
293
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a > '10:57:11'::time;
|
||||
count
|
||||
-------
|
||||
292
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- timestamp check
|
||||
CREATE TABLE timestamptmp (a timestamp);
|
||||
\copy timestamptmp from 'data/timestamp.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM timestamptmp WHERE a < '2004-10-26 08:55:08';
|
||||
count
|
||||
-------
|
||||
270
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a <= '2004-10-26 08:55:08';
|
||||
count
|
||||
-------
|
||||
271
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a = '2004-10-26 08:55:08';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a >= '2004-10-26 08:55:08';
|
||||
count
|
||||
-------
|
||||
274
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a > '2004-10-26 08:55:08';
|
||||
count
|
||||
-------
|
||||
273
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX timestampidx ON timestamptmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM timestamptmp WHERE a < '2004-10-26 08:55:08'::timestamp;
|
||||
count
|
||||
-------
|
||||
270
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a <= '2004-10-26 08:55:08'::timestamp;
|
||||
count
|
||||
-------
|
||||
271
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a = '2004-10-26 08:55:08'::timestamp;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a >= '2004-10-26 08:55:08'::timestamp;
|
||||
count
|
||||
-------
|
||||
274
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a > '2004-10-26 08:55:08'::timestamp;
|
||||
count
|
||||
-------
|
||||
273
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,186 @@
|
|||
-- timestamptz check
|
||||
CREATE TABLE timestamptztmp (a timestamptz);
|
||||
\copy timestamptztmp from 'data/timestamptz.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM timestamptztmp WHERE a < '2018-12-18 10:59:54 GMT+3';
|
||||
count
|
||||
-------
|
||||
385
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a <= '2018-12-18 10:59:54 GMT+3';
|
||||
count
|
||||
-------
|
||||
386
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a = '2018-12-18 10:59:54 GMT+3';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a >= '2018-12-18 10:59:54 GMT+3';
|
||||
count
|
||||
-------
|
||||
146
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+3';
|
||||
count
|
||||
-------
|
||||
145
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a < '2018-12-18 10:59:54 GMT+2';
|
||||
count
|
||||
-------
|
||||
385
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a <= '2018-12-18 10:59:54 GMT+2';
|
||||
count
|
||||
-------
|
||||
385
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a = '2018-12-18 10:59:54 GMT+2';
|
||||
count
|
||||
-------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a >= '2018-12-18 10:59:54 GMT+2';
|
||||
count
|
||||
-------
|
||||
146
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+2';
|
||||
count
|
||||
-------
|
||||
146
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a < '2018-12-18 10:59:54 GMT+4';
|
||||
count
|
||||
-------
|
||||
386
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a <= '2018-12-18 10:59:54 GMT+4';
|
||||
count
|
||||
-------
|
||||
386
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a = '2018-12-18 10:59:54 GMT+4';
|
||||
count
|
||||
-------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a >= '2018-12-18 10:59:54 GMT+4';
|
||||
count
|
||||
-------
|
||||
145
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+4';
|
||||
count
|
||||
-------
|
||||
145
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX timestamptzidx ON timestamptztmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM timestamptztmp WHERE a < '2018-12-18 10:59:54 GMT+3'::timestamptz;
|
||||
count
|
||||
-------
|
||||
385
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a <= '2018-12-18 10:59:54 GMT+3'::timestamptz;
|
||||
count
|
||||
-------
|
||||
386
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a = '2018-12-18 10:59:54 GMT+3'::timestamptz;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a >= '2018-12-18 10:59:54 GMT+3'::timestamptz;
|
||||
count
|
||||
-------
|
||||
146
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+3'::timestamptz;
|
||||
count
|
||||
-------
|
||||
145
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a < '2018-12-18 10:59:54 GMT+2'::timestamptz;
|
||||
count
|
||||
-------
|
||||
385
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a <= '2018-12-18 10:59:54 GMT+2'::timestamptz;
|
||||
count
|
||||
-------
|
||||
385
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a = '2018-12-18 10:59:54 GMT+2'::timestamptz;
|
||||
count
|
||||
-------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a >= '2018-12-18 10:59:54 GMT+2'::timestamptz;
|
||||
count
|
||||
-------
|
||||
146
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+2'::timestamptz;
|
||||
count
|
||||
-------
|
||||
146
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a < '2018-12-18 10:59:54 GMT+4'::timestamptz;
|
||||
count
|
||||
-------
|
||||
386
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a <= '2018-12-18 10:59:54 GMT+4'::timestamptz;
|
||||
count
|
||||
-------
|
||||
386
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a = '2018-12-18 10:59:54 GMT+4'::timestamptz;
|
||||
count
|
||||
-------
|
||||
0
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a >= '2018-12-18 10:59:54 GMT+4'::timestamptz;
|
||||
count
|
||||
-------
|
||||
145
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+4'::timestamptz;
|
||||
count
|
||||
-------
|
||||
145
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
-- timetz check
|
||||
CREATE TABLE timetztmp (a timetz);
|
||||
\copy timetztmp from 'data/timetz.data'
|
||||
CREATE TABLE timetzcmp ( r_id int2, a int4, b int4 );
|
||||
SET enable_seqscan=on;
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 1,count(*) FROM timetztmp WHERE a < '07:46:45 GMT+3';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 2,count(*) FROM timetztmp WHERE a <= '07:46:45 GMT+3';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 3,count(*) FROM timetztmp WHERE a = '07:46:45 GMT+3';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 4,count(*) FROM timetztmp WHERE a >= '07:46:45 GMT+3';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 5,count(*) FROM timetztmp WHERE a > '07:46:45 GMT+3';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 11,count(*) FROM timetztmp WHERE a < '07:46:45 GMT+2';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 12,count(*) FROM timetztmp WHERE a <= '07:46:45 GMT+2';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 13,count(*) FROM timetztmp WHERE a = '07:46:45 GMT+2';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 14,count(*) FROM timetztmp WHERE a >= '07:46:45 GMT+2';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 15,count(*) FROM timetztmp WHERE a > '07:46:45 GMT+2';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 21,count(*) FROM timetztmp WHERE a < '07:46:45 GMT+4';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 22,count(*) FROM timetztmp WHERE a <= '07:46:45 GMT+4';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 23,count(*) FROM timetztmp WHERE a = '07:46:45 GMT+4';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 24,count(*) FROM timetztmp WHERE a >= '07:46:45 GMT+4';
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 25,count(*) FROM timetztmp WHERE a > '07:46:45 GMT+4';
|
||||
CREATE INDEX timetzidx ON timetztmp USING gist ( a );
|
||||
SET enable_seqscan=off;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a < '07:46:45 GMT+3'::timetz ) q WHERE r_id=1 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a <= '07:46:45 GMT+3'::timetz ) q WHERE r_id=2 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a = '07:46:45 GMT+3'::timetz ) q WHERE r_id=3 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a >= '07:46:45 GMT+3'::timetz ) q WHERE r_id=4 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a > '07:46:45 GMT+3'::timetz ) q WHERE r_id=5 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a < '07:46:45 GMT+2'::timetz ) q WHERE r_id=11 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a <= '07:46:45 GMT+2'::timetz ) q WHERE r_id=12 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a = '07:46:45 GMT+2'::timetz ) q WHERE r_id=13 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a >= '07:46:45 GMT+2'::timetz ) q WHERE r_id=14 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a > '07:46:45 GMT+2'::timetz ) q WHERE r_id=15 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a < '07:46:45 GMT+4'::timetz ) q WHERE r_id=21 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a <= '07:46:45 GMT+4'::timetz ) q WHERE r_id=22 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a = '07:46:45 GMT+4'::timetz ) q WHERE r_id=23 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a >= '07:46:45 GMT+4'::timetz ) q WHERE r_id=24 ;
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a > '07:46:45 GMT+4'::timetz ) q WHERE r_id=25 ;
|
||||
SELECT count(*) FROM timetzcmp WHERE a=b;
|
||||
count
|
||||
-------
|
||||
15
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- varbit check
|
||||
CREATE TABLE varbittmp (a varbit);
|
||||
\copy varbittmp from 'data/varbit.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM varbittmp WHERE a < '1110100111010';
|
||||
count
|
||||
-------
|
||||
549
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a <= '1110100111010';
|
||||
count
|
||||
-------
|
||||
550
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a = '1110100111010';
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a >= '1110100111010';
|
||||
count
|
||||
-------
|
||||
51
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a > '1110100111010';
|
||||
count
|
||||
-------
|
||||
50
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX varbitidx ON varbittmp USING GIST ( a );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM varbittmp WHERE a < '1110100111010'::varbit;
|
||||
count
|
||||
-------
|
||||
549
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a <= '1110100111010'::varbit;
|
||||
count
|
||||
-------
|
||||
550
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a = '1110100111010'::varbit;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a >= '1110100111010'::varbit;
|
||||
count
|
||||
-------
|
||||
51
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a > '1110100111010'::varbit;
|
||||
count
|
||||
-------
|
||||
50
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,66 @@
|
|||
-- char check
|
||||
CREATE TABLE vchartmp (a varchar(32));
|
||||
\copy vchartmp from 'data/char.data'
|
||||
SET enable_seqscan=on;
|
||||
SELECT count(*) FROM vchartmp WHERE a < '31b0'::varchar(32);
|
||||
count
|
||||
-------
|
||||
121
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a <= '31b0'::varchar(32);
|
||||
count
|
||||
-------
|
||||
122
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a = '31b0'::varchar(32);
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a >= '31b0'::varchar(32);
|
||||
count
|
||||
-------
|
||||
401
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a > '31b0'::varchar(32);
|
||||
count
|
||||
-------
|
||||
400
|
||||
(1 row)
|
||||
|
||||
CREATE INDEX vcharidx ON vchartmp USING GIST ( text(a) );
|
||||
SET enable_seqscan=off;
|
||||
SELECT count(*) FROM vchartmp WHERE a < '31b0'::varchar(32);
|
||||
count
|
||||
-------
|
||||
121
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a <= '31b0'::varchar(32);
|
||||
count
|
||||
-------
|
||||
122
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a = '31b0'::varchar(32);
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a >= '31b0'::varchar(32);
|
||||
count
|
||||
-------
|
||||
401
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a > '31b0'::varchar(32);
|
||||
count
|
||||
-------
|
||||
400
|
||||
(1 row)
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
-- bit check
|
||||
|
||||
CREATE TABLE bittmp (a bit(33));
|
||||
|
||||
\copy bittmp from 'data/bit.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a < '011011000100010111011000110000100';
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a <= '011011000100010111011000110000100';
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a = '011011000100010111011000110000100';
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a >= '011011000100010111011000110000100';
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a > '011011000100010111011000110000100';
|
||||
|
||||
CREATE INDEX bitidx ON bittmp USING GIST ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a < '011011000100010111011000110000100';
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a <= '011011000100010111011000110000100';
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a = '011011000100010111011000110000100';
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a >= '011011000100010111011000110000100';
|
||||
|
||||
SELECT count(*) FROM bittmp WHERE a > '011011000100010111011000110000100';
|
|
@ -1,66 +0,0 @@
|
|||
--
|
||||
-- first, define the datatype. Turn off echoing so that expected file
|
||||
-- does not depend on contents of btree_gist.sql.
|
||||
--
|
||||
\set ECHO none
|
||||
\i btree_gist.sql
|
||||
\set ECHO all
|
||||
|
||||
CREATE TABLE int4tmp (b int4);
|
||||
|
||||
\copy int4tmp from 'data/test_btree.data'
|
||||
|
||||
CREATE TABLE int8tmp (b int8);
|
||||
|
||||
\copy int8tmp from 'data/test_btree.data'
|
||||
|
||||
CREATE TABLE float4tmp (b float4);
|
||||
|
||||
\copy float4tmp from 'data/test_btree.data'
|
||||
|
||||
CREATE TABLE float8tmp (b float8);
|
||||
|
||||
\copy float8tmp from 'data/test_btree.data'
|
||||
|
||||
CREATE TABLE tstmp ( t timestamp without time zone );
|
||||
|
||||
\copy tstmp from 'data/test_btree_ts.data'
|
||||
|
||||
-- without idx
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE b <=10;
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE b <=10;
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE b <=10;
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE b <=10;
|
||||
|
||||
SELECT count(*) FROM tstmp WHERE t < '2001-05-29 08:33:09';
|
||||
|
||||
-- create idx
|
||||
|
||||
CREATE INDEX aaaidx ON int4tmp USING gist ( b );
|
||||
|
||||
CREATE INDEX bbbidx ON int8tmp USING gist ( b );
|
||||
|
||||
CREATE INDEX cccidx ON float4tmp USING gist ( b );
|
||||
|
||||
CREATE INDEX dddidx ON float8tmp USING gist ( b );
|
||||
|
||||
CREATE INDEX tsidx ON tstmp USING gist ( t );
|
||||
|
||||
--with idx
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE b <=10::int4;
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE b <=10::int8;
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE b <=10::float4;
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE b <=10::float8;
|
||||
|
||||
SELECT count(*) FROM tstmp WHERE t < '2001-05-29 08:33:09';
|
||||
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,31 @@
|
|||
-- money check
|
||||
|
||||
CREATE TABLE moneytmp (a money) WITH OIDS;
|
||||
|
||||
\copy moneytmp from 'data/cash.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a < '22649.64';
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a <= '22649.64';
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a = '22649.64';
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a >= '22649.64';
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a > '22649.64';
|
||||
|
||||
CREATE INDEX moneyidx ON moneytmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a < '22649.64'::money;
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a <= '22649.64'::money;
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a = '22649.64'::money;
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a >= '22649.64'::money;
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE a > '22649.64'::money;
|
|
@ -0,0 +1,31 @@
|
|||
-- char check
|
||||
|
||||
CREATE TABLE chartmp (a char(32));
|
||||
|
||||
\copy chartmp from 'data/char.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a < '31b0'::char(32);
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a <= '31b0'::char(32);
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a = '31b0'::char(32);
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a >= '31b0'::char(32);
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a > '31b0'::char(32);
|
||||
|
||||
CREATE INDEX charidx ON chartmp USING GIST ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a < '31b0'::char(32);
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a <= '31b0'::char(32);
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a = '31b0'::char(32);
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a >= '31b0'::char(32);
|
||||
|
||||
SELECT count(*) FROM chartmp WHERE a > '31b0'::char(32);
|
|
@ -0,0 +1,31 @@
|
|||
-- cidr check
|
||||
|
||||
CREATE TABLE cidrtmp AS
|
||||
SELECT cidr(a) AS a FROM inettmp ;
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a < '121.111.63.82';
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a <= '121.111.63.82';
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a = '121.111.63.82';
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a >= '121.111.63.82';
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a > '121.111.63.82';
|
||||
|
||||
CREATE INDEX cidridx ON cidrtmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a < '121.111.63.82'::cidr;
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a <= '121.111.63.82'::cidr;
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a = '121.111.63.82'::cidr;
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a >= '121.111.63.82'::cidr;
|
||||
|
||||
SELECT count(*) FROM cidrtmp WHERE a > '121.111.63.82'::cidr;
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
-- date check
|
||||
|
||||
CREATE TABLE datetmp (a date);
|
||||
|
||||
\copy datetmp from 'data/date.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a < '2001-02-13';
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a <= '2001-02-13';
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a = '2001-02-13';
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a >= '2001-02-13';
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a > '2001-02-13';
|
||||
|
||||
CREATE INDEX dateidx ON datetmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a < '2001-02-13'::date;
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a <= '2001-02-13'::date;
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a = '2001-02-13'::date;
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a >= '2001-02-13'::date;
|
||||
|
||||
SELECT count(*) FROM datetmp WHERE a > '2001-02-13'::date;
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
-- float4 check
|
||||
|
||||
CREATE TABLE float4tmp (a float4);
|
||||
|
||||
\copy float4tmp from 'data/float4.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a < -179.0;
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a <= -179.0;
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a = -179.0;
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a >= -179.0;
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a > -179.0;
|
||||
|
||||
CREATE INDEX float4idx ON float4tmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a < -179.0::float4;
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a <= -179.0::float4;
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a = -179.0::float4;
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a >= -179.0::float4;
|
||||
|
||||
SELECT count(*) FROM float4tmp WHERE a > -179.0::float4;
|
|
@ -0,0 +1,31 @@
|
|||
-- float8 check
|
||||
|
||||
CREATE TABLE float8tmp (a float8);
|
||||
|
||||
\copy float8tmp from 'data/float8.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a < -1890.0;
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a <= -1890.0;
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a = -1890.0;
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a >= -1890.0;
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a > -1890.0;
|
||||
|
||||
CREATE INDEX float8idx ON float8tmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a < -1890.0::float8;
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a <= -1890.0::float8;
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a = -1890.0::float8;
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a >= -1890.0::float8;
|
||||
|
||||
SELECT count(*) FROM float8tmp WHERE a > -1890.0::float8;
|
|
@ -0,0 +1,32 @@
|
|||
-- inet check
|
||||
|
||||
CREATE TABLE inettmp (a inet);
|
||||
|
||||
\copy inettmp from 'data/inet.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a < '89.225.196.191';
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a <= '89.225.196.191';
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a = '89.225.196.191';
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a >= '89.225.196.191';
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a > '89.225.196.191';
|
||||
|
||||
CREATE INDEX inetidx ON inettmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a < '89.225.196.191'::inet;
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a <= '89.225.196.191'::inet;
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a = '89.225.196.191'::inet;
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a >= '89.225.196.191'::inet;
|
||||
|
||||
SELECT count(*) FROM inettmp WHERE a > '89.225.196.191'::inet;
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
--
|
||||
-- first, define the datatype. Turn off echoing so that expected file
|
||||
-- does not depend on contents of btree_gist.sql.
|
||||
--
|
||||
\set ECHO none
|
||||
\i btree_gist.sql
|
||||
\set ECHO all
|
|
@ -0,0 +1,32 @@
|
|||
-- int2 check
|
||||
|
||||
CREATE TABLE int2tmp (a int2);
|
||||
|
||||
\copy int2tmp from 'data/int2.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a < 237;
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a <= 237;
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a = 237;
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a >= 237;
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a > 237;
|
||||
|
||||
CREATE INDEX int2idx ON int2tmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a < 237::int2;
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a <= 237::int2;
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a = 237::int2;
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a >= 237::int2;
|
||||
|
||||
SELECT count(*) FROM int2tmp WHERE a > 237::int2;
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
-- int4 check
|
||||
|
||||
CREATE TABLE int4tmp (a int4);
|
||||
|
||||
\copy int4tmp from 'data/int2.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a < 237;
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a <= 237;
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a = 237;
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a >= 237;
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a > 237;
|
||||
|
||||
CREATE INDEX int4idx ON int4tmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a < 237::int4;
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a <= 237::int4;
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a = 237::int4;
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a >= 237::int4;
|
||||
|
||||
SELECT count(*) FROM int4tmp WHERE a > 237::int4;
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
-- int8 check
|
||||
|
||||
CREATE TABLE int8tmp (a int8);
|
||||
|
||||
\copy int8tmp from 'data/int8.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a < 464571291354841;
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a <= 464571291354841;
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a = 464571291354841;
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a >= 464571291354841;
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a > 464571291354841;
|
||||
|
||||
CREATE INDEX int8idx ON int8tmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a < 464571291354841::int8;
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a <= 464571291354841::int8;
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a = 464571291354841::int8;
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a >= 464571291354841::int8;
|
||||
|
||||
SELECT count(*) FROM int8tmp WHERE a > 464571291354841::int8;
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
-- interval check
|
||||
|
||||
CREATE TABLE intervaltmp (a interval);
|
||||
|
||||
\copy intervaltmp from 'data/interval.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a < '199 days 21:21:23';
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a <= '199 days 21:21:23';
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a = '199 days 21:21:23';
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a >= '199 days 21:21:23';
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a > '199 days 21:21:23';
|
||||
|
||||
CREATE INDEX intervalidx ON intervaltmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a < '199 days 21:21:23'::interval;
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a <= '199 days 21:21:23'::interval;
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a = '199 days 21:21:23'::interval;
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a >= '199 days 21:21:23'::interval;
|
||||
|
||||
SELECT count(*) FROM intervaltmp WHERE a > '199 days 21:21:23'::interval;
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
-- macaddr check
|
||||
|
||||
CREATE TABLE macaddrtmp (a macaddr);
|
||||
|
||||
\copy macaddrtmp from 'data/macaddr.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a < '22:00:5c:e5:9b:0d';
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a <= '22:00:5c:e5:9b:0d';
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a = '22:00:5c:e5:9b:0d';
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a >= '22:00:5c:e5:9b:0d';
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a > '22:00:5c:e5:9b:0d';
|
||||
|
||||
CREATE INDEX macaddridx ON macaddrtmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a < '22:00:5c:e5:9b:0d'::macaddr;
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a <= '22:00:5c:e5:9b:0d'::macaddr;
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a = '22:00:5c:e5:9b:0d'::macaddr;
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a >= '22:00:5c:e5:9b:0d'::macaddr;
|
||||
|
||||
SELECT count(*) FROM macaddrtmp WHERE a > '22:00:5c:e5:9b:0d'::macaddr;
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
-- numeric check
|
||||
|
||||
CREATE TABLE numerictmp (a numeric);
|
||||
|
||||
\copy numerictmp from 'data/int8.data'
|
||||
\copy numerictmp from 'data/numeric.data'
|
||||
\copy numerictmp from 'data/float8.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a < -1890.0;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a <= -1890.0;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a = -1890.0;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a >= -1890.0;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a > -1890.0;
|
||||
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a < 'NaN' ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a <= 'NaN' ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a = 'NaN' ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a >= 'NaN' ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a > 'NaN' ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a < 0 ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a <= 0 ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a = 0 ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a >= 0 ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a > 0 ;
|
||||
|
||||
|
||||
CREATE INDEX numericidx ON numerictmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a < -1890.0;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a <= -1890.0;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a = -1890.0;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a >= -1890.0;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a > -1890.0;
|
||||
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a < 'NaN' ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a <= 'NaN' ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a = 'NaN' ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a >= 'NaN' ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a > 'NaN' ;
|
||||
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a < 0 ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a <= 0 ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a = 0 ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a >= 0 ;
|
||||
|
||||
SELECT count(*) FROM numerictmp WHERE a > 0 ;
|
|
@ -0,0 +1,27 @@
|
|||
-- oid check
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid < ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid <= ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid = ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid >= ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid > ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
|
||||
CREATE INDEX oididx ON moneytmp USING gist ( oid );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid < ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid <= ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid = ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid >= ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
||||
|
||||
SELECT count(*) FROM moneytmp WHERE oid > ( SELECT oid FROM moneytmp WHERE a = '22649.64' );
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,32 @@
|
|||
-- time check
|
||||
|
||||
CREATE TABLE timetmp (a time);
|
||||
|
||||
\copy timetmp from 'data/time.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a < '10:57:11';
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a <= '10:57:11';
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a = '10:57:11';
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a >= '10:57:11';
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a > '10:57:11';
|
||||
|
||||
CREATE INDEX timeidx ON timetmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a < '10:57:11'::time;
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a <= '10:57:11'::time;
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a = '10:57:11'::time;
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a >= '10:57:11'::time;
|
||||
|
||||
SELECT count(*) FROM timetmp WHERE a > '10:57:11'::time;
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
-- timestamp check
|
||||
|
||||
CREATE TABLE timestamptmp (a timestamp);
|
||||
|
||||
\copy timestamptmp from 'data/timestamp.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a < '2004-10-26 08:55:08';
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a <= '2004-10-26 08:55:08';
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a = '2004-10-26 08:55:08';
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a >= '2004-10-26 08:55:08';
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a > '2004-10-26 08:55:08';
|
||||
|
||||
CREATE INDEX timestampidx ON timestamptmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a < '2004-10-26 08:55:08'::timestamp;
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a <= '2004-10-26 08:55:08'::timestamp;
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a = '2004-10-26 08:55:08'::timestamp;
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a >= '2004-10-26 08:55:08'::timestamp;
|
||||
|
||||
SELECT count(*) FROM timestamptmp WHERE a > '2004-10-26 08:55:08'::timestamp;
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
-- timestamptz check
|
||||
|
||||
CREATE TABLE timestamptztmp (a timestamptz);
|
||||
|
||||
\copy timestamptztmp from 'data/timestamptz.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a < '2018-12-18 10:59:54 GMT+3';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a <= '2018-12-18 10:59:54 GMT+3';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a = '2018-12-18 10:59:54 GMT+3';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a >= '2018-12-18 10:59:54 GMT+3';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+3';
|
||||
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a < '2018-12-18 10:59:54 GMT+2';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a <= '2018-12-18 10:59:54 GMT+2';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a = '2018-12-18 10:59:54 GMT+2';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a >= '2018-12-18 10:59:54 GMT+2';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+2';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a < '2018-12-18 10:59:54 GMT+4';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a <= '2018-12-18 10:59:54 GMT+4';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a = '2018-12-18 10:59:54 GMT+4';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a >= '2018-12-18 10:59:54 GMT+4';
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+4';
|
||||
|
||||
|
||||
|
||||
CREATE INDEX timestamptzidx ON timestamptztmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a < '2018-12-18 10:59:54 GMT+3'::timestamptz;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a <= '2018-12-18 10:59:54 GMT+3'::timestamptz;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a = '2018-12-18 10:59:54 GMT+3'::timestamptz;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a >= '2018-12-18 10:59:54 GMT+3'::timestamptz;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+3'::timestamptz;
|
||||
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a < '2018-12-18 10:59:54 GMT+2'::timestamptz;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a <= '2018-12-18 10:59:54 GMT+2'::timestamptz;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a = '2018-12-18 10:59:54 GMT+2'::timestamptz;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a >= '2018-12-18 10:59:54 GMT+2'::timestamptz;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+2'::timestamptz;
|
||||
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a < '2018-12-18 10:59:54 GMT+4'::timestamptz;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a <= '2018-12-18 10:59:54 GMT+4'::timestamptz;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a = '2018-12-18 10:59:54 GMT+4'::timestamptz;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a >= '2018-12-18 10:59:54 GMT+4'::timestamptz;
|
||||
|
||||
SELECT count(*) FROM timestamptztmp WHERE a > '2018-12-18 10:59:54 GMT+4'::timestamptz;
|
|
@ -0,0 +1,82 @@
|
|||
-- timetz check
|
||||
|
||||
CREATE TABLE timetztmp (a timetz);
|
||||
\copy timetztmp from 'data/timetz.data'
|
||||
|
||||
CREATE TABLE timetzcmp ( r_id int2, a int4, b int4 );
|
||||
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 1,count(*) FROM timetztmp WHERE a < '07:46:45 GMT+3';
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 2,count(*) FROM timetztmp WHERE a <= '07:46:45 GMT+3';
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 3,count(*) FROM timetztmp WHERE a = '07:46:45 GMT+3';
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 4,count(*) FROM timetztmp WHERE a >= '07:46:45 GMT+3';
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 5,count(*) FROM timetztmp WHERE a > '07:46:45 GMT+3';
|
||||
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 11,count(*) FROM timetztmp WHERE a < '07:46:45 GMT+2';
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 12,count(*) FROM timetztmp WHERE a <= '07:46:45 GMT+2';
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 13,count(*) FROM timetztmp WHERE a = '07:46:45 GMT+2';
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 14,count(*) FROM timetztmp WHERE a >= '07:46:45 GMT+2';
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 15,count(*) FROM timetztmp WHERE a > '07:46:45 GMT+2';
|
||||
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 21,count(*) FROM timetztmp WHERE a < '07:46:45 GMT+4';
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 22,count(*) FROM timetztmp WHERE a <= '07:46:45 GMT+4';
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 23,count(*) FROM timetztmp WHERE a = '07:46:45 GMT+4';
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 24,count(*) FROM timetztmp WHERE a >= '07:46:45 GMT+4';
|
||||
|
||||
INSERT INTO timetzcmp (r_id,a) SELECT 25,count(*) FROM timetztmp WHERE a > '07:46:45 GMT+4';
|
||||
|
||||
|
||||
|
||||
CREATE INDEX timetzidx ON timetztmp USING gist ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a < '07:46:45 GMT+3'::timetz ) q WHERE r_id=1 ;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a <= '07:46:45 GMT+3'::timetz ) q WHERE r_id=2 ;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a = '07:46:45 GMT+3'::timetz ) q WHERE r_id=3 ;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a >= '07:46:45 GMT+3'::timetz ) q WHERE r_id=4 ;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a > '07:46:45 GMT+3'::timetz ) q WHERE r_id=5 ;
|
||||
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a < '07:46:45 GMT+2'::timetz ) q WHERE r_id=11 ;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a <= '07:46:45 GMT+2'::timetz ) q WHERE r_id=12 ;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a = '07:46:45 GMT+2'::timetz ) q WHERE r_id=13 ;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a >= '07:46:45 GMT+2'::timetz ) q WHERE r_id=14 ;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a > '07:46:45 GMT+2'::timetz ) q WHERE r_id=15 ;
|
||||
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a < '07:46:45 GMT+4'::timetz ) q WHERE r_id=21 ;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a <= '07:46:45 GMT+4'::timetz ) q WHERE r_id=22 ;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a = '07:46:45 GMT+4'::timetz ) q WHERE r_id=23 ;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a >= '07:46:45 GMT+4'::timetz ) q WHERE r_id=24 ;
|
||||
|
||||
UPDATE timetzcmp SET b=c FROM ( SELECT count(*) AS c FROM timetztmp WHERE a > '07:46:45 GMT+4'::timetz ) q WHERE r_id=25 ;
|
||||
|
||||
|
||||
SELECT count(*) FROM timetzcmp WHERE a=b;
|
|
@ -0,0 +1,31 @@
|
|||
-- varbit check
|
||||
|
||||
CREATE TABLE varbittmp (a varbit);
|
||||
|
||||
\copy varbittmp from 'data/varbit.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a < '1110100111010';
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a <= '1110100111010';
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a = '1110100111010';
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a >= '1110100111010';
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a > '1110100111010';
|
||||
|
||||
CREATE INDEX varbitidx ON varbittmp USING GIST ( a );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a < '1110100111010'::varbit;
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a <= '1110100111010'::varbit;
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a = '1110100111010'::varbit;
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a >= '1110100111010'::varbit;
|
||||
|
||||
SELECT count(*) FROM varbittmp WHERE a > '1110100111010'::varbit;
|
|
@ -0,0 +1,31 @@
|
|||
-- char check
|
||||
|
||||
CREATE TABLE vchartmp (a varchar(32));
|
||||
|
||||
\copy vchartmp from 'data/char.data'
|
||||
|
||||
SET enable_seqscan=on;
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a < '31b0'::varchar(32);
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a <= '31b0'::varchar(32);
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a = '31b0'::varchar(32);
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a >= '31b0'::varchar(32);
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a > '31b0'::varchar(32);
|
||||
|
||||
CREATE INDEX vcharidx ON vchartmp USING GIST ( text(a) );
|
||||
|
||||
SET enable_seqscan=off;
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a < '31b0'::varchar(32);
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a <= '31b0'::varchar(32);
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a = '31b0'::varchar(32);
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a >= '31b0'::varchar(32);
|
||||
|
||||
SELECT count(*) FROM vchartmp WHERE a > '31b0'::varchar(32);
|
Loading…
Reference in New Issue