diff --git a/go.mod b/go.mod index e590bdd1b..d64a32730 100644 --- a/go.mod +++ b/go.mod @@ -54,7 +54,7 @@ require ( golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect golang.org/x/text v0.3.5 // indirect google.golang.org/grpc v1.28.0 - gopkg.in/yaml.v2 v2.3.0 // indirect + gopkg.in/yaml.v2 v2.3.0 modernc.org/mathutil v1.0.0 modernc.org/strutil v1.0.0 sigs.k8s.io/yaml v1.2.0 // indirect diff --git a/pg/lookerToFeaturebase.md b/pg/lookerToFeaturebase.md new file mode 100644 index 000000000..cd7c82b9b --- /dev/null +++ b/pg/lookerToFeaturebase.md @@ -0,0 +1,652 @@ +```mermaid +sequenceDiagram + +participant 213070643358480 as c0 +participant 213070643358482 as c1 +participant 213070643358484 as c2 +participant 213070643358486 as c3 +participant 213070643358488 as c4 +participant 213070643358490 as c5 +participant 213070643358492 as c6 +participant 213070643358494 as c7 +participant 213070643358496 as c8 +participant 213070643358498 as c9 +participant 213070643358500 as c10 +participant 213070643358502 as c11 +213070643358480->>server:+SSL REQUEST +server-->>213070643358480:-SSL BACKEND ANSWER: N +213070643358480->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643358480:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643358480:-PARAMETER STATUS name='application_name', value='' +server-->>213070643358480:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643358480:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643358480:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643358480:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643358480:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643358480:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643358480:-PARAMETER STATUS name='server_version', value='13.0.0' +server-->>213070643358480:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643358480:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643358480:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643358480:-BACKEND KEY DATA pid=1459324827, key=1506254533 +server-->>213070643358480:-READY FOR QUERY type= +213070643358480->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643358480->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358480->>server:+EXECUTE name='', nb_rows=1 +213070643358480->>server:+SYNC +server-->>213070643358480:-PARSE COMPLETE +server-->>213070643358480:-BIND COMPLETE +server-->>213070643358480:-COMMAND COMPLETE command='SET' +server-->>213070643358480:-READY FOR QUERY type= +213070643358480->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643358480->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358480->>server:+EXECUTE name='', nb_rows=1 +213070643358480->>server:+SYNC +server-->>213070643358480:-PARSE COMPLETE +server-->>213070643358480:-BIND COMPLETE +server-->>213070643358480:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643358480:-COMMAND COMPLETE command='SET' +server-->>213070643358480:-READY FOR QUERY type= +213070643358480->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358480->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358480->>server:+DESCRIBE kind='P', name='' +213070643358480->>server:+EXECUTE name='', nb_rows=1 +213070643358480->>server:+SYNC +server-->>213070643358480:-PARSE COMPLETE +server-->>213070643358480:-BIND COMPLETE +server-->>213070643358480:-NO DATA +server-->>213070643358480:-EMPTY QUERY RESPONSE +server-->>213070643358480:-READY FOR QUERY type= +213070643358480->>server:+DISCONNECT +213070643358482->>server:+SSL REQUEST +server-->>213070643358482:-SSL BACKEND ANSWER: N +213070643358482->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643358482:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643358482:-PARAMETER STATUS name='application_name', value='' +server-->>213070643358482:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643358482:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643358482:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643358482:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643358482:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643358482:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643358482:-PARAMETER STATUS name='server_version', value='13.0.0' +server-->>213070643358482:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643358482:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643358482:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643358482:-BACKEND KEY DATA pid=1742342691, key=1299317425 +server-->>213070643358482:-READY FOR QUERY type= +213070643358482->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643358482->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358482->>server:+EXECUTE name='', nb_rows=1 +213070643358482->>server:+SYNC +server-->>213070643358482:-PARSE COMPLETE +server-->>213070643358482:-BIND COMPLETE +server-->>213070643358482:-COMMAND COMPLETE command='SET' +server-->>213070643358482:-READY FOR QUERY type= +213070643358482->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643358482->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358482->>server:+EXECUTE name='', nb_rows=1 +213070643358482->>server:+SYNC +server-->>213070643358482:-PARSE COMPLETE +server-->>213070643358482:-BIND COMPLETE +server-->>213070643358482:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643358482:-COMMAND COMPLETE command='SET' +server-->>213070643358482:-READY FOR QUERY type= +213070643358482->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358482->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358482->>server:+DESCRIBE kind='P', name='' +213070643358482->>server:+EXECUTE name='', nb_rows=1 +213070643358482->>server:+SYNC +server-->>213070643358482:-PARSE COMPLETE +server-->>213070643358482:-BIND COMPLETE +server-->>213070643358482:-NO DATA +server-->>213070643358482:-EMPTY QUERY RESPONSE +server-->>213070643358482:-READY FOR QUERY type= +213070643358482->>server:+DISCONNECT +213070643358484->>server:+SSL REQUEST +server-->>213070643358484:-SSL BACKEND ANSWER: N +213070643358484->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643358484:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643358484:-PARAMETER STATUS name='application_name', value='' +server-->>213070643358484:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643358484:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643358484:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643358484:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643358484:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643358484:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643358484:-PARAMETER STATUS name='server_version', value='13.0.0' +server-->>213070643358484:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643358484:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643358484:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643358484:-BACKEND KEY DATA pid=700852804, key=1377869267 +server-->>213070643358484:-READY FOR QUERY type= +213070643358484->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643358484->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358484->>server:+EXECUTE name='', nb_rows=1 +213070643358484->>server:+SYNC +server-->>213070643358484:-PARSE COMPLETE +server-->>213070643358484:-BIND COMPLETE +server-->>213070643358484:-COMMAND COMPLETE command='SET' +server-->>213070643358484:-READY FOR QUERY type= +213070643358484->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643358484->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358484->>server:+EXECUTE name='', nb_rows=1 +213070643358484->>server:+SYNC +server-->>213070643358484:-PARSE COMPLETE +server-->>213070643358484:-BIND COMPLETE +server-->>213070643358484:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643358484:-COMMAND COMPLETE command='SET' +server-->>213070643358484:-READY FOR QUERY type= +213070643358484->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358484->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358484->>server:+DESCRIBE kind='P', name='' +213070643358484->>server:+EXECUTE name='', nb_rows=1 +213070643358484->>server:+SYNC +server-->>213070643358484:-PARSE COMPLETE +server-->>213070643358484:-BIND COMPLETE +server-->>213070643358484:-NO DATA +server-->>213070643358484:-EMPTY QUERY RESPONSE +server-->>213070643358484:-READY FOR QUERY type= +213070643358484->>server:+DISCONNECT +213070643358486->>server:+SSL REQUEST +server-->>213070643358486:-SSL BACKEND ANSWER: N +213070643358486->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643358486:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643358486:-PARAMETER STATUS name='application_name', value='' +server-->>213070643358486:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643358486:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643358486:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643358486:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643358486:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643358486:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643358486:-PARAMETER STATUS name='server_version', value='13.0.0' +server-->>213070643358486:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643358486:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643358486:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643358486:-BACKEND KEY DATA pid=413235241, key=1302652759 +server-->>213070643358486:-READY FOR QUERY type= +213070643358486->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643358486->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358486->>server:+EXECUTE name='', nb_rows=1 +213070643358486->>server:+SYNC +server-->>213070643358486:-PARSE COMPLETE +server-->>213070643358486:-BIND COMPLETE +server-->>213070643358486:-COMMAND COMPLETE command='SET' +server-->>213070643358486:-READY FOR QUERY type= +213070643358486->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643358486->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358486->>server:+EXECUTE name='', nb_rows=1 +213070643358486->>server:+SYNC +server-->>213070643358486:-PARSE COMPLETE +server-->>213070643358486:-BIND COMPLETE +server-->>213070643358486:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643358486:-COMMAND COMPLETE command='SET' +server-->>213070643358486:-READY FOR QUERY type= +213070643358486->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358486->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358486->>server:+DESCRIBE kind='P', name='' +213070643358486->>server:+EXECUTE name='', nb_rows=1 +213070643358486->>server:+SYNC +server-->>213070643358486:-PARSE COMPLETE +server-->>213070643358486:-BIND COMPLETE +server-->>213070643358486:-NO DATA +server-->>213070643358486:-EMPTY QUERY RESPONSE +server-->>213070643358486:-READY FOR QUERY type= +213070643358486->>server:+PARSE name='', num_params=0, params_type=, query=SELECT pg_backend_pid() +213070643358486->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358486->>server:+DESCRIBE kind='P', name='' +213070643358486->>server:+EXECUTE name='', nb_rows=0 +213070643358486->>server:+SYNC +server-->>213070643358486:-PARSE COMPLETE +server-->>213070643358486:-BIND COMPLETE +server-->>213070643358486:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='pg_backend_pid' type=23 type_len=4 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643358486:-DATA ROW num_values=1 ---[Value 0001]--- length=9 value='413235241' +server-->>213070643358486:-COMMAND COMPLETE command='SELECT' +server-->>213070643358486:-READY FOR QUERY type= +213070643358486->>server:+PARSE name='', num_params=0, params_type=, query=SELECT VERSION() AS version +213070643358486->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358486->>server:+DESCRIBE kind='P', name='' +213070643358486->>server:+EXECUTE name='', nb_rows=0 +213070643358486->>server:+SYNC +server-->>213070643358486:-PARSE COMPLETE +server-->>213070643358486:-BIND COMPLETE +server-->>213070643358486:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='version' type=25 type_len=65535 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643358486:-DATA ROW num_values=1 ---[Value 0001]--- length=27 value='PostgresSQL 13.0 (molecula)' +server-->>213070643358486:-COMMAND COMPLETE command='SELECT' +server-->>213070643358486:-READY FOR QUERY type= +213070643358486->>server:+PARSE name='', num_params=0, params_type=, query= SELECT COUNT(*) FROM pg_type AS t0, pg_aggregate AS t1, pg_settings AS t2, pg_settings AS t3 +213070643358486->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358486->>server:+DESCRIBE kind='P', name='' +213070643358486->>server:+EXECUTE name='', nb_rows=0 +213070643358486->>server:+SYNC +213070643358488->>server:+SSL REQUEST +server-->>213070643358488:-SSL BACKEND ANSWER: N +213070643358488->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643358488:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643358488:-PARAMETER STATUS name='application_name', value='' +server-->>213070643358488:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643358488:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643358488:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643358488:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643358488:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643358488:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643358488:-PARAMETER STATUS name='server_version', value='13.0.0' +server-->>213070643358488:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643358488:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643358488:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643358488:-BACKEND KEY DATA pid=180554708, key=1504602717 +server-->>213070643358488:-READY FOR QUERY type= +213070643358488->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643358488->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358488->>server:+EXECUTE name='', nb_rows=1 +213070643358488->>server:+SYNC +server-->>213070643358488:-PARSE COMPLETE +server-->>213070643358488:-BIND COMPLETE +server-->>213070643358488:-COMMAND COMPLETE command='SET' +server-->>213070643358488:-READY FOR QUERY type= +213070643358488->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643358488->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358488->>server:+EXECUTE name='', nb_rows=1 +213070643358488->>server:+SYNC +server-->>213070643358488:-PARSE COMPLETE +server-->>213070643358488:-BIND COMPLETE +server-->>213070643358488:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643358488:-COMMAND COMPLETE command='SET' +server-->>213070643358488:-READY FOR QUERY type= +213070643358488->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358488->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358488->>server:+DESCRIBE kind='P', name='' +213070643358488->>server:+EXECUTE name='', nb_rows=1 +213070643358488->>server:+SYNC +server-->>213070643358488:-PARSE COMPLETE +server-->>213070643358488:-BIND COMPLETE +server-->>213070643358488:-NO DATA +server-->>213070643358488:-EMPTY QUERY RESPONSE +server-->>213070643358488:-READY FOR QUERY type= +213070643358488->>server:+DISCONNECT +213070643358490->>server:+SSL REQUEST +server-->>213070643358490:-SSL BACKEND ANSWER: N +213070643358490->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643358490:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643358490:-PARAMETER STATUS name='application_name', value='' +server-->>213070643358490:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643358490:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643358490:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643358490:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643358490:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643358490:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643358490:-PARAMETER STATUS name='server_version', value='13.0.0' +server-->>213070643358490:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643358490:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643358490:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643358490:-BACKEND KEY DATA pid=1713101217, key=29850369 +server-->>213070643358490:-READY FOR QUERY type= +213070643358490->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643358490->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358490->>server:+EXECUTE name='', nb_rows=1 +213070643358490->>server:+SYNC +server-->>213070643358490:-PARSE COMPLETE +server-->>213070643358490:-BIND COMPLETE +server-->>213070643358490:-COMMAND COMPLETE command='SET' +server-->>213070643358490:-READY FOR QUERY type= +213070643358490->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643358490->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358490->>server:+EXECUTE name='', nb_rows=1 +213070643358490->>server:+SYNC +server-->>213070643358490:-PARSE COMPLETE +server-->>213070643358490:-BIND COMPLETE +server-->>213070643358490:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643358490:-COMMAND COMPLETE command='SET' +server-->>213070643358490:-READY FOR QUERY type= +213070643358490->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358490->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358490->>server:+DESCRIBE kind='P', name='' +213070643358490->>server:+EXECUTE name='', nb_rows=1 +213070643358490->>server:+SYNC +server-->>213070643358490:-PARSE COMPLETE +server-->>213070643358490:-BIND COMPLETE +server-->>213070643358490:-NO DATA +server-->>213070643358490:-EMPTY QUERY RESPONSE +server-->>213070643358490:-READY FOR QUERY type= +213070643358490->>server:+PARSE name='', num_params=0, params_type=, query=SELECT VERSION() AS version +213070643358490->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358490->>server:+DESCRIBE kind='P', name='' +213070643358490->>server:+EXECUTE name='', nb_rows=0 +213070643358490->>server:+SYNC +server-->>213070643358490:-PARSE COMPLETE +server-->>213070643358490:-BIND COMPLETE +server-->>213070643358490:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='version' type=25 type_len=65535 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643358490:-DATA ROW num_values=1 ---[Value 0001]--- length=27 value='PostgresSQL 13.0 (molecula)' +server-->>213070643358490:-COMMAND COMPLETE command='SELECT' +server-->>213070643358490:-READY FOR QUERY type= +213070643358490->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358490->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358490->>server:+DESCRIBE kind='P', name='' +213070643358490->>server:+EXECUTE name='', nb_rows=1 +213070643358490->>server:+SYNC +server-->>213070643358490:-PARSE COMPLETE +server-->>213070643358490:-BIND COMPLETE +server-->>213070643358490:-NO DATA +server-->>213070643358490:-EMPTY QUERY RESPONSE +server-->>213070643358490:-READY FOR QUERY type= +213070643358490->>server:+PARSE name='', num_params=0, params_type=, query= SELECT pid as id, query as stmt, EXTRACT(seconds from query_start - NOW()) as elapsed_time FROM pg_stat_activity WHERE usename='docker' +213070643358490->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358490->>server:+DESCRIBE kind='P', name='' +213070643358490->>server:+EXECUTE name='', nb_rows=0 +213070643358490->>server:+SYNC +server-->>213070643358490:-PARSE COMPLETE +server-->>213070643358490:-BIND COMPLETE +server-->>213070643358490:-ROW DESCRIPTION: num_fields=3 ---[Field 01]--- name='id' type=23 type_len=4 type_mod=4294967295 relid=0 attnum=0 format=0 ---[Field 02]--- name='stmt' type=25 type_len=65535 type_mod=4294967295 relid=0 attnum=0 format=0 ---[Field 03]--- name='elapsed_time' type=701 type_len=8 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643358490:-DATA ROW num_values=3 ---[Value 0001]--- length=9 value='413235241' ---[Value 0002]--- length=148 value=' SELECT COUNT(*). FROM pg_type AS t0,. pg_aggregate AS t1,. pg_settings AS t2,. pg_settings AS t3.' ---[Value 0003]--- length=11 value='1.311371547' +server-->>213070643358490:-DATA ROW num_values=3 ---[Value 0001]--- length=10 value='1713101217' ---[Value 0002]--- length=190 value=' SELECT pid as id,. query as stmt,. EXTRACT(seconds from query_start - NOW()) as elapsed_time. FROM pg_stat_activity. WHERE usename='docker'.' ---[Value 0003]--- length=11 value='0.000169969' +server-->>213070643358490:-COMMAND COMPLETE command='SELECT' +server-->>213070643358490:-READY FOR QUERY type= +213070643358492->>server:+SSL REQUEST +server-->>213070643358492:-SSL BACKEND ANSWER: N +213070643358492->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643358492:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643358492:-PARAMETER STATUS name='application_name', value='' +server-->>213070643358492:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643358492:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643358492:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643358492:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643358492:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643358492:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643358492:-PARAMETER STATUS name='server_version', value='13.0.0' +server-->>213070643358492:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643358492:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643358492:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643358492:-BACKEND KEY DATA pid=2034361563, key=1419995666 +server-->>213070643358492:-READY FOR QUERY type= +213070643358492->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643358492->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358492->>server:+EXECUTE name='', nb_rows=1 +213070643358492->>server:+SYNC +server-->>213070643358492:-PARSE COMPLETE +server-->>213070643358492:-BIND COMPLETE +server-->>213070643358492:-COMMAND COMPLETE command='SET' +server-->>213070643358492:-READY FOR QUERY type= +213070643358492->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643358492->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358492->>server:+EXECUTE name='', nb_rows=1 +213070643358492->>server:+SYNC +server-->>213070643358492:-PARSE COMPLETE +server-->>213070643358492:-BIND COMPLETE +server-->>213070643358492:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643358492:-COMMAND COMPLETE command='SET' +server-->>213070643358492:-READY FOR QUERY type= +213070643358492->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358492->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358492->>server:+DESCRIBE kind='P', name='' +213070643358492->>server:+EXECUTE name='', nb_rows=1 +213070643358492->>server:+SYNC +server-->>213070643358492:-PARSE COMPLETE +server-->>213070643358492:-BIND COMPLETE +server-->>213070643358492:-NO DATA +server-->>213070643358492:-EMPTY QUERY RESPONSE +server-->>213070643358492:-READY FOR QUERY type= +213070643358492->>server:+DISCONNECT +213070643358494->>server:+SSL REQUEST +server-->>213070643358494:-SSL BACKEND ANSWER: N +213070643358494->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643358494:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643358494:-PARAMETER STATUS name='application_name', value='' +server-->>213070643358494:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643358494:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643358494:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643358494:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643358494:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643358494:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643358494:-PARAMETER STATUS name='server_version', value='13.0.0' +server-->>213070643358494:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643358494:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643358494:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643358494:-BACKEND KEY DATA pid=964429462, key=1673405115 +server-->>213070643358494:-READY FOR QUERY type= +213070643358494->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643358494->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358494->>server:+EXECUTE name='', nb_rows=1 +213070643358494->>server:+SYNC +server-->>213070643358494:-PARSE COMPLETE +server-->>213070643358494:-BIND COMPLETE +server-->>213070643358494:-COMMAND COMPLETE command='SET' +server-->>213070643358494:-READY FOR QUERY type= +213070643358494->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643358494->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358494->>server:+EXECUTE name='', nb_rows=1 +213070643358494->>server:+SYNC +server-->>213070643358494:-PARSE COMPLETE +server-->>213070643358494:-BIND COMPLETE +server-->>213070643358494:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643358494:-COMMAND COMPLETE command='SET' +server-->>213070643358494:-READY FOR QUERY type= +213070643358494->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358494->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358494->>server:+DESCRIBE kind='P', name='' +213070643358494->>server:+EXECUTE name='', nb_rows=1 +213070643358494->>server:+SYNC +server-->>213070643358494:-PARSE COMPLETE +server-->>213070643358494:-BIND COMPLETE +server-->>213070643358494:-NO DATA +server-->>213070643358494:-EMPTY QUERY RESPONSE +server-->>213070643358494:-READY FOR QUERY type= +213070643358494->>server:+PARSE name='', num_params=0, params_type=, query=select pg_terminate_backend(413235241) +213070643358494->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358494->>server:+DESCRIBE kind='P', name='' +213070643358494->>server:+EXECUTE name='', nb_rows=0 +213070643358494->>server:+SYNC +server-->>213070643358494:-PARSE COMPLETE +server-->>213070643358494:-BIND COMPLETE +server-->>213070643358494:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='pg_terminate_backend' type=16 type_len=1 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643358494:-DATA ROW num_values=1 ---[Value 0001]--- length=1 value='t' +server-->>213070643358494:-COMMAND COMPLETE command='SELECT 1' +server-->>213070643358486:-PARSE COMPLETE +server-->>213070643358486:-BIND COMPLETE +server-->>213070643358486:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='count' type=20 type_len=8 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643358486:-ERROR RESPONSE Severity: 'FATAL' Message: 'terminating connection due to administrator command' Code: '57P01' +server-->>213070643358494:-READY FOR QUERY type= +213070643358490->>server:+DISCONNECT +213070643358494->>server:+DISCONNECT +213070643358496->>server:+SSL REQUEST +server-->>213070643358496:-SSL BACKEND ANSWER: N +213070643358496->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643358496:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643358496:-PARAMETER STATUS name='application_name', value='' +server-->>213070643358496:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643358496:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643358496:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643358496:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643358496:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643358496:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643358496:-PARAMETER STATUS name='server_version', value='13.0.0' +server-->>213070643358496:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643358496:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643358496:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643358496:-BACKEND KEY DATA pid=841257432, key=992978867 +server-->>213070643358496:-READY FOR QUERY type= +213070643358496->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643358496->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358496->>server:+EXECUTE name='', nb_rows=1 +213070643358496->>server:+SYNC +server-->>213070643358496:-PARSE COMPLETE +server-->>213070643358496:-BIND COMPLETE +server-->>213070643358496:-COMMAND COMPLETE command='SET' +server-->>213070643358496:-READY FOR QUERY type= +213070643358496->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643358496->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358496->>server:+EXECUTE name='', nb_rows=1 +213070643358496->>server:+SYNC +server-->>213070643358496:-PARSE COMPLETE +server-->>213070643358496:-BIND COMPLETE +server-->>213070643358496:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643358496:-COMMAND COMPLETE command='SET' +server-->>213070643358496:-READY FOR QUERY type= +213070643358496->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358496->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358496->>server:+DESCRIBE kind='P', name='' +213070643358496->>server:+EXECUTE name='', nb_rows=1 +213070643358496->>server:+SYNC +server-->>213070643358496:-PARSE COMPLETE +server-->>213070643358496:-BIND COMPLETE +server-->>213070643358496:-NO DATA +server-->>213070643358496:-EMPTY QUERY RESPONSE +server-->>213070643358496:-READY FOR QUERY type= +213070643358496->>server:+DISCONNECT +213070643358498->>server:+SSL REQUEST +server-->>213070643358498:-SSL BACKEND ANSWER: N +213070643358498->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643358498:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643358498:-PARAMETER STATUS name='application_name', value='' +server-->>213070643358498:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643358498:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643358498:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643358498:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643358498:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643358498:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643358498:-PARAMETER STATUS name='server_version', value='13.0.0' +server-->>213070643358498:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643358498:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643358498:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643358498:-BACKEND KEY DATA pid=645931978, key=579078180 +server-->>213070643358498:-READY FOR QUERY type= +213070643358498->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643358498->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358498->>server:+EXECUTE name='', nb_rows=1 +213070643358498->>server:+SYNC +server-->>213070643358498:-PARSE COMPLETE +server-->>213070643358498:-BIND COMPLETE +server-->>213070643358498:-COMMAND COMPLETE command='SET' +server-->>213070643358498:-READY FOR QUERY type= +213070643358498->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643358498->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358498->>server:+EXECUTE name='', nb_rows=1 +213070643358498->>server:+SYNC +server-->>213070643358498:-PARSE COMPLETE +server-->>213070643358498:-BIND COMPLETE +server-->>213070643358498:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643358498:-COMMAND COMPLETE command='SET' +server-->>213070643358498:-READY FOR QUERY type= +213070643358498->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358498->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358498->>server:+DESCRIBE kind='P', name='' +213070643358498->>server:+EXECUTE name='', nb_rows=1 +213070643358498->>server:+SYNC +server-->>213070643358498:-PARSE COMPLETE +server-->>213070643358498:-BIND COMPLETE +server-->>213070643358498:-NO DATA +server-->>213070643358498:-EMPTY QUERY RESPONSE +server-->>213070643358498:-READY FOR QUERY type= +213070643358498->>server:+PARSE name='', num_params=0, params_type=, query=SELECT 1 +213070643358498->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358498->>server:+DESCRIBE kind='P', name='' +213070643358498->>server:+EXECUTE name='', nb_rows=0 +213070643358498->>server:+SYNC +server-->>213070643358498:-PARSE COMPLETE +server-->>213070643358498:-BIND COMPLETE +server-->>213070643358498:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='?column?' type=23 type_len=4 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643358498:-DATA ROW num_values=1 ---[Value 0001]--- length=1 value='1' +server-->>213070643358498:-COMMAND COMPLETE command='SELECT' +server-->>213070643358498:-READY FOR QUERY type= +213070643358498->>server:+DISCONNECT +213070643358500->>server:+SSL REQUEST +server-->>213070643358500:-SSL BACKEND ANSWER: N +213070643358500->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643358500:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643358500:-PARAMETER STATUS name='application_name', value='' +server-->>213070643358500:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643358500:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643358500:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643358500:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643358500:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643358500:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643358500:-PARAMETER STATUS name='server_version', value='13.0.0' +server-->>213070643358500:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643358500:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643358500:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643358500:-BACKEND KEY DATA pid=1632401438, key=1341645778 +server-->>213070643358500:-READY FOR QUERY type= +213070643358500->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643358500->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358500->>server:+EXECUTE name='', nb_rows=1 +213070643358500->>server:+SYNC +server-->>213070643358500:-PARSE COMPLETE +server-->>213070643358500:-BIND COMPLETE +server-->>213070643358500:-COMMAND COMPLETE command='SET' +server-->>213070643358500:-READY FOR QUERY type= +213070643358500->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643358500->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358500->>server:+EXECUTE name='', nb_rows=1 +213070643358500->>server:+SYNC +server-->>213070643358500:-PARSE COMPLETE +server-->>213070643358500:-BIND COMPLETE +server-->>213070643358500:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643358500:-COMMAND COMPLETE command='SET' +server-->>213070643358500:-READY FOR QUERY type= +213070643358500->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358500->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358500->>server:+DESCRIBE kind='P', name='' +213070643358500->>server:+EXECUTE name='', nb_rows=1 +213070643358500->>server:+SYNC +server-->>213070643358500:-PARSE COMPLETE +server-->>213070643358500:-BIND COMPLETE +server-->>213070643358500:-NO DATA +server-->>213070643358500:-EMPTY QUERY RESPONSE +server-->>213070643358500:-READY FOR QUERY type= +213070643358500->>server:+DISCONNECT +213070643358502->>server:+SSL REQUEST +server-->>213070643358502:-SSL BACKEND ANSWER: N +213070643358502->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643358502:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643358502:-PARAMETER STATUS name='application_name', value='' +server-->>213070643358502:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643358502:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643358502:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643358502:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643358502:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643358502:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643358502:-PARAMETER STATUS name='server_version', value='13.0.0' +server-->>213070643358502:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643358502:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643358502:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643358502:-BACKEND KEY DATA pid=232586748, key=226557416 +server-->>213070643358502:-READY FOR QUERY type= +213070643358502->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643358502->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358502->>server:+EXECUTE name='', nb_rows=1 +213070643358502->>server:+SYNC +server-->>213070643358502:-PARSE COMPLETE +server-->>213070643358502:-BIND COMPLETE +server-->>213070643358502:-COMMAND COMPLETE command='SET' +server-->>213070643358502:-READY FOR QUERY type= +213070643358502->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643358502->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358502->>server:+EXECUTE name='', nb_rows=1 +213070643358502->>server:+SYNC +server-->>213070643358502:-PARSE COMPLETE +server-->>213070643358502:-BIND COMPLETE +server-->>213070643358502:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643358502:-COMMAND COMPLETE command='SET' +server-->>213070643358502:-READY FOR QUERY type= +213070643358502->>server:+PARSE name='', num_params=0, params_type=, query= +213070643358502->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358502->>server:+DESCRIBE kind='P', name='' +213070643358502->>server:+EXECUTE name='', nb_rows=1 +213070643358502->>server:+SYNC +server-->>213070643358502:-PARSE COMPLETE +server-->>213070643358502:-BIND COMPLETE +server-->>213070643358502:-NO DATA +server-->>213070643358502:-EMPTY QUERY RESPONSE +server-->>213070643358502:-READY FOR QUERY type= +213070643358502->>server:+PARSE name='', num_params=0, params_type=, query=SELECT VERSION() AS version +213070643358502->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643358502->>server:+DESCRIBE kind='P', name='' +213070643358502->>server:+EXECUTE name='', nb_rows=0 +213070643358502->>server:+SYNC +server-->>213070643358502:-PARSE COMPLETE +server-->>213070643358502:-BIND COMPLETE +server-->>213070643358502:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='version' type=25 type_len=65535 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643358502:-DATA ROW num_values=1 ---[Value 0001]--- length=27 value='PostgresSQL 13.0 (molecula)' +server-->>213070643358502:-COMMAND COMPLETE command='SELECT' +server-->>213070643358502:-READY FOR QUERY type= +213070643358502->>server:+DISCONNECT +``` diff --git a/pg/lookerToPostgres.md b/pg/lookerToPostgres.md new file mode 100644 index 000000000..53ef945be --- /dev/null +++ b/pg/lookerToPostgres.md @@ -0,0 +1,677 @@ +```mermaid +sequenceDiagram + +participant 213070643360888 as c0 +participant 213070643360892 as c1 +participant 213070643360896 as c2 +participant 213070643360900 as c3 +participant 213070643360904 as c4 +participant 213070643360908 as c5 +participant 213070643360912 as c6 +participant 213070643360916 as c7 +participant 213070643360920 as c8 +participant 213070643360924 as c9 +participant 213070643360928 as c10 +participant 213070643360932 as c11 +213070643360888->>server:+SSL REQUEST +server-->>213070643360888:-SSL BACKEND ANSWER: N +213070643360888->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643360888:-AUTHENTIFICATION REQUEST code=5 (MD5 salt='affbc4bf') +213070643360888->>server:+PASSWORD MESSAGE password=md5de1ae46649b137ee14e14d8fd5fc6cb6 +server-->>213070643360888:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643360888:-PARAMETER STATUS name='application_name', value='' +server-->>213070643360888:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643360888:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643360888:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643360888:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643360888:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643360888:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643360888:-PARAMETER STATUS name='server_version', value='13.3 (Debian 13.3-1.pgdg100+1)' +server-->>213070643360888:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643360888:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643360888:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643360888:-BACKEND KEY DATA pid=97, key=2120775944 +server-->>213070643360888:-READY FOR QUERY type= +213070643360888->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643360888->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360888->>server:+EXECUTE name='', nb_rows=1 +213070643360888->>server:+SYNC +server-->>213070643360888:-PARSE COMPLETE +server-->>213070643360888:-BIND COMPLETE +server-->>213070643360888:-COMMAND COMPLETE command='SET' +server-->>213070643360888:-READY FOR QUERY type= +213070643360888->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643360888->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360888->>server:+EXECUTE name='', nb_rows=1 +213070643360888->>server:+SYNC +server-->>213070643360888:-PARSE COMPLETE +server-->>213070643360888:-BIND COMPLETE +server-->>213070643360888:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643360888:-COMMAND COMPLETE command='SET' +server-->>213070643360888:-READY FOR QUERY type= +213070643360888->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360888->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360888->>server:+DESCRIBE kind='P', name='' +213070643360888->>server:+EXECUTE name='', nb_rows=1 +213070643360888->>server:+SYNC +server-->>213070643360888:-PARSE COMPLETE +server-->>213070643360888:-BIND COMPLETE +server-->>213070643360888:-NO DATA +server-->>213070643360888:-EMPTY QUERY RESPONSE +server-->>213070643360888:-READY FOR QUERY type= +213070643360888->>server:+DISCONNECT +213070643360892->>server:+SSL REQUEST +server-->>213070643360892:-SSL BACKEND ANSWER: N +213070643360892->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643360892:-AUTHENTIFICATION REQUEST code=5 (MD5 salt='0b76ce86') +213070643360892->>server:+PASSWORD MESSAGE password=md5b82e4b6283fe5694c0199ca058378bb8 +server-->>213070643360892:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643360892:-PARAMETER STATUS name='application_name', value='' +server-->>213070643360892:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643360892:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643360892:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643360892:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643360892:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643360892:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643360892:-PARAMETER STATUS name='server_version', value='13.3 (Debian 13.3-1.pgdg100+1)' +server-->>213070643360892:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643360892:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643360892:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643360892:-BACKEND KEY DATA pid=98, key=1329847468 +server-->>213070643360892:-READY FOR QUERY type= +213070643360892->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643360892->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360892->>server:+EXECUTE name='', nb_rows=1 +213070643360892->>server:+SYNC +server-->>213070643360892:-PARSE COMPLETE +server-->>213070643360892:-BIND COMPLETE +server-->>213070643360892:-COMMAND COMPLETE command='SET' +server-->>213070643360892:-READY FOR QUERY type= +213070643360892->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643360892->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360892->>server:+EXECUTE name='', nb_rows=1 +213070643360892->>server:+SYNC +server-->>213070643360892:-PARSE COMPLETE +server-->>213070643360892:-BIND COMPLETE +server-->>213070643360892:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643360892:-COMMAND COMPLETE command='SET' +server-->>213070643360892:-READY FOR QUERY type= +213070643360892->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360892->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360892->>server:+DESCRIBE kind='P', name='' +213070643360892->>server:+EXECUTE name='', nb_rows=1 +213070643360892->>server:+SYNC +server-->>213070643360892:-PARSE COMPLETE +server-->>213070643360892:-BIND COMPLETE +server-->>213070643360892:-NO DATA +server-->>213070643360892:-EMPTY QUERY RESPONSE +server-->>213070643360892:-READY FOR QUERY type= +213070643360892->>server:+DISCONNECT +213070643360896->>server:+SSL REQUEST +server-->>213070643360896:-SSL BACKEND ANSWER: N +213070643360896->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643360896:-AUTHENTIFICATION REQUEST code=5 (MD5 salt='80e88231') +213070643360896->>server:+PASSWORD MESSAGE password=md59023db05ad8c94976359641cf0ada45a +server-->>213070643360896:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643360896:-PARAMETER STATUS name='application_name', value='' +server-->>213070643360896:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643360896:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643360896:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643360896:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643360896:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643360896:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643360896:-PARAMETER STATUS name='server_version', value='13.3 (Debian 13.3-1.pgdg100+1)' +server-->>213070643360896:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643360896:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643360896:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643360896:-BACKEND KEY DATA pid=99, key=1084480878 +server-->>213070643360896:-READY FOR QUERY type= +213070643360896->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643360896->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360896->>server:+EXECUTE name='', nb_rows=1 +213070643360896->>server:+SYNC +server-->>213070643360896:-PARSE COMPLETE +server-->>213070643360896:-BIND COMPLETE +server-->>213070643360896:-COMMAND COMPLETE command='SET' +server-->>213070643360896:-READY FOR QUERY type= +213070643360896->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643360896->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360896->>server:+EXECUTE name='', nb_rows=1 +213070643360896->>server:+SYNC +server-->>213070643360896:-PARSE COMPLETE +server-->>213070643360896:-BIND COMPLETE +server-->>213070643360896:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643360896:-COMMAND COMPLETE command='SET' +server-->>213070643360896:-READY FOR QUERY type= +213070643360896->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360896->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360896->>server:+DESCRIBE kind='P', name='' +213070643360896->>server:+EXECUTE name='', nb_rows=1 +213070643360896->>server:+SYNC +server-->>213070643360896:-PARSE COMPLETE +server-->>213070643360896:-BIND COMPLETE +server-->>213070643360896:-NO DATA +server-->>213070643360896:-EMPTY QUERY RESPONSE +server-->>213070643360896:-READY FOR QUERY type= +213070643360896->>server:+DISCONNECT +213070643360900->>server:+SSL REQUEST +server-->>213070643360900:-SSL BACKEND ANSWER: N +213070643360900->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643360900:-AUTHENTIFICATION REQUEST code=5 (MD5 salt='68a07783') +213070643360900->>server:+PASSWORD MESSAGE password=md5136c8b8ec47347f93827ec5d7023199c +server-->>213070643360900:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643360900:-PARAMETER STATUS name='application_name', value='' +server-->>213070643360900:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643360900:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643360900:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643360900:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643360900:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643360900:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643360900:-PARAMETER STATUS name='server_version', value='13.3 (Debian 13.3-1.pgdg100+1)' +server-->>213070643360900:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643360900:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643360900:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643360900:-BACKEND KEY DATA pid=100, key=594556468 +server-->>213070643360900:-READY FOR QUERY type= +213070643360900->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643360900->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360900->>server:+EXECUTE name='', nb_rows=1 +213070643360900->>server:+SYNC +server-->>213070643360900:-PARSE COMPLETE +server-->>213070643360900:-BIND COMPLETE +server-->>213070643360900:-COMMAND COMPLETE command='SET' +server-->>213070643360900:-READY FOR QUERY type= +213070643360900->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643360900->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360900->>server:+EXECUTE name='', nb_rows=1 +213070643360900->>server:+SYNC +server-->>213070643360900:-PARSE COMPLETE +server-->>213070643360900:-BIND COMPLETE +server-->>213070643360900:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643360900:-COMMAND COMPLETE command='SET' +server-->>213070643360900:-READY FOR QUERY type= +213070643360900->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360900->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360900->>server:+DESCRIBE kind='P', name='' +213070643360900->>server:+EXECUTE name='', nb_rows=1 +213070643360900->>server:+SYNC +server-->>213070643360900:-PARSE COMPLETE +server-->>213070643360900:-BIND COMPLETE +server-->>213070643360900:-NO DATA +server-->>213070643360900:-EMPTY QUERY RESPONSE +server-->>213070643360900:-READY FOR QUERY type= +213070643360900->>server:+PARSE name='', num_params=0, params_type=, query=SELECT pg_backend_pid() +213070643360900->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360900->>server:+DESCRIBE kind='P', name='' +213070643360900->>server:+EXECUTE name='', nb_rows=0 +213070643360900->>server:+SYNC +server-->>213070643360900:-PARSE COMPLETE +server-->>213070643360900:-BIND COMPLETE +server-->>213070643360900:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='pg_backend_pid' type=23 type_len=4 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643360900:-DATA ROW num_values=1 ---[Value 0001]--- length=3 value='100' +server-->>213070643360900:-COMMAND COMPLETE command='SELECT 1' +server-->>213070643360900:-READY FOR QUERY type= +213070643360900->>server:+PARSE name='', num_params=0, params_type=, query=SELECT VERSION() AS version +213070643360900->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360900->>server:+DESCRIBE kind='P', name='' +213070643360900->>server:+EXECUTE name='', nb_rows=0 +213070643360900->>server:+SYNC +server-->>213070643360900:-PARSE COMPLETE +server-->>213070643360900:-BIND COMPLETE +server-->>213070643360900:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='version' type=25 type_len=65535 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643360900:-DATA ROW num_values=1 ---[Value 0001]--- length=112 value='PostgreSQL 13.3 (Debian 13.3-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit' +server-->>213070643360900:-COMMAND COMPLETE command='SELECT 1' +server-->>213070643360900:-READY FOR QUERY type= +213070643360900->>server:+PARSE name='', num_params=0, params_type=, query= SELECT COUNT(*) FROM pg_type AS t0, pg_aggregate AS t1, pg_settings AS t2, pg_settings AS t3 +213070643360900->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360900->>server:+DESCRIBE kind='P', name='' +213070643360900->>server:+EXECUTE name='', nb_rows=0 +213070643360900->>server:+SYNC +213070643360904->>server:+SSL REQUEST +server-->>213070643360904:-SSL BACKEND ANSWER: N +213070643360904->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643360904:-AUTHENTIFICATION REQUEST code=5 (MD5 salt='a03ee692') +213070643360904->>server:+PASSWORD MESSAGE password=md5cfedb52ae0cafa87a4f1066df3ba6802 +server-->>213070643360904:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643360904:-PARAMETER STATUS name='application_name', value='' +server-->>213070643360904:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643360904:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643360904:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643360904:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643360904:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643360904:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643360904:-PARAMETER STATUS name='server_version', value='13.3 (Debian 13.3-1.pgdg100+1)' +server-->>213070643360904:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643360904:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643360904:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643360904:-BACKEND KEY DATA pid=101, key=2854304053 +server-->>213070643360904:-READY FOR QUERY type= +213070643360904->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643360904->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360904->>server:+EXECUTE name='', nb_rows=1 +213070643360904->>server:+SYNC +server-->>213070643360904:-PARSE COMPLETE +server-->>213070643360904:-BIND COMPLETE +server-->>213070643360904:-COMMAND COMPLETE command='SET' +server-->>213070643360904:-READY FOR QUERY type= +213070643360904->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643360904->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360904->>server:+EXECUTE name='', nb_rows=1 +213070643360904->>server:+SYNC +server-->>213070643360904:-PARSE COMPLETE +server-->>213070643360904:-BIND COMPLETE +server-->>213070643360904:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643360904:-COMMAND COMPLETE command='SET' +server-->>213070643360904:-READY FOR QUERY type= +213070643360904->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360904->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360904->>server:+DESCRIBE kind='P', name='' +213070643360904->>server:+EXECUTE name='', nb_rows=1 +213070643360904->>server:+SYNC +server-->>213070643360904:-PARSE COMPLETE +server-->>213070643360904:-BIND COMPLETE +server-->>213070643360904:-NO DATA +server-->>213070643360904:-EMPTY QUERY RESPONSE +server-->>213070643360904:-READY FOR QUERY type= +213070643360904->>server:+DISCONNECT +213070643360908->>server:+SSL REQUEST +server-->>213070643360908:-SSL BACKEND ANSWER: N +213070643360908->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643360908:-AUTHENTIFICATION REQUEST code=5 (MD5 salt='be3afb9d') +213070643360908->>server:+PASSWORD MESSAGE password=md57b5cfa30f89fc7733c814addcd548c03 +server-->>213070643360908:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643360908:-PARAMETER STATUS name='application_name', value='' +server-->>213070643360908:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643360908:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643360908:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643360908:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643360908:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643360908:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643360908:-PARAMETER STATUS name='server_version', value='13.3 (Debian 13.3-1.pgdg100+1)' +server-->>213070643360908:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643360908:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643360908:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643360908:-BACKEND KEY DATA pid=102, key=3089396074 +server-->>213070643360908:-READY FOR QUERY type= +213070643360908->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643360908->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360908->>server:+EXECUTE name='', nb_rows=1 +213070643360908->>server:+SYNC +server-->>213070643360908:-PARSE COMPLETE +server-->>213070643360908:-BIND COMPLETE +server-->>213070643360908:-COMMAND COMPLETE command='SET' +server-->>213070643360908:-READY FOR QUERY type= +213070643360908->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643360908->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360908->>server:+EXECUTE name='', nb_rows=1 +213070643360908->>server:+SYNC +server-->>213070643360908:-PARSE COMPLETE +server-->>213070643360908:-BIND COMPLETE +server-->>213070643360908:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643360908:-COMMAND COMPLETE command='SET' +server-->>213070643360908:-READY FOR QUERY type= +213070643360908->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360908->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360908->>server:+DESCRIBE kind='P', name='' +213070643360908->>server:+EXECUTE name='', nb_rows=1 +213070643360908->>server:+SYNC +server-->>213070643360908:-PARSE COMPLETE +server-->>213070643360908:-BIND COMPLETE +server-->>213070643360908:-NO DATA +server-->>213070643360908:-EMPTY QUERY RESPONSE +server-->>213070643360908:-READY FOR QUERY type= +213070643360908->>server:+PARSE name='', num_params=0, params_type=, query=SELECT VERSION() AS version +213070643360908->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360908->>server:+DESCRIBE kind='P', name='' +213070643360908->>server:+EXECUTE name='', nb_rows=0 +213070643360908->>server:+SYNC +server-->>213070643360908:-PARSE COMPLETE +server-->>213070643360908:-BIND COMPLETE +server-->>213070643360908:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='version' type=25 type_len=65535 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643360908:-DATA ROW num_values=1 ---[Value 0001]--- length=112 value='PostgreSQL 13.3 (Debian 13.3-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit' +server-->>213070643360908:-COMMAND COMPLETE command='SELECT 1' +server-->>213070643360908:-READY FOR QUERY type= +213070643360908->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360908->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360908->>server:+DESCRIBE kind='P', name='' +213070643360908->>server:+EXECUTE name='', nb_rows=1 +213070643360908->>server:+SYNC +server-->>213070643360908:-PARSE COMPLETE +server-->>213070643360908:-BIND COMPLETE +server-->>213070643360908:-NO DATA +server-->>213070643360908:-EMPTY QUERY RESPONSE +server-->>213070643360908:-READY FOR QUERY type= +213070643360908->>server:+PARSE name='', num_params=0, params_type=, query= SELECT pid as id, query as stmt, EXTRACT(seconds from query_start - NOW()) as elapsed_time FROM pg_stat_activity WHERE usename='docker' +213070643360908->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360908->>server:+DESCRIBE kind='P', name='' +213070643360908->>server:+EXECUTE name='', nb_rows=0 +213070643360908->>server:+SYNC +server-->>213070643360908:-PARSE COMPLETE +server-->>213070643360908:-BIND COMPLETE +server-->>213070643360908:-ROW DESCRIPTION: num_fields=3 ---[Field 01]--- name='id' type=23 type_len=4 type_mod=4294967295 relid=12250 attnum=3 format=0 ---[Field 02]--- name='stmt' type=25 type_len=65535 type_mod=4294967295 relid=12250 attnum=20 format=0 ---[Field 03]--- name='elapsed_time' type=701 type_len=8 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643360908:-DATA ROW num_values=3 ---[Value 0001]--- length=2 value='81' ---[Value 0002]--- length=0 value='' ---[Value 0003]--- length=-1 value=NULL +server-->>213070643360908:-DATA ROW num_values=3 ---[Value 0001]--- length=3 value='100' ---[Value 0002]--- length=148 value=' SELECT COUNT(*). FROM pg_type AS t0,. pg_aggregate AS t1,. pg_settings AS t2,. pg_settings AS t3.' ---[Value 0003]--- length=9 value='-1.155449' +server-->>213070643360908:-DATA ROW num_values=3 ---[Value 0001]--- length=3 value='102' ---[Value 0002]--- length=190 value=' SELECT pid as id,. query as stmt,. EXTRACT(seconds from query_start - NOW()) as elapsed_time. FROM pg_stat_activity. WHERE usename='docker'.' ---[Value 0003]--- length=8 value='0.002903' +server-->>213070643360908:-COMMAND COMPLETE command='SELECT 3' +server-->>213070643360908:-READY FOR QUERY type= +213070643360912->>server:+SSL REQUEST +server-->>213070643360912:-SSL BACKEND ANSWER: N +213070643360912->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643360912:-AUTHENTIFICATION REQUEST code=5 (MD5 salt='14444412') +213070643360912->>server:+PASSWORD MESSAGE password=md59cef18c88b7988d7ac2f215fc1569c62 +server-->>213070643360912:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643360912:-PARAMETER STATUS name='application_name', value='' +server-->>213070643360912:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643360912:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643360912:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643360912:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643360912:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643360912:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643360912:-PARAMETER STATUS name='server_version', value='13.3 (Debian 13.3-1.pgdg100+1)' +server-->>213070643360912:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643360912:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643360912:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643360912:-BACKEND KEY DATA pid=103, key=1911102642 +server-->>213070643360912:-READY FOR QUERY type= +213070643360912->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643360912->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360912->>server:+EXECUTE name='', nb_rows=1 +213070643360912->>server:+SYNC +server-->>213070643360912:-PARSE COMPLETE +server-->>213070643360912:-BIND COMPLETE +server-->>213070643360912:-COMMAND COMPLETE command='SET' +server-->>213070643360912:-READY FOR QUERY type= +213070643360912->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643360912->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360912->>server:+EXECUTE name='', nb_rows=1 +213070643360912->>server:+SYNC +server-->>213070643360912:-PARSE COMPLETE +server-->>213070643360912:-BIND COMPLETE +server-->>213070643360912:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643360912:-COMMAND COMPLETE command='SET' +server-->>213070643360912:-READY FOR QUERY type= +213070643360912->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360912->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360912->>server:+DESCRIBE kind='P', name='' +213070643360912->>server:+EXECUTE name='', nb_rows=1 +213070643360912->>server:+SYNC +server-->>213070643360912:-PARSE COMPLETE +server-->>213070643360912:-BIND COMPLETE +server-->>213070643360912:-NO DATA +server-->>213070643360912:-EMPTY QUERY RESPONSE +server-->>213070643360912:-READY FOR QUERY type= +213070643360912->>server:+DISCONNECT +213070643360916->>server:+SSL REQUEST +server-->>213070643360916:-SSL BACKEND ANSWER: N +213070643360916->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643360916:-AUTHENTIFICATION REQUEST code=5 (MD5 salt='9eb7546f') +213070643360916->>server:+PASSWORD MESSAGE password=md5c7655226306ab14fa17e44dba876a348 +server-->>213070643360916:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643360916:-PARAMETER STATUS name='application_name', value='' +server-->>213070643360916:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643360916:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643360916:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643360916:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643360916:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643360916:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643360916:-PARAMETER STATUS name='server_version', value='13.3 (Debian 13.3-1.pgdg100+1)' +server-->>213070643360916:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643360916:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643360916:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643360916:-BACKEND KEY DATA pid=104, key=927987783 +server-->>213070643360916:-READY FOR QUERY type= +213070643360916->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643360916->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360916->>server:+EXECUTE name='', nb_rows=1 +213070643360916->>server:+SYNC +server-->>213070643360916:-PARSE COMPLETE +server-->>213070643360916:-BIND COMPLETE +server-->>213070643360916:-COMMAND COMPLETE command='SET' +server-->>213070643360916:-READY FOR QUERY type= +213070643360916->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643360916->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360916->>server:+EXECUTE name='', nb_rows=1 +213070643360916->>server:+SYNC +server-->>213070643360916:-PARSE COMPLETE +server-->>213070643360916:-BIND COMPLETE +server-->>213070643360916:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643360916:-COMMAND COMPLETE command='SET' +server-->>213070643360916:-READY FOR QUERY type= +213070643360916->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360916->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360916->>server:+DESCRIBE kind='P', name='' +213070643360916->>server:+EXECUTE name='', nb_rows=1 +213070643360916->>server:+SYNC +server-->>213070643360916:-PARSE COMPLETE +server-->>213070643360916:-BIND COMPLETE +server-->>213070643360916:-NO DATA +server-->>213070643360916:-EMPTY QUERY RESPONSE +server-->>213070643360916:-READY FOR QUERY type= +213070643360916->>server:+PARSE name='', num_params=0, params_type=, query=select pg_terminate_backend(100) +213070643360916->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360916->>server:+DESCRIBE kind='P', name='' +213070643360916->>server:+EXECUTE name='', nb_rows=0 +213070643360916->>server:+SYNC +server-->>213070643360916:-PARSE COMPLETE +server-->>213070643360916:-BIND COMPLETE +server-->>213070643360916:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='pg_terminate_backend' type=16 type_len=1 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643360916:-DATA ROW num_values=1 ---[Value 0001]--- length=1 value='t' +server-->>213070643360916:-COMMAND COMPLETE command='SELECT 1' +server-->>213070643360916:-READY FOR QUERY type= +server-->>213070643360900:-PARSE COMPLETE +server-->>213070643360900:-BIND COMPLETE +server-->>213070643360900:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='count' type=20 type_len=8 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643360900:-ERROR RESPONSE File: 'postgres.c' Severity: 'FATAL' Message: 'terminating connection due to administrator command' Code: '57P01' Routine: 'ProcessInterrupts' Line: '3090' +213070643360908->>server:+DISCONNECT +213070643360916->>server:+DISCONNECT +213070643360920->>server:+SSL REQUEST +server-->>213070643360920:-SSL BACKEND ANSWER: N +213070643360920->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643360920:-AUTHENTIFICATION REQUEST code=5 (MD5 salt='1ad4dcf7') +213070643360920->>server:+PASSWORD MESSAGE password=md554de511c5219f67a8bbe92da445fa5a2 +server-->>213070643360920:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643360920:-PARAMETER STATUS name='application_name', value='' +server-->>213070643360920:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643360920:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643360920:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643360920:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643360920:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643360920:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643360920:-PARAMETER STATUS name='server_version', value='13.3 (Debian 13.3-1.pgdg100+1)' +server-->>213070643360920:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643360920:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643360920:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643360920:-BACKEND KEY DATA pid=105, key=3630332440 +server-->>213070643360920:-READY FOR QUERY type= +213070643360920->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643360920->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360920->>server:+EXECUTE name='', nb_rows=1 +213070643360920->>server:+SYNC +server-->>213070643360920:-PARSE COMPLETE +server-->>213070643360920:-BIND COMPLETE +server-->>213070643360920:-COMMAND COMPLETE command='SET' +server-->>213070643360920:-READY FOR QUERY type= +213070643360920->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643360920->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360920->>server:+EXECUTE name='', nb_rows=1 +213070643360920->>server:+SYNC +server-->>213070643360920:-PARSE COMPLETE +server-->>213070643360920:-BIND COMPLETE +server-->>213070643360920:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643360920:-COMMAND COMPLETE command='SET' +server-->>213070643360920:-READY FOR QUERY type= +213070643360920->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360920->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360920->>server:+DESCRIBE kind='P', name='' +213070643360920->>server:+EXECUTE name='', nb_rows=1 +213070643360920->>server:+SYNC +server-->>213070643360920:-PARSE COMPLETE +server-->>213070643360920:-BIND COMPLETE +server-->>213070643360920:-NO DATA +server-->>213070643360920:-EMPTY QUERY RESPONSE +server-->>213070643360920:-READY FOR QUERY type= +213070643360920->>server:+DISCONNECT +213070643360924->>server:+SSL REQUEST +server-->>213070643360924:-SSL BACKEND ANSWER: N +213070643360924->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643360924:-AUTHENTIFICATION REQUEST code=5 (MD5 salt='494c352f') +213070643360924->>server:+PASSWORD MESSAGE password=md5919fc9ed056904fa0d8e1dd00625a556 +server-->>213070643360924:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643360924:-PARAMETER STATUS name='application_name', value='' +server-->>213070643360924:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643360924:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643360924:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643360924:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643360924:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643360924:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643360924:-PARAMETER STATUS name='server_version', value='13.3 (Debian 13.3-1.pgdg100+1)' +server-->>213070643360924:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643360924:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643360924:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643360924:-BACKEND KEY DATA pid=106, key=3364308023 +server-->>213070643360924:-READY FOR QUERY type= +213070643360924->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643360924->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360924->>server:+EXECUTE name='', nb_rows=1 +213070643360924->>server:+SYNC +server-->>213070643360924:-PARSE COMPLETE +server-->>213070643360924:-BIND COMPLETE +server-->>213070643360924:-COMMAND COMPLETE command='SET' +server-->>213070643360924:-READY FOR QUERY type= +213070643360924->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643360924->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360924->>server:+EXECUTE name='', nb_rows=1 +213070643360924->>server:+SYNC +server-->>213070643360924:-PARSE COMPLETE +server-->>213070643360924:-BIND COMPLETE +server-->>213070643360924:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643360924:-COMMAND COMPLETE command='SET' +server-->>213070643360924:-READY FOR QUERY type= +213070643360924->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360924->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360924->>server:+DESCRIBE kind='P', name='' +213070643360924->>server:+EXECUTE name='', nb_rows=1 +213070643360924->>server:+SYNC +server-->>213070643360924:-PARSE COMPLETE +server-->>213070643360924:-BIND COMPLETE +server-->>213070643360924:-NO DATA +server-->>213070643360924:-EMPTY QUERY RESPONSE +server-->>213070643360924:-READY FOR QUERY type= +213070643360924->>server:+PARSE name='', num_params=0, params_type=, query=SELECT 1 +213070643360924->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360924->>server:+DESCRIBE kind='P', name='' +213070643360924->>server:+EXECUTE name='', nb_rows=0 +213070643360924->>server:+SYNC +server-->>213070643360924:-PARSE COMPLETE +server-->>213070643360924:-BIND COMPLETE +server-->>213070643360924:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='?column?' type=23 type_len=4 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643360924:-DATA ROW num_values=1 ---[Value 0001]--- length=1 value='1' +server-->>213070643360924:-COMMAND COMPLETE command='SELECT 1' +server-->>213070643360924:-READY FOR QUERY type= +213070643360924->>server:+DISCONNECT +213070643360928->>server:+SSL REQUEST +server-->>213070643360928:-SSL BACKEND ANSWER: N +213070643360928->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643360928:-AUTHENTIFICATION REQUEST code=5 (MD5 salt='4b2173db') +213070643360928->>server:+PASSWORD MESSAGE password=md53977c39c5c7cdef7f80e74b256a8ce25 +server-->>213070643360928:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643360928:-PARAMETER STATUS name='application_name', value='' +server-->>213070643360928:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643360928:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643360928:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643360928:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643360928:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643360928:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643360928:-PARAMETER STATUS name='server_version', value='13.3 (Debian 13.3-1.pgdg100+1)' +server-->>213070643360928:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643360928:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643360928:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643360928:-BACKEND KEY DATA pid=107, key=1988416582 +server-->>213070643360928:-READY FOR QUERY type= +213070643360928->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643360928->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360928->>server:+EXECUTE name='', nb_rows=1 +213070643360928->>server:+SYNC +server-->>213070643360928:-PARSE COMPLETE +server-->>213070643360928:-BIND COMPLETE +server-->>213070643360928:-COMMAND COMPLETE command='SET' +server-->>213070643360928:-READY FOR QUERY type= +213070643360928->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643360928->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360928->>server:+EXECUTE name='', nb_rows=1 +213070643360928->>server:+SYNC +server-->>213070643360928:-PARSE COMPLETE +server-->>213070643360928:-BIND COMPLETE +server-->>213070643360928:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643360928:-COMMAND COMPLETE command='SET' +server-->>213070643360928:-READY FOR QUERY type= +213070643360928->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360928->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360928->>server:+DESCRIBE kind='P', name='' +213070643360928->>server:+EXECUTE name='', nb_rows=1 +213070643360928->>server:+SYNC +server-->>213070643360928:-PARSE COMPLETE +server-->>213070643360928:-BIND COMPLETE +server-->>213070643360928:-NO DATA +server-->>213070643360928:-EMPTY QUERY RESPONSE +server-->>213070643360928:-READY FOR QUERY type= +213070643360928->>server:+DISCONNECT +213070643360932->>server:+SSL REQUEST +server-->>213070643360932:-SSL BACKEND ANSWER: N +213070643360932->>server:+STARTUP MESSAGE version: 3 database=trait_store extra_float_digits=2 TimeZone=GMT client_encoding=UTF8 user=docker DateStyle=ISO +server-->>213070643360932:-AUTHENTIFICATION REQUEST code=5 (MD5 salt='f6d0f51d') +213070643360932->>server:+PASSWORD MESSAGE password=md5b5b322fe9bcc7c242c6b44cc8a7898e8 +server-->>213070643360932:-AUTHENTIFICATION REQUEST code=0 (SUCCESS) +server-->>213070643360932:-PARAMETER STATUS name='application_name', value='' +server-->>213070643360932:-PARAMETER STATUS name='client_encoding', value='UTF8' +server-->>213070643360932:-PARAMETER STATUS name='DateStyle', value='ISO, MDY' +server-->>213070643360932:-PARAMETER STATUS name='integer_datetimes', value='on' +server-->>213070643360932:-PARAMETER STATUS name='IntervalStyle', value='postgres' +server-->>213070643360932:-PARAMETER STATUS name='is_superuser', value='on' +server-->>213070643360932:-PARAMETER STATUS name='server_encoding', value='UTF8' +server-->>213070643360932:-PARAMETER STATUS name='server_version', value='13.3 (Debian 13.3-1.pgdg100+1)' +server-->>213070643360932:-PARAMETER STATUS name='session_authorization', value='docker' +server-->>213070643360932:-PARAMETER STATUS name='standard_conforming_strings', value='on' +server-->>213070643360932:-PARAMETER STATUS name='TimeZone', value='GMT' +server-->>213070643360932:-BACKEND KEY DATA pid=108, key=997991029 +server-->>213070643360932:-READY FOR QUERY type= +213070643360932->>server:+PARSE name='', num_params=0, params_type=, query=SET extra_float_digits = 3 +213070643360932->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360932->>server:+EXECUTE name='', nb_rows=1 +213070643360932->>server:+SYNC +server-->>213070643360932:-PARSE COMPLETE +server-->>213070643360932:-BIND COMPLETE +server-->>213070643360932:-COMMAND COMPLETE command='SET' +server-->>213070643360932:-READY FOR QUERY type= +213070643360932->>server:+PARSE name='', num_params=0, params_type=, query=SET application_name = 'PostgreSQL JDBC Driver' +213070643360932->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360932->>server:+EXECUTE name='', nb_rows=1 +213070643360932->>server:+SYNC +server-->>213070643360932:-PARSE COMPLETE +server-->>213070643360932:-BIND COMPLETE +server-->>213070643360932:-PARAMETER STATUS name='application_name', value='PostgreSQL JDBC Driver' +server-->>213070643360932:-COMMAND COMPLETE command='SET' +server-->>213070643360932:-READY FOR QUERY type= +213070643360932->>server:+PARSE name='', num_params=0, params_type=, query= +213070643360932->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360932->>server:+DESCRIBE kind='P', name='' +213070643360932->>server:+EXECUTE name='', nb_rows=1 +213070643360932->>server:+SYNC +server-->>213070643360932:-PARSE COMPLETE +server-->>213070643360932:-BIND COMPLETE +server-->>213070643360932:-NO DATA +server-->>213070643360932:-EMPTY QUERY RESPONSE +server-->>213070643360932:-READY FOR QUERY type= +213070643360932->>server:+PARSE name='', num_params=0, params_type=, query=SELECT VERSION() AS version +213070643360932->>server:+BIND portal='', name='', num_formats=0, formats=, num_params=0, params= +213070643360932->>server:+DESCRIBE kind='P', name='' +213070643360932->>server:+EXECUTE name='', nb_rows=0 +213070643360932->>server:+SYNC +server-->>213070643360932:-PARSE COMPLETE +server-->>213070643360932:-BIND COMPLETE +server-->>213070643360932:-ROW DESCRIPTION: num_fields=1 ---[Field 01]--- name='version' type=25 type_len=65535 type_mod=4294967295 relid=0 attnum=0 format=0 +server-->>213070643360932:-DATA ROW num_values=1 ---[Value 0001]--- length=112 value='PostgreSQL 13.3 (Debian 13.3-1.pgdg100+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit' +server-->>213070643360932:-COMMAND COMPLETE command='SELECT 1' +server-->>213070643360932:-READY FOR QUERY type= +213070643360932->>server:+DISCONNECT +``` diff --git a/pg/message/io.go b/pg/message/io.go index e09150b9d..ec2321675 100644 --- a/pg/message/io.go +++ b/pg/message/io.go @@ -18,6 +18,7 @@ import ( "bufio" "encoding/binary" "errors" + "fmt" "io" ) @@ -92,6 +93,7 @@ type WireWriter struct { // WriteMessage writes a message onto the wire. func (w *WireWriter) WriteMessage(message Message) error { + fmt.Printf("SendToClient %c (%d)\n", message.Type, len(message.Data)) if uint(len(message.Data))+4 >= 1<<31 { return ErrMessageTooBig } diff --git a/pg/message/message.go b/pg/message/message.go index caf8214d3..5d6f67014 100644 --- a/pg/message/message.go +++ b/pg/message/message.go @@ -17,6 +17,7 @@ package message import ( "bytes" "encoding/binary" + "fmt" ) // Type is a byte indicating the type of a Postgres message. @@ -29,11 +30,11 @@ const ( // TypeReadyForQuery is a message used to indicate that the server is ready for another query. TypeReadyForQuery Type = 'Z' - // TypeCommandComplete is a message used to indicate that a query has completed. + // TypeCommandComplete is a message used to indicate that a query has completed. Backend TypeCommandComplete Type = 'C' - // TypeError is an error message. - TypeError Type = 'E' + // TypeClos is a message used to indicate that a query has completed. Frontend + TypeClose Type = 'C' // TypeRowDescription is a message indicating the column types of the result rows from a query. TypeRowDescription Type = 'T' @@ -52,6 +53,20 @@ const ( // TypeBackendKeyData contains a cancellation key for the client to use later. TypeBackendKeyData Type = 'K' + + TypeParse Type = 'P' + TypeParseComplete Type = '1' + + TypeBind Type = 'B' + TypeBindComplete Type = '2' + + TypeExecute Type = 'E' // Frontend TODO(TWG) + TypeError Type = 'E' // Backend SOMETHING NOT RIGHT HERE + TypeSync Type = 'S' // Frontend + TypeParameterStatus Type = 'S' // Backend + TypeDescribe Type = 'D' // Frontend + TypeNoData Type = 'n' // backend + TypeEmptyQueryResponse Type = 'I' // backend ) // AuthenticationOK is a message indicating that authentication has completed. @@ -59,6 +74,22 @@ var AuthenticationOK = Message{ Type: TypeAuthentication, Data: []byte{0, 0, 0, 0}, } +var ParseOK = Message{ + Type: TypeParseComplete, + Data: []byte{}, +} +var BindComplete = Message{ + Type: TypeBindComplete, + Data: []byte{}, +} +var NoData = Message{ + Type: TypeNoData, + Data: []byte{}, +} +var EmptyQueryResponse = Message{ + Type: TypeEmptyQueryResponse, + Data: []byte{}, +} // Message is a Postgres message value. type Message struct { @@ -66,6 +97,49 @@ type Message struct { Data []byte } +//debug tools +func viewString(b []byte) string { + r := []rune(string(b)) + for i := range r { + if r[i] < 32 || r[i] > 126 { + r[i] = '.' + } + } + return string(r) +} +func min(a, b int) int { + if a < b { + return a + } + return b +} +func (m *Message) Dump(prefix string) { + n := len(m.Data) + rowcount := 0 + stop := (n / 8) * 8 + k := 0 + fmt.Printf("\n %s type: '%c'\n", prefix, m.Type) + for i := 0; i <= stop; i += 8 { + k++ + if i+8 < n { + rowcount = 8 + } else { + rowcount = min(k*8, n) % 8 + } + + fmt.Printf("pos %02d hex: ", i) + for j := 0; j < rowcount; j++ { + fmt.Printf("%02x ", m.Data[i+j]) + } + for j := rowcount; j < 8; j++ { + fmt.Printf(" ") + } + fmt.Printf(" '%s'\n", viewString(m.Data[i:(i+rowcount)])) + } +} + +//endTools + // TransactionStatus is the current transaction state. type TransactionStatus byte @@ -98,6 +172,12 @@ func (e *Encoder) i32(i int32) error { return err } +func (e *Encoder) u32(i uint32) error { + binary.BigEndian.PutUint32(e.scratch[:], i) + _, err := e.buf.Write(e.scratch[:]) + return err +} + // ReadyForQuery encodes a "ready for query" message. func (e *Encoder) ReadyForQuery(status TransactionStatus) (Message, error) { e.buf.Reset() @@ -149,6 +229,9 @@ const ( // NoticeFieldHint is a suggestion of how to address the issue. NoticeFieldHint NoticeFieldType = 'H' + + // NoticeFieldHint the SQLSTATE code for the error (see Appendix A). Not localizable. Always present. + NoticeFieldCode NoticeFieldType = 'C' ) // NoticeField is a field in an error or notice. @@ -365,3 +448,95 @@ func (e *Encoder) BackendKeyData(pid, key int32) (Message, error) { Data: e.buf.Bytes(), }, nil } + +func (e *Encoder) ParameterStatus(param, value string) (Message, error) { + e.buf.Reset() + //param + NULL + value+ NULL + _, err := e.buf.WriteString(param) + if err != nil { + return Message{}, err + } + err = e.buf.WriteByte(0) + if err != nil { + return Message{}, err + } + _, err = e.buf.WriteString(value) + if err != nil { + return Message{}, err + } + err = e.buf.WriteByte(0) + if err != nil { + return Message{}, err + } + return Message{ + Type: TypeParameterStatus, + Data: e.buf.Bytes(), + }, nil +} + +type SimpleColumn struct { + Name string + Typeid int32 + Typelen int16 +} + +func (e *Encoder) EncodeColumn(name string, typeid int32, typelen int16) (Message, error) { + return e.EncodeColumns(SimpleColumn{ + Name: name, + Typeid: typeid, + Typelen: typelen, + }) +} +func (e *Encoder) EncodeColumns(cols ...SimpleColumn) (Message, error) { + + e.buf.Reset() + err := e.i16(int16(len(cols))) // number of columns in result + if err != nil { + return Message{}, nil + } + for _, col := range cols { + + _, err = e.buf.WriteString(col.Name) // column name + if err != nil { + return Message{}, err + } + err = e.buf.WriteByte(0) //null terminate + if err != nil { + return Message{}, err + } + + err = e.i32(0) //tabel id + if err != nil { + return Message{}, err + } + + err = e.i16(0) //field id(attnum) + if err != nil { + return Message{}, err + } + + err = e.i32(col.Typeid) //type_id + if err != nil { + return Message{}, err + } + + err = e.i16(col.Typelen) //type_len + if err != nil { + return Message{}, err + } + + err = e.i32(-1) //type_mod + if err != nil { + return Message{}, err + } + + err = e.i16(0) //format 0 text 1 binary + if err != nil { + return Message{}, err + } + } + return Message{ + Type: TypeRowDescription, + Data: e.buf.Bytes(), + }, nil +} diff --git a/pg/protocol.go b/pg/protocol.go index 222a9055f..754e128e3 100644 --- a/pg/protocol.go +++ b/pg/protocol.go @@ -30,7 +30,10 @@ import ( "time" "github.com/molecula/featurebase/v2/pg/message" + "github.com/molecula/featurebase/v2/sql" + "github.com/molecula/featurebase/v2/vprint" "github.com/pkg/errors" + "vitess.io/vitess/go/vt/sqlparser" ) // Protocol is a Postgres protocol version. @@ -48,6 +51,9 @@ const ( // ProtocolSupported is the main protocol version supported by this package. ProtocolSupported Protocol = ProtocolPostgres30 + + // PgServerVersion is the latest version of postgres that we claim to support. + PgServerVersion = "13.0.0" ) // Major returns the major revision of the protocol. @@ -170,6 +176,7 @@ startup: // Reject the unsecured connection. return errors.Errorf("client at %s attempted to initiate an unsecured postgres conenction", conn.RemoteAddr()) } + vprint.VV("TProcotcol: %v", proto) switch proto { case ProtocolCancel: @@ -209,6 +216,7 @@ func parseParams(data []byte) (map[string]string, error) { // handleCancel handles cancel request connections. func (s *Server) handleCancel(ctx context.Context, conn net.Conn, data []byte) error { + vprint.VV("handle cancel") if len(data) != 8 { return errors.New("malformed cancellation packet") } @@ -220,6 +228,7 @@ func (s *Server) handleCancel(ctx context.Context, conn net.Conn, data []byte) e pid := int32(binary.BigEndian.Uint32(data[:4])) key := int32(binary.BigEndian.Uint32(data[4:])) + vprint.VV("cancel pid:%v key:%v", pid, key) err := s.CancellationManager.Cancel(CancellationToken{PID: pid, Key: key}) switch err { case nil: @@ -233,6 +242,370 @@ func (s *Server) handleCancel(ctx context.Context, conn net.Conn, data []byte) e return nil } +func (s *Server) SendParameterStatus(w *message.WireWriter, param, value string, encoder *message.Encoder) error { + msg, err := encoder.ParameterStatus(param, value) + if err != nil { + return err + } + err = w.WriteMessage(msg) + if err != nil { + return errors.Wrap(err, "sending parameter status") + } + return nil +} + +type Result struct { +} +type PgType byte + +const ( + pgNotPg PgType = 'x' + pgBackendPid PgType = 'a' + pgVersion PgType = 'b' + pgCountType PgType = 'c' + pgQueryTime PgType = 'd' + pgTerminate PgType = 'e' + pgEmpty PgType = 'f' + pgSetApplication PgType = 'g' + pgSelect1 PgType = 'h' + pgSchema PgType = 'i' + pgBegin PgType = 'j' +) + +type Portal struct { + Name string + Writer *message.WireWriter + commands []message.Message + Encoder *message.Encoder + mapper *sql.Mapper + results []Result + sql string + pgspecial PgType + pid int32 + queryStart time.Time + server *Server + cancelNotify <-chan struct{} +} + +func (p *Portal) Reset() { + vprint.VV("Portal Reset") + p.Name = "" + p.sql = "" + p.pgspecial = pgNotPg + p.commands = p.commands[:0] +} + +func (p *Portal) Bind() { + p.Add(message.BindComplete) +} +func (p *Portal) Parse(data []byte) { + p.queryStart = time.Now() + b := bytes.Trim(data, "\x00") + vprint.VV("PARSE RAW: (%v) (%d)", string(b), len(b)) + if strings.Contains(string(b), "EXTRACT") { + // had to add this hack because the vitis parser doesn't handle... + /* + SELECT pid as id, + query as stmt, + EXTRACT(seconds from query_start - NOW()) as elapsed_time + FROM pg_stat_activity + WHERE usename='docker'` + */ + p.pgspecial = pgQueryTime + p.Name = "SELECT" + p.sql = string(b) + p.Add(message.ParseOK) + return + } + + if len(b) > 2 { + + query, err := p.mapper.MapSQL(string(b)) + if err != nil { + vprint.VV("Parse Err: '%v'", err) + } else { + + vprint.VV("TODD Query: %#v", query.SQL) + if strings.Contains(strings.ToLower(query.SQL), "select 1") { + vprint.VV("SQL1") + p.pgspecial = pgSelect1 + p.Name = "SELECT" + } else { + switch query.SQLType { + case sql.SQLTypeSet: + p.Name = "SET" + set := query.Statement.(*sqlparser.Set) + for _, item := range set.Exprs { + vprint.VV("SET name=(%v) ", item.Name) + if item.Name.String() == "application_name" { + vprint.VV("SET expr=(%#v) ", item.Expr) + switch val := item.Expr.(type) { + case *sqlparser.SQLVal: + vprint.VV("getting %v (%v)", val.Type, string(val.Val)) + p.pgspecial = pgSetApplication + } + } + } + case sql.SQLTypeSelect: + p.Name = "SELECT" + p.pgspecial = pgNotPg + stmt := query.Statement.(*sqlparser.Select) + for _, item := range stmt.SelectExprs { + switch expr := item.(type) { + case *sqlparser.AliasedExpr: + switch colExpr := expr.Expr.(type) { + case *sqlparser.FuncExpr: + funcName := strings.ToLower(colExpr.Name.String()) + switch funcName { + case "pg_backend_pid": + //SELECT pg_backend_pid() + p.pgspecial = pgBackendPid + //p.encoder.RowDescription() //TODO(twg) move to the right spt + case "pg_terminate_backend": + //need the arg 100 + //select pg_terminate_backend(100) + vprint.VV("terminate %#v", colExpr.Exprs) + //colExpr.Exprs[0] + p.pgspecial = pgTerminate + case "version": + //SELECT VERSION() AS version + p.pgspecial = pgVersion + } + //need to return the pid from the cancelation object + //add row description object + //add data row for item + } + } + + } + for _, item := range stmt.From { + switch from := item.(type) { + case *sqlparser.AliasedTableExpr: + tableName := from.Expr.(sqlparser.TableName).ToViewName().Name.String() + vprint.VV("looking at (%v)", tableName) + switch tableName { + case "pg_type": + p.pgspecial = pgCountType + case "pg_stat_activity": + p.pgspecial = pgQueryTime + case "tables": + p.pgspecial = pgSchema + } + } + } + p.sql = string(b) + case sql.SQLTypeBegin: + p.pgspecial = pgBegin + // panic("TODO") + // ingnore for now + case sql.SQLTypeShow: + p.Name = "SHOW" + p.pgspecial = pgNotPg + p.sql = string(b) + } + } + } + // TODO (twg) hack parsing for short term + // parts := strings.Split(strings.TrimSuffix(string(data), "\x00"), " ") + // p.Name = parts[0][1:] //TODO (twg) major hack + vprint.VV("PG SET:(%v)", p.pgspecial) + } else { + vprint.VV("SETTING EMPTY") + p.pgspecial = pgEmpty + } + p.Add(message.ParseOK) +} +func (p *Portal) Describe() { + /* + if p.pgspecial != pgNotPg { + //do custom handling for setup + } + if len(p.results) == 0 { + p.Add(&message.NoData) + p.Add(&message.EmptyQueryResponse) + return + } + */ + +} +func (p *Portal) Execute() (shouldTerminate bool, queryReady bool) { + queryReady = true + vprint.VV("port.Execute: (%v) q=(%v)", p.pgspecial, p.sql) + switch p.pgspecial { + case pgBackendPid: + rowDescription, err := p.Encoder.EncodeColumn("pg_backend_pid", int32(23), 4) + if err != nil { + panic(err) + } + p.Add(rowDescription) + pid := fmt.Sprintf("%v", p.pid) + dataRow, _ := p.Encoder.TextRow(pid) + p.Add(dataRow) + //needs data row with cancel token + case pgVersion: + rowDescription, err := p.Encoder.EncodeColumn("version", int32(25), -1) + if err != nil { + panic(err) + } + p.Add(rowDescription) + dataRow, _ := p.Encoder.TextRow("PostgresSQL 13.0 (molecula)") + p.Add(dataRow) + case pgSelect1: + rowDescription, err := p.Encoder.EncodeColumn("?column?", int32(23), 4) + if err != nil { + panic(err) + } + p.Add(rowDescription) + dataRow, _ := p.Encoder.TextRow("1") + p.Add(dataRow) + case pgCountType: + //need to block + vprint.VV("blocking til terminated") + <-p.server.lookerChannel + vprint.VV("Released") + //now need to send ParseComplete,BindComplete,RowDescription,Error(Terminate) + //TODO(twg) handle the error + rowDescription, err := p.Encoder.EncodeColumn("count", int32(20), 8) + if err != nil { + panic(err) + } + p.Add(rowDescription) + errorResponse, _ := p.Encoder.Error( + message.NoticeField{ + Type: message.NoticeFieldSeverity, + Data: "FATAL", + }, + message.NoticeField{ + Type: message.NoticeFieldMessage, + Data: "terminating connection due to administrator command", + }, + message.NoticeField{ + Type: message.NoticeFieldCode, + Data: "57P01", + }, + ) + p.Add(errorResponse) + p.Sync() //send and Reset + return true, queryReady + case pgQueryTime: + // need to return something so that the id can be queried + //need to return SELECT pid as id, query as stmt, EXTRACT(seconds from query_start - NOW()) as elapsed_time FROM pg_stat_activity + //seems like we need a map of pids to querys + p.server.dumpPortalsTo(p) + case pgTerminate: + //note just have 1 lock that blocks all who try to count the activities + vprint.VV("removing the block ") + //TODO (twg) lock this + close(p.server.lookerChannel) //release all the other blockers and allow them to terminate + p.server.lookerChannel = make(chan struct{}) //create a new one just in case + // i think it needs to return boolean true + rowDescription, err := p.Encoder.EncodeColumn("pg_terminate_backend", int32(16), 1) + if err != nil { + panic(err) + } + p.Add(rowDescription) + dataRow, _ := p.Encoder.TextRow("t") + p.Add(dataRow) + commandComplete, _ := p.Encoder.CommandComplete("SELECT 1") + p.Add(commandComplete) + p.Sync() + return false, queryReady + case pgEmpty: + p.Add(message.NoData) + p.Add(message.EmptyQueryResponse) + p.Sync() + queryReady = true + return false, queryReady + case pgSetApplication: + //needs to add/send status + msg, err := p.Encoder.ParameterStatus("application_name", "PostgreSQL JDBC Driver") //TODO (twg) should be saved from parse + if err != nil { + return + } + p.Add(msg) + case pgSchema: + //need to add the descrition for the 3 fields + // ---[Field 01]--- name='table_schema' type=19 type_len=64 type_mod=4294967295 relid=13276 attnum=2 format=0 + // ---[Field 02]--- name='table_name' type=19 type_len=64 type_mod=4294967295 relid=13276 attnum=3 format=0 + parts := []message.SimpleColumn{ + { + Name: "table_schema", + Typeid: int32(19), + Typelen: 64, + }, + { + Name: "table_name", + Typeid: int32(19), + Typelen: 64, + }, + } + rowDescription, err := p.Encoder.EncodeColumns(parts...) + if err != nil { //TODO (twg) shadowing err + return + } + p.Add(rowDescription) + err = p.HandleSchema() + if err != nil { + return + } + vprint.VV("SHOULd make schema") + + case pgNotPg: + vprint.VV("GOOOO>(%v)", p.sql) + query := SimpleQuery(p.sql) + err := p.server.handleQuery(p, query, p.cancelNotify) + if err != nil { + return + } + + case pgBegin: + vprint.VV("BEGIN") + p.Name = "BEGIN" + } + + //maybe add in the number of items in select clause + if len(p.Name) > 0 { //only send command complete for those that have names + vprint.VV("EXECING NAME: '%v'", p.Name) + message, _ := p.Encoder.CommandComplete(p.Name) + vprint.VV("AFTER") + p.Add(message) + } + return +} + +// handleStandard handles a connection in the standard postgres wire protocol. +func (p *Portal) Sync() { + for _, m := range p.commands { + vprint.VV("Sending: '%v'", m.Type) + p.Writer.WriteMessage(m) + } + p.Writer.Flush() + p.Reset() +} +func (p *Portal) Add(m message.Message) { + cp := message.Message{Type: m.Type, Data: make([]byte, len(m.Data))} + copy(cp.Data, m.Data) + p.commands = append(p.commands, cp) +} + +func (p *Portal) DumpComands() { + + for _, m := range p.commands { + m.Dump("DUMPING:") + } +} +func (p *Portal) HandleSchema() error { + return p.server.QueryHandler.HandleSchema(context.Background(), p) +} + +//implement the QueryResultWriterqueryResultR +func (p *Portal) WriteMessage(m message.Message) error { + p.Add(m) + return nil +} +func (p *Portal) Flush() error { + return nil +} // handleStandard handles a connection in the standard postgres wire protocol. // The client is responsible for closing the connection when this finishes. @@ -255,7 +628,7 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co if err != nil { return errors.Wrap(err, "parsing parameters") } - + fmt.Printf("postgres connection params\n%#v\n", params) //TODO (twg) remove if user, ok := params["user"]; ok { // Log the connection. s.Logger.Debugf("new postgres connection from user %q at %v", user, conn.RemoteAddr()) @@ -322,8 +695,57 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co if err != nil { return errors.Wrap(err, "sending authentication confirmation") } + err = s.SendParameterStatus(w, "application_name", "", &encoder) + if err != nil { + return errors.Wrap(err, "sending parameter status server version") + } + err = s.SendParameterStatus(w, "client_encoding", "UTF8", &encoder) + if err != nil { + return errors.Wrap(err, "sending parameter status server version") + } + err = s.SendParameterStatus(w, "DateStyle", "ISO, MDY", &encoder) + if err != nil { + return errors.Wrap(err, "sending parameter status server version") + } + err = s.SendParameterStatus(w, "integer_datetimes", "on", &encoder) + if err != nil { + return errors.Wrap(err, "sending parameter status server version") + } + err = s.SendParameterStatus(w, "IntervalStyle", "postgres", &encoder) + if err != nil { + return errors.Wrap(err, "sending parameter status server version") + } + err = s.SendParameterStatus(w, "is_superuser", "on", &encoder) + if err != nil { + return errors.Wrap(err, "sending parameter status server version") + } + err = s.SendParameterStatus(w, "server_encoding", "UTF8", &encoder) + if err != nil { + return errors.Wrap(err, "sending parameter status server version") + } + err = s.SendParameterStatus(w, "server_version", PgServerVersion, &encoder) + if err != nil { + return errors.Wrap(err, "sending parameter status server version") + } + /* + -PARAMETER STATUS name='TimeZone', value='GMT' + */ + err = s.SendParameterStatus(w, "session_authorization", "docker", &encoder) //TODO(twg) figure out valid values here + if err != nil { + return errors.Wrap(err, "sending parameter status server version") + } + err = s.SendParameterStatus(w, "standard_conforming_strings", "on", &encoder) //TODO(twg) figure out valid values here + if err != nil { + return errors.Wrap(err, "sending parameter status server version") + } + err = s.SendParameterStatus(w, "TimeZone", "GMT", &encoder) //TODO(twg) figure out valid values here + if err != nil { + return errors.Wrap(err, "sending parameter status server version") + } + vprint.VV("CancellationManger: %v", s.CancellationManager) var cancelNotify <-chan struct{} + var pid int32 if s.CancellationManager != nil { notify, cancel, token, err := s.CancellationManager.Token() if err != nil { @@ -332,6 +754,7 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co defer cancel() msg, err := encoder.BackendKeyData(token.PID, token.Key) + pid = token.PID if err != nil { return errors.Wrap(err, "encoding cancellation key data") } @@ -343,11 +766,25 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co } var queryReady bool + portal := &Portal{ + Writer: w, + Encoder: &encoder, + commands: make([]message.Message, 0), + mapper: sql.NewMapper(), + pid: pid, + server: s, + cancelNotify: cancelNotify, + } + s.addPortal(portal) + defer s.removePortal(portal) + //mapper.Logger = logger for { if !queryReady { // Indicate that we are ready for a query. // TODO: provide a valid transaction state. - msg, err := encoder.ReadyForQuery(message.TransactionStatusActive) + //msg, err := encoder.ReadyForQuery(message.TransactionStatusActive) + portal.sql = "" + msg, err := encoder.ReadyForQuery(message.TransactionStatusIdle) if err != nil { return errors.Wrap(err, "sending query ready status") } @@ -373,10 +810,12 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co // However, it seems that no clients completely follow the spec, so we shouldn't rely on anything that isn't entirely straightforward. s.Logger.Debugf("postgres client sent additional data without waiting for completion") } + queryReady = true } // Read the next packet. msg, err := r.ReadMessage() + msg.Dump("start-") // TODO(twg) remove if err != nil { if err == errPreempted { // The server is shutting down. @@ -406,6 +845,26 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co // We are done. return w.Flush() + case message.TypeParse: + fmt.Println("Type Parse", strings.Trim(string(msg.Data), "\x00")) + portal.Parse(msg.Data) + case message.TypeBind: + fmt.Println("Type Bind", strings.Trim(string(msg.Data), "\x00")) + //TODO(twg) apply values to bindings in the future + // Parse the query message (a null-terminated string). + portal.Bind() + case message.TypeExecute: + fmt.Println("Type Execute", strings.Trim(string(msg.Data), "\x00")) + //term, qr := portal.Execute() + term, qr := portal.Execute() + if term { + return w.Flush() + } + queryReady = qr + case message.TypeSync: + fmt.Println("Type Sync", strings.Trim(string(msg.Data), "\x00")) + portal.Sync() + queryReady = false case message.TypeSimpleQuery: // Execute a simple query. @@ -419,10 +878,23 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co if err != nil { return err } - + label := "N/A" + switch msg.Data[0] { + case 'S': //prepared statement + label = "prepared statement" + case 'P': //portal + label = "portal" + } + vprint.VV("describe %v:'%v'", label, msg.Data[1:]) + case message.TypeDescribe: + //TODO (twg) major hack alet + portal.Describe() + case message.TypeClose: + return w.Flush() default: // The message is not supported yet. // Send an error. + vprint.VV("unrecognized postgres packet %v", msg) s.Logger.Errorf("unrecognized postgres packet %v", msg) msg, err = encoder.Error( message.NoticeField{ @@ -452,6 +924,71 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co } } } +func (s *Server) addPortal(p *Portal) { + s.mu.Lock() + defer s.mu.Unlock() + s.portals = append(s.portals, p) +} +func (s *Server) removePortal(p *Portal) { + s.mu.Lock() + defer s.mu.Unlock() + for i, portal := range s.portals { + if portal.pid == p.pid { + //remove i + s.portals = append(s.portals[:i], s.portals[i+1:]...) + return + } + + } + +} +func (s *Server) dumpPortalsTo(p *Portal) error { + s.mu.Lock() + defer s.mu.Unlock() + //need to add the descrition for the 3 fields + // <-:-ROW DESCRIPTION: num_fields=3 + //---[Field 01]--- name='id' type=23 type_len=4 type_mod=4294967295 relid=12250 attnum=3 format=0 + //---[Field 02]--- name='stmt' type=25 type_len=65535 type_mod=4294967295 relid=12250 attnum=20 format=0 - + //--[Field 03]--- name='elapsed_time' type=701 type_len=8 type_mod=4294967295 relid=0 attnum=0 format=0 + parts := []message.SimpleColumn{ + { + Name: "id", + Typeid: int32(23), + Typelen: 4, + }, + { + Name: "stmt", + Typeid: int32(25), + Typelen: -1, + }, + { + Name: "elapsed_time", + Typeid: int32(701), + Typelen: 8, + }, + } + rowDescription, err := p.Encoder.EncodeColumns(parts...) + if err != nil { + return err + } + p.Add(rowDescription) + + for _, portal := range s.portals { + vprint.VV("port: %v (%v) %v", portal.pid, portal.sql, time.Since(portal.queryStart)) + dataRow, err := p.Encoder.TextRow( + fmt.Sprintf("%v", portal.pid), + portal.sql, + fmt.Sprintf("%v", time.Since(portal.queryStart).Seconds())) + if err != nil { + return err + } + //if sql == "" need to put in a null record + //need to add the dararow + //also need to figure out null types + p.Add(dataRow) + } + return nil +} // handleQuery processes a single query on a connection. func (s *Server) handleQuery(w message.Writer, query Query, cancelNotify <-chan struct{}) error { diff --git a/pg/query.go b/pg/query.go index cc81d490f..7aa231670 100644 --- a/pg/query.go +++ b/pg/query.go @@ -60,6 +60,7 @@ type QueryResultWriter interface { type QueryHandler interface { // HandleQuery executes a query and writes the results back. HandleQuery(context.Context, QueryResultWriter, Query) error + HandleSchema(context.Context, *Portal) error } // queryResultWriter implements QueryResultWrtiter over postgres wire protocol. diff --git a/pg/server.go b/pg/server.go index 071024385..28aa6ca24 100644 --- a/pg/server.go +++ b/pg/server.go @@ -59,6 +59,9 @@ type Server struct { // CancellationManager is the cancellation manager to use. // If this is not set, no cancellations will be applied. CancellationManager CancellationManager + lookerChannel chan struct{} + mu sync.Mutex + portals []*Portal } // ServeConn serves a single connection. @@ -79,6 +82,8 @@ func (s *Server) Serve(ctx context.Context, l net.Listener) (err error) { err = cerr } }(ctx) + // TODO (twg) added for looker + s.lookerChannel = make(chan struct{}) // Wait for the listener to be closed and all connections to shut down. var wg sync.WaitGroup diff --git a/server/pg.go b/server/pg.go index 0f03e7dfb..dc61e6262 100644 --- a/server/pg.go +++ b/server/pg.go @@ -25,7 +25,7 @@ import ( "strings" "time" - "github.com/molecula/featurebase/v2" + pilosa "github.com/molecula/featurebase/v2" "github.com/molecula/featurebase/v2/logger" "github.com/molecula/featurebase/v2/pg" "github.com/molecula/featurebase/v2/pql" @@ -67,9 +67,9 @@ func NewPostgresServer(api *pilosa.API, logger logger.Logger, tls *tls.Config) * // NewPostgresHandler creates a postgres query handler wrapping the pilosa API. func NewPostgresHandler(api *pilosa.API, logger logger.Logger) pg.QueryHandler { - return &queryDecodeHandler{ - child: &pilosaQueryHandler{ - api: api, + return &QueryDecodeHandler{ + Child: &PilosaQueryHandler{ + Api: api, logger: logger, }, } @@ -107,6 +107,10 @@ func (s *PostgresServer) Close() error { return s.eg.Wait() } +func (s *PostgresServer) GetAPI() *pilosa.API { + return s.api +} + type pgPQLQuery struct { index string query string @@ -135,8 +139,8 @@ func pgDecodePQL(str string) (q pg.Query, err error) { }, nil } -type pilosaQueryHandler struct { - api *pilosa.API +type PilosaQueryHandler struct { + Api *pilosa.API logger logger.Logger } @@ -449,10 +453,10 @@ func pgWriteResult(w pg.QueryResultWriter, result interface{}) error { } } -func (pqh *pilosaQueryHandler) HandleQuery(ctx context.Context, w pg.QueryResultWriter, q pg.Query) error { +func (pqh *PilosaQueryHandler) HandleQuery(ctx context.Context, w pg.QueryResultWriter, q pg.Query) error { switch q := q.(type) { case pgPQLQuery: - resp, err := pqh.api.Query(ctx, &pilosa.QueryRequest{ + resp, err := pqh.Api.Query(ctx, &pilosa.QueryRequest{ Index: q.index, Query: q.query, }) @@ -465,7 +469,7 @@ func (pqh *pilosaQueryHandler) HandleQuery(ctx context.Context, w pg.QueryResult return errors.Wrap(pgWriteResult(w, resp.Results[0]), "writing query result") case pg.SimpleQuery: - resp, err := execSQL(ctx, pqh.api, pqh.logger, string(q)) + resp, err := execSQL(ctx, pqh.Api, pqh.logger, string(q)) if err != nil { return errors.Wrap(err, "executing query") } @@ -476,11 +480,11 @@ func (pqh *pilosaQueryHandler) HandleQuery(ctx context.Context, w pg.QueryResult } } -type queryDecodeHandler struct { - child pg.QueryHandler +type QueryDecodeHandler struct { + Child pg.QueryHandler } -func (qdh *queryDecodeHandler) HandleQuery(ctx context.Context, w pg.QueryResultWriter, q pg.Query) error { +func (qdh *QueryDecodeHandler) HandleQuery(ctx context.Context, w pg.QueryResultWriter, q pg.Query) error { switch qv := q.(type) { case pg.SimpleQuery: if strings.HasPrefix(string(qv), "[") { @@ -492,5 +496,24 @@ func (qdh *queryDecodeHandler) HandleQuery(ctx context.Context, w pg.QueryResult } } - return qdh.child.HandleQuery(ctx, w, q) + return qdh.Child.HandleQuery(ctx, w, q) +} + +func (pqh *PilosaQueryHandler) HandleSchema(ctx context.Context, portal *pg.Portal) error { + schema, err := pqh.Api.Schema(context.Background(), false) + if err != nil { + return err + } + for _, ii := range schema { + dataRow, err := portal.Encoder.TextRow("featurebase", ii.Name) + if err != nil { + return err + } + portal.Add(dataRow) + } + return nil +} + +func (qdh *QueryDecodeHandler) HandleSchema(ctx context.Context, portal *pg.Portal) error { + return qdh.Child.HandleSchema(ctx, portal) } diff --git a/sql/mapper.go b/sql/mapper.go index 3ff500d8f..80ce64b6c 100644 --- a/sql/mapper.go +++ b/sql/mapper.go @@ -25,6 +25,8 @@ import ( const ( SQLTypeSelect = "select" SQLTypeShow = "show" + SQLTypeSet = "set" + SQLTypeBegin = "begin" SQLTypeEmpty = "" ) @@ -101,6 +103,10 @@ func (m *Mapper) MapSQL(sql string) (*MappedSQL, error) { } case *sqlparser.Show: sqlType = SQLTypeShow + case *sqlparser.Set: + sqlType = SQLTypeSet + case *sqlparser.Begin: + sqlType = SQLTypeBegin } return &MappedSQL{