Merge pull request #1696 from tgruben/looker-count

[CORE-838] Looker Integration
This commit is contained in:
tgruben 2021-09-27 09:48:31 -05:00 committed by GitHub
commit 214ae4dfac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 2214 additions and 39 deletions

5
api.go
View file

@ -36,6 +36,8 @@ import (
"github.com/molecula/featurebase/v2/disco"
"github.com/molecula/featurebase/v2/ingest"
//"github.com/molecula/featurebase/v2/pg"
"github.com/molecula/featurebase/v2/pql"
"github.com/molecula/featurebase/v2/roaring"
"github.com/molecula/featurebase/v2/stats"
@ -3024,6 +3026,9 @@ processing:
}
return result, ctx.Err()
}
func (api *API) Plan(ctx context.Context, q string) (*Stmt, error) {
return api.server.PlanSQL(ctx, q)
}
type serverInfo struct {
ShardWidth uint64 `json:"shardWidth"`

View file

@ -111,6 +111,7 @@ func BuildServerFlags(cmd *cobra.Command, srv *server.Command) {
flags.DurationVar((*time.Duration)(&srv.Config.Postgres.WriteTimeout), "postgres.write-timeout", time.Duration(srv.Config.Postgres.WriteTimeout), "Timeout for writes on a postgres connection. (set 0 to disable)")
flags.Uint32Var(&srv.Config.Postgres.MaxStartupSize, "postgres.max-startup-size", srv.Config.Postgres.MaxStartupSize, "Maximum acceptable size of a postgres startup packet, in bytes. (set 0 to disable)")
flags.Uint16Var(&srv.Config.Postgres.ConnectionLimit, "postgres.connection-limit", srv.Config.Postgres.ConnectionLimit, "Maximum number of simultaneous postgres connections to allow. (set 0 to disable)")
flags.Uint16Var(&srv.Config.Postgres.SqlVersion, "postgres.sql-version", srv.Config.Postgres.SqlVersion, "Molecula Sql Handling Version (default 1)")
// Disk and Memory usage cache for ui/usage endpoint
flags.Float64Var(&srv.Config.UsageDutyCycle, "usage-duty-cycle", srv.Config.UsageDutyCycle, "Sets the percentage of time that is spent recalculating the disk and memory usage cache. 100.0 for always-running, 0 disables the cache and the /ui/usage endpoint.")

652
pg/lookerToFeaturebase.md Normal file
View file

@ -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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
213070643358502->>server:+DISCONNECT
```

677
pg/lookerToPostgres.md Normal file
View file

@ -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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
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=<IDLE>
213070643360932->>server:+DISCONNECT
```

View file

@ -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 Backend message used to indicate that a query has completed.
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
TypeError Type = 'E' // Backend
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,14 @@ func (e *Encoder) i32(i int32) error {
return err
}
/* removed for linter now
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 +231,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 +450,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
}

View file

@ -30,6 +30,9 @@ type HandlerFunc func(context.Context, pg.QueryResultWriter, pg.Query) error
func (h HandlerFunc) HandleQuery(ctx context.Context, w pg.QueryResultWriter, q pg.Query) error {
return h(ctx, w, q)
}
func (h HandlerFunc) HandleSchema(ctx context.Context, portal *pg.Portal) error {
return nil
}
var _ pg.QueryHandler = HandlerFunc(nil)

View file

@ -25,12 +25,15 @@ import (
"io"
"io/ioutil"
"net"
"regexp"
"strings"
"sync"
"time"
"github.com/molecula/featurebase/v2/pg/message"
"github.com/molecula/featurebase/v2/sql"
"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.
@ -233,6 +239,376 @@ 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
// Constants used to indicated query interception
// Only pgPassOn is allowed to be processed in Featurebase query handling
const (
pgPassOn 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
sql string
pgspecial PgType
pid int32
queryStart time.Time
server *Server
cancelNotify <-chan struct{}
}
func (p *Portal) Reset() {
p.Name = ""
p.sql = ""
p.pgspecial = pgPassOn
p.commands = p.commands[:0]
}
func (p *Portal) Bind() {
p.Add(message.BindComplete)
}
var lookPQL = regexp.MustCompile(`\[.*\].*\)\z`)
func (p *Portal) Parse(data []byte) {
p.queryStart = time.Now()
queryStr := string(bytes.Trim(data, "\x00"))
foundPQL := lookPQL.FindStringSubmatch(queryStr)
if len(foundPQL) > 0 {
p.sql = foundPQL[0]
p.Name = "PQL"
p.pgspecial = pgPassOn
p.Add(message.ParseOK)
return
}
if strings.Contains(queryStr, "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 = queryStr
p.Add(message.ParseOK)
return
}
if len(queryStr) > 2 {
query, err := p.mapper.MapSQL(queryStr)
if err != nil {
return
}
if strings.Contains(strings.ToLower(query.SQL), "select 1") {
p.pgspecial = pgSelect1
p.Name = "SELECT"
} else {
switch query.SQLType {
case sql.SQLTypeSet:
p.Name = "SET"
set := query.Statement.(*sqlparser.Set)
p.pgspecial = 0
for _, item := range set.Exprs {
if item.Name.String() == "application_name" {
switch item.Expr.(type) {
case *sqlparser.SQLVal:
p.pgspecial = pgSetApplication
}
}
}
case sql.SQLTypeSelect:
p.Name = "SELECT"
p.pgspecial = pgPassOn
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
case "pg_terminate_backend":
//select pg_terminate_backend(100)
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()
switch tableName {
case "pg_type":
p.pgspecial = pgCountType
case "pg_stat_activity":
p.pgspecial = pgQueryTime
case "tables":
p.pgspecial = pgSchema
}
}
}
p.sql = queryStr
case sql.SQLTypeBegin:
// Ignore BEGIN
p.pgspecial = pgBegin
case sql.SQLTypeShow:
p.Name = "SHOW"
p.pgspecial = pgPassOn
p.sql = queryStr
}
}
} else {
p.pgspecial = pgEmpty
}
p.Add(message.ParseOK)
}
func (p *Portal) Describe() {
// Placeholder should we need to handle the Decribe request
}
func (p *Portal) Execute() (shouldTerminate bool, queryReady bool, err error) {
queryReady = true
switch p.pgspecial {
case pgBackendPid:
rowDescription, e := p.Encoder.EncodeColumn("pg_backend_pid", int32(23), 4)
if e != nil {
err = e
return
}
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, e := p.Encoder.EncodeColumn("version", int32(25), -1)
if e != nil {
err = e
return
}
p.Add(rowDescription)
dataRow, _ := p.Encoder.TextRow("PostgresSQL 13.0 (molecula)")
p.Add(dataRow)
case pgSelect1:
rowDescription, e := p.Encoder.EncodeColumn("?column?", int32(23), 4)
if e != nil {
err = e
return
}
p.Add(rowDescription)
dataRow, _ := p.Encoder.TextRow("1")
p.Add(dataRow)
case pgCountType:
//need to block
<-p.server.lookerChannel
rowDescription, e := p.Encoder.EncodeColumn("count", int32(20), 8)
if err != nil {
err = e
return
}
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)
e = p.Sync() //send and Reset
if e != nil {
err = e
return
}
return true, queryReady, nil
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
e := p.server.dumpPortalsTo(p)
if e != nil {
err = e
return
}
case pgTerminate:
//note just have 1 lock that blocks all who try to count the activities
//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, e := p.Encoder.EncodeColumn("pg_terminate_backend", int32(16), 1)
if e != nil {
err = e
return
}
p.Add(rowDescription)
dataRow, _ := p.Encoder.TextRow("t")
p.Add(dataRow)
commandComplete, e := p.Encoder.CommandComplete("SELECT 1")
if e != nil {
err = e
return
}
p.Add(commandComplete)
e = p.Sync()
if e != nil {
err = e
return
}
return false, queryReady, nil
case pgEmpty:
p.Add(message.NoData)
p.Add(message.EmptyQueryResponse)
e := p.Sync()
if e != nil {
err = e
return
}
queryReady = true
return false, queryReady, nil
case pgSetApplication:
//needs to add/send status
msg, e := p.Encoder.ParameterStatus("application_name", "PostgreSQL JDBC Driver")
if e != nil {
err = e
return
}
p.Add(msg)
case pgSchema:
parts := []message.SimpleColumn{
{
Name: "table_schema",
Typeid: int32(19),
Typelen: 64,
},
{
Name: "table_name",
Typeid: int32(19),
Typelen: 64,
},
}
rowDescription, e := p.Encoder.EncodeColumns(parts...)
if e != nil {
err = e
return
}
p.Add(rowDescription)
e = p.HandleSchema()
if e != nil {
err = e
return
}
case pgPassOn:
query := SimpleQuery(p.sql)
e := p.server.handleQuery(p, query, p.cancelNotify)
if e != nil {
err = e
return
}
return
case pgBegin:
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
message, _ := p.Encoder.CommandComplete(p.Name)
p.Add(message)
}
return
}
// handleStandard handles a connection in the standard postgres wire protocol.
func (p *Portal) Sync() error {
for _, m := range p.commands {
err := p.Writer.WriteMessage(m)
if err != nil {
return err
}
}
p.Writer.Flush()
p.Reset()
return nil
}
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)
}
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 +631,6 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co
if err != nil {
return errors.Wrap(err, "parsing parameters")
}
if user, ok := params["user"]; ok {
// Log the connection.
s.Logger.Debugf("new postgres connection from user %q at %v", user, conn.RemoteAddr())
@ -265,7 +640,6 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co
}
// Set up message input and output.
// Set up a reader that will preempt the connection when the context is canceled.
ir := idleReader{
conn: conn,
@ -322,8 +696,56 @@ 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")
}
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,23 @@ 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)
portal.sql = ""
msg, err := encoder.ReadyForQuery(message.TransactionStatusIdle)
if err != nil {
return errors.Wrap(err, "sending query ready status")
}
@ -373,6 +808,7 @@ 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.
@ -406,12 +842,27 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co
// We are done.
return w.Flush()
case message.TypeSimpleQuery:
// Execute a simple query.
case message.TypeParse:
portal.Parse(msg.Data)
case message.TypeBind:
portal.Bind()
case message.TypeExecute:
term, qr, err := portal.Execute()
if err != nil {
return err
}
if term {
return w.Flush()
}
queryReady = qr
case message.TypeSync:
err := portal.Sync()
if err != nil {
return err
}
queryReady = false
case message.TypeSimpleQuery:
queryReady = false
// Parse the query message (a null-terminated string).
query := SimpleQuery(strings.TrimSuffix(string(msg.Data), "\x00"))
// Execute the query.
@ -419,7 +870,10 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co
if err != nil {
return err
}
case message.TypeDescribe:
portal.Describe()
case message.TypeClose:
return w.Flush()
default:
// The message is not supported yet.
// Send an error.
@ -452,6 +906,70 @@ 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 {
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 {
@ -497,7 +1015,6 @@ func (s *Server) handleQuery(w message.Writer, query Query, cancelNotify <-chan
te: s.TypeEngine,
tag: "SELECT",
}
// Dispatch the query handler.
qerr := s.QueryHandler.HandleQuery(ctx, qwriter, query)
if qerr != nil {

View file

@ -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.

View file

@ -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

View file

@ -645,6 +645,11 @@ func (rs *StmtRows) Columns() []*StmtColumn {
return rs.node.Columns()
}
/*
func (rs *StmtRows) Row() int64 {
return rs.node.Row()[0].(int64)
}
*/
func (rs *StmtRows) Next() bool {
if rs.err != nil {
return false

View file

@ -39,6 +39,7 @@ import (
"github.com/molecula/featurebase/v2/stats"
"github.com/molecula/featurebase/v2/storage"
"github.com/molecula/featurebase/v2/topology"
"github.com/molecula/featurebase/v2/vprint"
"github.com/pkg/errors"
"golang.org/x/sync/errgroup"
@ -1354,6 +1355,7 @@ func (s *Server) PlanSQL(ctx context.Context, q string) (*Stmt, error) {
if err != nil {
return nil, err
}
vprint.VV("PLanning SQL: (%v)", q)
return NewPlanner(s.executor).PlanStatement(ctx, st)
}

View file

@ -200,6 +200,9 @@ type Config struct {
// Setting this to 0 disables the limit.
// This mostly exists because other DBs seem to have it.
ConnectionLimit uint16 `toml:"max-connections"`
// SqlVersion is which type of sqlhandling to be applied.
// The constant SqlV2 can be used to try the new experimental Molecula SQL handling
SqlVersion uint16 `toml:"sql-version"`
} `toml:"postgres"`
// Storage.Backend determines which Tx implementation the holder/Index will

View file

@ -25,9 +25,11 @@ 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/pg"
"github.com/molecula/featurebase/v2/pql"
pb "github.com/molecula/featurebase/v2/proto"
@ -43,14 +45,20 @@ type PostgresServer struct {
s pg.Server
stop context.CancelFunc
}
type SqlVersion uint16
const (
SqlV1 SqlVersion = 0
SqlV2 SqlVersion = 2
)
// NewPostgresServer creates a postgres server.
func NewPostgresServer(api *pilosa.API, logger logger.Logger, tls *tls.Config) *PostgresServer {
func NewPostgresServer(api *pilosa.API, logger logger.Logger, tls *tls.Config, sqlVersion SqlVersion) *PostgresServer {
return &PostgresServer{
api: api,
logger: logger,
s: pg.Server{
QueryHandler: NewPostgresHandler(api, logger),
QueryHandler: NewPostgresHandler(api, logger, sqlVersion),
TypeEngine: pg.PrimitiveTypeEngine{},
StartupTimeout: 5 * time.Second,
ReadTimeout: 10 * time.Second,
@ -66,11 +74,12 @@ 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,
logger: logger,
func NewPostgresHandler(api *pilosa.API, logger logger.Logger, sqlVersion SqlVersion) pg.QueryHandler {
return &QueryDecodeHandler{
Child: &PilosaQueryHandler{
Api: api,
logger: logger,
sqlVersion: sqlVersion,
},
}
}
@ -107,6 +116,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,9 +148,10 @@ func pgDecodePQL(str string) (q pg.Query, err error) {
}, nil
}
type pilosaQueryHandler struct {
api *pilosa.API
logger logger.Logger
type PilosaQueryHandler struct {
Api *pilosa.API
logger logger.Logger
sqlVersion SqlVersion
}
func pgWriteRow(w pg.QueryResultWriter, row *pilosa.Row) error {
@ -322,6 +336,78 @@ func pgWriteGroupCount(w pg.QueryResultWriter, counts *pilosa.GroupCounts) error
return nil
}
func pgWriteStmtRows(w pg.QueryResultWriter, rows *pilosa.StmtRows) error {
//TODO(twg) writeHeader
//TODO(twg) writeColumns
first := true
var data []string
var err error
for rows.Next() {
if first {
columns := rows.Columns()
//TODO (twg) types:=rows.Types()
headers := make([]pg.ColumnInfo, len(columns))
for i, column := range columns {
headers[i] = pg.ColumnInfo{
Name: column.Name,
Type: pg.TypeCharoid, //TODO(twg) types[i]
}
}
err := w.WriteHeader(headers...)
if err != nil {
return err
}
data = make([]string, len(headers))
first = false
}
result := make([]interface{}, len(rows.Columns()))
// Create list of scan destination pointers.
dsts := make([]interface{}, len(result))
for i := range result {
dsts[i] = &result[i]
}
if err := rows.Scan(dsts...); err != nil {
return err
}
//TODO(twg) conversion should be happening in Scan as described in https://pkg.go.dev/database/sql
// ....
// Scan also converts between string and numeric types, as long as no information
// would be lost. While Scan stringifies all numbers scanned from numeric database columns into *string,
// scans into numeric types are checked for overflow. For example, a float64 with value 300 or a string
// with value "300" can scan into a uint16, but not into a uint8, though float64(255) or "255" can scan
// into a uint8. One exception is that scans of some float64 numbers to strings may lose information when stringifying.
// In general, scan floating point columns into *float64.
// ...
for i, col := range dsts {
var v string
switch col := col.(type) {
case nil:
v = "null"
//
//v = strconv.FormatUint(col.Uint64Val, 10)
case *interface{}:
v = fmt.Sprintf("%v", *col)
default:
return errors.Errorf("unable to process value of type %T", col)
}
data[i] = v
}
err = w.WriteRowText(data...)
if err != nil {
return err
}
}
if err := rows.Err(); err != nil {
return err
}
return nil
}
func pgWriteRowser(w pg.QueryResultWriter, result pb.ToRowser) error {
var data []string
return result.ToRows(func(row *pb.RowResponse) error {
@ -395,6 +481,8 @@ func pgWriteResult(w pg.QueryResultWriter, result interface{}) error {
return pgWriteGroupCount(w, result)
case pb.ToRowser: // we should avoid protobuf where we can...
return pgWriteRowser(w, result)
case *pilosa.StmtRows: // we should avoid protobuf where we can...
return pgWriteStmtRows(w, result)
case uint64:
err := w.WriteHeader(pg.ColumnInfo{
Name: "count",
@ -449,10 +537,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,22 +553,36 @@ 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))
if err != nil {
return errors.Wrap(err, "executing query")
if pqh.sqlVersion == SqlV2 {
stmt, err := pqh.Api.Plan(ctx, string(q))
if err != nil {
return err
}
resp, err := stmt.QueryContext(ctx)
if err != nil {
return err
}
return errors.Wrap(pgWriteResult(w, resp), "writing sql2 query result")
//version 2.0
} else {
//version 1.0
resp, err := execSQL(ctx, pqh.Api, pqh.logger, string(q))
if err != nil {
return errors.Wrap(err, "executing query")
}
return errors.Wrap(pgWriteResult(w, resp), "writing query result")
}
return errors.Wrap(pgWriteResult(w, resp), "writing query result")
default:
return errors.Errorf("query type %T not yet supported (query: %s)", q, q)
}
}
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 +594,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)
}

View file

@ -21,7 +21,7 @@ import (
"testing"
"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/pg/pgtest"
@ -33,7 +33,7 @@ func TestPostgresHandler(t *testing.T) {
m := test.RunCommand(t)
defer m.Close()
pgh := server.NewPostgresHandler(m.API, logger.NewLogfLogger(t))
pgh := server.NewPostgresHandler(m.API, logger.NewLogfLogger(t), server.SqlV1)
m.MustCreateIndex(t, "i", pilosa.IndexOptions{TrackExistence: true})
m.MustCreateField(t, "i", "set")

View file

@ -40,7 +40,7 @@ import (
"golang.org/x/sync/errgroup"
"github.com/molecula/featurebase/v2"
pilosa "github.com/molecula/featurebase/v2"
"github.com/molecula/featurebase/v2/boltdb"
"github.com/molecula/featurebase/v2/encoding/proto"
petcd "github.com/molecula/featurebase/v2/etcd"
@ -265,7 +265,7 @@ func (m *Command) Start() (err error) {
}
tlsConf = conf
}
m.pgserver = NewPostgresServer(m.API, m.logger, tlsConf)
m.pgserver = NewPostgresServer(m.API, m.logger, tlsConf, SqlVersion(m.Config.Postgres.SqlVersion))
m.pgserver.s.StartupTimeout = time.Duration(m.Config.Postgres.StartupTimeout)
m.pgserver.s.ReadTimeout = time.Duration(m.Config.Postgres.ReadTimeout)
m.pgserver.s.WriteTimeout = time.Duration(m.Config.Postgres.WriteTimeout)

View file

@ -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{