mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
removed extra command complete message
cleanup
This commit is contained in:
parent
5176b7ff03
commit
d6dd1e025b
4 changed files with 88 additions and 119 deletions
3
go.mod
3
go.mod
|
|
@ -29,7 +29,6 @@ require (
|
|||
github.com/molecula/apophenia v0.0.0-20190827192002-68b7a14a478b
|
||||
github.com/opentracing/opentracing-go v1.1.0
|
||||
github.com/pelletier/go-toml v1.4.0
|
||||
github.com/pilosa/pilosa/v2 v2.0.0-alpha.1 // indirect
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/prometheus/client_golang v1.0.0
|
||||
github.com/prometheus/client_model v0.1.0
|
||||
|
|
@ -55,7 +54,7 @@ require (
|
|||
golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect
|
||||
golang.org/x/text v0.3.5 // indirect
|
||||
google.golang.org/grpc v1.28.0
|
||||
gopkg.in/yaml.v2 v2.3.0
|
||||
gopkg.in/yaml.v2 v2.3.0 // indirect
|
||||
modernc.org/mathutil v1.0.0
|
||||
modernc.org/strutil v1.0.0
|
||||
sigs.k8s.io/yaml v1.2.0 // indirect
|
||||
|
|
|
|||
26
go.sum
26
go.sum
|
|
@ -16,14 +16,12 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
|
|||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
github.com/CAFxX/gcnotifier v0.0.0-20190112062741-224a280d589d h1:n0G4ckjMEj7bWuGYUX0i8YlBeBBJuZ+HEHvHfyBDZtI=
|
||||
github.com/CAFxX/gcnotifier v0.0.0-20190112062741-224a280d589d/go.mod h1:Rn2zM2MnHze07LwkneP48TWt6UiZhzQTwCvw6djVGfE=
|
||||
github.com/DataDog/datadog-go v0.0.0-20180822151419-281ae9f2d895/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
|
||||
github.com/DataDog/datadog-go v2.2.0+incompatible h1:V5BKkxACZLjzHjSgBbr2gvLA2Ae49yhc6CSY7MLy5k4=
|
||||
github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
|
||||
github.com/HdrHistogram/hdrhistogram-go v1.1.0 h1:6dpdDPTRoo78HxAJ6T1HfMiKSnqhgRRqzCuPshRkQ7I=
|
||||
github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
|
||||
github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE=
|
||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||
github.com/StackExchange/wmi v0.0.0-20181212234831-e0a55b97c705/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
|
||||
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk=
|
||||
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
|
||||
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
|
||||
|
|
@ -33,7 +31,6 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF
|
|||
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
|
||||
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
|
||||
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
|
||||
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
|
||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||
github.com/beevik/ntp v0.3.0 h1:xzVrPrE4ziasFXgBVBZJDP0Wg/KpMwk2KHJ4Ba8GrDw=
|
||||
|
|
@ -45,7 +42,6 @@ github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0=
|
|||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
||||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
|
||||
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
|
||||
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
|
||||
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
|
|
@ -55,11 +51,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
|
|||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y=
|
||||
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
|
||||
github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
|
||||
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||
github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
|
||||
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||
github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
|
||||
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||
|
|
@ -109,7 +102,6 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me
|
|||
github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
|
||||
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
|
||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
|
|
@ -212,7 +204,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
|||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||
github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg=
|
||||
github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
|
||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
|
||||
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||
|
|
@ -253,8 +244,6 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI
|
|||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
||||
github.com/pelletier/go-toml v1.4.0 h1:u3Z1r+oOXJIkxqw34zVhyPgjBsm6X2wn21NWs/HfSeg=
|
||||
github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo=
|
||||
github.com/pilosa/pilosa/v2 v2.0.0-alpha.1 h1:dkKXzEtEvTHiJ7paskW6yqPBaUchOMj2VeXiM1QyEeQ=
|
||||
github.com/pilosa/pilosa/v2 v2.0.0-alpha.1/go.mod h1:CHRsL8ZpARQmEqiknUHFJSuEw9964DWCAdJQeT8vRK8=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
|
|
@ -285,7 +274,6 @@ github.com/prometheus/prom2json v1.3.0/go.mod h1:rMN7m0ApCowcoDlypBHlkNbp5eJQf/+
|
|||
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
|
||||
github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ=
|
||||
github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20190321074620-2f0d2b0e0001/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237 h1:HQagqIiBmr8YXawX/le3+O26N+vPPC1PtjaF3mwnook=
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||
|
|
@ -297,11 +285,8 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb
|
|||
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
|
||||
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||
github.com/shirou/gopsutil v2.18.12+incompatible h1:1eaJvGomDnH74/5cF4CTmTbLHAriGFsTZppLXDX93OM=
|
||||
github.com/shirou/gopsutil v2.18.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
|
||||
github.com/shirou/gopsutil/v3 v3.20.11 h1:NeVf1K0cgxsWz+N3671ojRptdgzvp7BXL3KV21R0JnA=
|
||||
github.com/shirou/gopsutil/v3 v3.20.11/go.mod h1:igHnfak0qnw1biGeI2qKQvu0ZkwvEkUcCLlYhZzdr/4=
|
||||
github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
|
||||
|
|
@ -327,7 +312,6 @@ github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn
|
|||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/spf13/viper v1.3.1/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
|
||||
github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
|
||||
github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk=
|
||||
github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
|
||||
|
|
@ -345,18 +329,13 @@ github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69
|
|||
github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/uber-go/atomic v1.4.0/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g=
|
||||
github.com/uber/jaeger-client-go v2.16.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
|
||||
github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U=
|
||||
github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
|
||||
github.com/uber/jaeger-lib v2.0.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
|
||||
github.com/uber/jaeger-lib v2.4.0+incompatible h1:fY7QsGQWiCt8pajv4r7JEvmATdCVaWxXbjwyYwsNaLQ=
|
||||
github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
|
||||
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
|
||||
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/zeebo/assert v1.1.0 h1:hU1L1vLTHsnO8x8c9KAR5GmM5QscxHg5RNU5z5qbUWY=
|
||||
|
|
@ -379,9 +358,7 @@ go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM=
|
|||
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
|
|
@ -427,7 +404,6 @@ golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73r
|
|||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190424112056-4829fb13d2c6/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||
|
|
@ -456,12 +432,10 @@ golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5h
|
|||
golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190429190828-d89cdac9e872/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
|
|
|
|||
174
pg/protocol.go
174
pg/protocol.go
|
|
@ -258,8 +258,10 @@ type Result struct {
|
|||
}
|
||||
type PgType byte
|
||||
|
||||
// Constants used to indicated query interception
|
||||
// Only pgPassOn is allowed to be processed in Featurebase query handling
|
||||
const (
|
||||
pgNotPg PgType = 'x'
|
||||
pgPassOn PgType = 'x'
|
||||
pgBackendPid PgType = 'a'
|
||||
pgVersion PgType = 'b'
|
||||
pgCountType PgType = 'c'
|
||||
|
|
@ -291,7 +293,7 @@ func (p *Portal) Reset() {
|
|||
vprint.VV("Portal Reset")
|
||||
p.Name = ""
|
||||
p.sql = ""
|
||||
p.pgspecial = pgNotPg
|
||||
p.pgspecial = pgPassOn
|
||||
p.commands = p.commands[:0]
|
||||
}
|
||||
|
||||
|
|
@ -335,6 +337,7 @@ func (p *Portal) Parse(data []byte) {
|
|||
case sql.SQLTypeSet:
|
||||
p.Name = "SET"
|
||||
set := query.Statement.(*sqlparser.Set)
|
||||
p.pgspecial = 0
|
||||
for _, item := range set.Exprs {
|
||||
vprint.VV("SET name=(%v) ", item.Name)
|
||||
if item.Name.String() == "application_name" {
|
||||
|
|
@ -348,7 +351,7 @@ func (p *Portal) Parse(data []byte) {
|
|||
}
|
||||
case sql.SQLTypeSelect:
|
||||
p.Name = "SELECT"
|
||||
p.pgspecial = pgNotPg
|
||||
p.pgspecial = pgPassOn
|
||||
stmt := query.Statement.(*sqlparser.Select)
|
||||
for _, item := range stmt.SelectExprs {
|
||||
switch expr := item.(type) {
|
||||
|
|
@ -360,12 +363,9 @@ func (p *Portal) Parse(data []byte) {
|
|||
case "pg_backend_pid":
|
||||
//SELECT pg_backend_pid()
|
||||
p.pgspecial = pgBackendPid
|
||||
//p.encoder.RowDescription() //TODO(twg) move to the right spt
|
||||
case "pg_terminate_backend":
|
||||
//need the arg 100
|
||||
//select pg_terminate_backend(100)
|
||||
vprint.VV("terminate %#v", colExpr.Exprs)
|
||||
//colExpr.Exprs[0]
|
||||
p.pgspecial = pgTerminate
|
||||
case "version":
|
||||
//SELECT VERSION() AS version
|
||||
|
|
@ -395,20 +395,15 @@ func (p *Portal) Parse(data []byte) {
|
|||
}
|
||||
p.sql = string(b)
|
||||
case sql.SQLTypeBegin:
|
||||
// Ignore BEGIN
|
||||
p.pgspecial = pgBegin
|
||||
// panic("TODO")
|
||||
// ingnore for now
|
||||
case sql.SQLTypeShow:
|
||||
p.Name = "SHOW"
|
||||
p.pgspecial = pgNotPg
|
||||
p.pgspecial = pgPassOn
|
||||
p.sql = string(b)
|
||||
}
|
||||
}
|
||||
}
|
||||
// TODO (twg) hack parsing for short term
|
||||
// parts := strings.Split(strings.TrimSuffix(string(data), "\x00"), " ")
|
||||
// p.Name = parts[0][1:] //TODO (twg) major hack
|
||||
vprint.VV("PG SET:(%v)", p.pgspecial)
|
||||
} else {
|
||||
vprint.VV("SETTING EMPTY")
|
||||
p.pgspecial = pgEmpty
|
||||
|
|
@ -428,14 +423,15 @@ func (p *Portal) Describe() {
|
|||
*/
|
||||
|
||||
}
|
||||
func (p *Portal) Execute() (shouldTerminate bool, queryReady bool) {
|
||||
func (p *Portal) Execute() (shouldTerminate bool, queryReady bool, err error) {
|
||||
queryReady = true
|
||||
vprint.VV("port.Execute: (%v) q=(%v)", p.pgspecial, p.sql)
|
||||
switch p.pgspecial {
|
||||
case pgBackendPid:
|
||||
rowDescription, err := p.Encoder.EncodeColumn("pg_backend_pid", int32(23), 4)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
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)
|
||||
|
|
@ -443,31 +439,30 @@ func (p *Portal) Execute() (shouldTerminate bool, queryReady bool) {
|
|||
p.Add(dataRow)
|
||||
//needs data row with cancel token
|
||||
case pgVersion:
|
||||
rowDescription, err := p.Encoder.EncodeColumn("version", int32(25), -1)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
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, err := p.Encoder.EncodeColumn("?column?", int32(23), 4)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
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
|
||||
vprint.VV("blocking til terminated")
|
||||
<-p.server.lookerChannel
|
||||
vprint.VV("Released")
|
||||
//now need to send ParseComplete,BindComplete,RowDescription,Error(Terminate)
|
||||
//TODO(twg) handle the error
|
||||
rowDescription, err := p.Encoder.EncodeColumn("count", int32(20), 8)
|
||||
rowDescription, e := p.Encoder.EncodeColumn("count", int32(20), 8)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
err = e
|
||||
return
|
||||
}
|
||||
p.Add(rowDescription)
|
||||
errorResponse, _ := p.Encoder.Error(
|
||||
|
|
@ -485,52 +480,68 @@ func (p *Portal) Execute() (shouldTerminate bool, queryReady bool) {
|
|||
},
|
||||
)
|
||||
p.Add(errorResponse)
|
||||
p.Sync() //send and Reset
|
||||
return true, queryReady
|
||||
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
|
||||
err := p.server.dumpPortalsTo(p)
|
||||
if err != nil {
|
||||
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
|
||||
vprint.VV("removing the block ")
|
||||
//TODO (twg) lock this
|
||||
close(p.server.lookerChannel) //release all the other blockers and allow them to terminate
|
||||
p.server.lookerChannel = make(chan struct{}) //create a new one just in case
|
||||
// i think it needs to return boolean true
|
||||
rowDescription, err := p.Encoder.EncodeColumn("pg_terminate_backend", int32(16), 1)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
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, _ := p.Encoder.CommandComplete("SELECT 1")
|
||||
commandComplete, e := p.Encoder.CommandComplete("SELECT 1")
|
||||
if e != nil {
|
||||
err = e
|
||||
return
|
||||
}
|
||||
p.Add(commandComplete)
|
||||
p.Sync()
|
||||
return false, queryReady
|
||||
e = p.Sync()
|
||||
if e != nil {
|
||||
err = e
|
||||
return
|
||||
}
|
||||
return false, queryReady, nil
|
||||
case pgEmpty:
|
||||
p.Add(message.NoData)
|
||||
p.Add(message.EmptyQueryResponse)
|
||||
p.Sync()
|
||||
e := p.Sync()
|
||||
if e != nil {
|
||||
err = e
|
||||
return
|
||||
}
|
||||
queryReady = true
|
||||
return false, queryReady
|
||||
return false, queryReady, nil
|
||||
case pgSetApplication:
|
||||
//needs to add/send status
|
||||
msg, err := p.Encoder.ParameterStatus("application_name", "PostgreSQL JDBC Driver") //TODO (twg) should be saved from parse
|
||||
if err != nil {
|
||||
msg, e := p.Encoder.ParameterStatus("application_name", "PostgreSQL JDBC Driver")
|
||||
if e != nil {
|
||||
err = e
|
||||
return
|
||||
}
|
||||
p.Add(msg)
|
||||
case pgSchema:
|
||||
//need to add the descrition for the 3 fields
|
||||
// ---[Field 01]--- name='table_schema' type=19 type_len=64 type_mod=4294967295 relid=13276 attnum=2 format=0
|
||||
// ---[Field 02]--- name='table_name' type=19 type_len=64 type_mod=4294967295 relid=13276 attnum=3 format=0
|
||||
parts := []message.SimpleColumn{
|
||||
{
|
||||
Name: "table_schema",
|
||||
|
|
@ -543,27 +554,28 @@ func (p *Portal) Execute() (shouldTerminate bool, queryReady bool) {
|
|||
Typelen: 64,
|
||||
},
|
||||
}
|
||||
rowDescription, err := p.Encoder.EncodeColumns(parts...)
|
||||
if err != nil { //TODO (twg) shadowing err
|
||||
rowDescription, e := p.Encoder.EncodeColumns(parts...)
|
||||
if e != nil {
|
||||
err = e
|
||||
return
|
||||
}
|
||||
p.Add(rowDescription)
|
||||
err = p.HandleSchema()
|
||||
if err != nil {
|
||||
e = p.HandleSchema()
|
||||
if e != nil {
|
||||
err = e
|
||||
return
|
||||
}
|
||||
vprint.VV("SHOULd make schema")
|
||||
|
||||
case pgNotPg:
|
||||
vprint.VV("GOOOO>(%v)", p.sql)
|
||||
case pgPassOn:
|
||||
query := SimpleQuery(p.sql)
|
||||
err := p.server.handleQuery(p, query, p.cancelNotify)
|
||||
if err != nil {
|
||||
e := p.server.handleQuery(p, query, p.cancelNotify)
|
||||
if e != nil {
|
||||
err = e
|
||||
return
|
||||
}
|
||||
return
|
||||
|
||||
case pgBegin:
|
||||
vprint.VV("BEGIN")
|
||||
p.Name = "BEGIN"
|
||||
}
|
||||
|
||||
|
|
@ -571,25 +583,23 @@ func (p *Portal) Execute() (shouldTerminate bool, queryReady bool) {
|
|||
if len(p.Name) > 0 { //only send command complete for those that have names
|
||||
vprint.VV("EXECING NAME: '%v'", p.Name)
|
||||
message, _ := p.Encoder.CommandComplete(p.Name)
|
||||
vprint.VV("AFTER")
|
||||
p.Add(message)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// handleStandard handles a connection in the standard postgres wire protocol.
|
||||
func (p *Portal) Sync() {
|
||||
func (p *Portal) Sync() error {
|
||||
for _, m := range p.commands {
|
||||
vprint.VV("Sending: '%v'", m.Type)
|
||||
err := p.Writer.WriteMessage(m)
|
||||
if err != nil {
|
||||
//TODO (twg) need to change signature to return error
|
||||
vprint.VV("error %v", err)
|
||||
return
|
||||
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))}
|
||||
|
|
@ -607,7 +617,6 @@ func (p *Portal) HandleSchema() error {
|
|||
return p.server.QueryHandler.HandleSchema(context.Background(), p)
|
||||
}
|
||||
|
||||
//implement the QueryResultWriterqueryResultR
|
||||
func (p *Portal) WriteMessage(m message.Message) error {
|
||||
p.Add(m)
|
||||
return nil
|
||||
|
|
@ -637,7 +646,7 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co
|
|||
if err != nil {
|
||||
return errors.Wrap(err, "parsing parameters")
|
||||
}
|
||||
fmt.Printf("postgres connection params\n%#v\n", params) //TODO (twg) remove
|
||||
vprint.VV("postgres connection params\n%#v\n", params) //TODO (twg) remove
|
||||
if user, ok := params["user"]; ok {
|
||||
// Log the connection.
|
||||
s.Logger.Debugf("new postgres connection from user %q at %v", user, conn.RemoteAddr())
|
||||
|
|
@ -647,7 +656,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,
|
||||
|
|
@ -790,8 +798,6 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co
|
|||
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 {
|
||||
|
|
@ -855,31 +861,30 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co
|
|||
return w.Flush()
|
||||
|
||||
case message.TypeParse:
|
||||
fmt.Println("Type Parse", strings.Trim(string(msg.Data), "\x00"))
|
||||
vprint.VV("Type Parse (%v)", strings.Trim(string(msg.Data), "\x00"))
|
||||
portal.Parse(msg.Data)
|
||||
case message.TypeBind:
|
||||
fmt.Println("Type Bind", strings.Trim(string(msg.Data), "\x00"))
|
||||
//TODO(twg) apply values to bindings in the future
|
||||
// Parse the query message (a null-terminated string).
|
||||
vprint.VV("Type Bind (%v)", strings.Trim(string(msg.Data), "\x00"))
|
||||
portal.Bind()
|
||||
case message.TypeExecute:
|
||||
fmt.Println("Type Execute", strings.Trim(string(msg.Data), "\x00"))
|
||||
//term, qr := portal.Execute()
|
||||
term, qr := portal.Execute()
|
||||
vprint.VV("Type Execute (%v)", strings.Trim(string(msg.Data), "\x00"))
|
||||
term, qr, err := portal.Execute()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if term {
|
||||
return w.Flush()
|
||||
}
|
||||
queryReady = qr
|
||||
case message.TypeSync:
|
||||
fmt.Println("Type Sync", strings.Trim(string(msg.Data), "\x00"))
|
||||
portal.Sync()
|
||||
vprint.VV("Type Sync", strings.Trim(string(msg.Data), "\x00"))
|
||||
err := portal.Sync()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
queryReady = false
|
||||
case message.TypeSimpleQuery:
|
||||
// Execute a simple query.
|
||||
|
||||
queryReady = false
|
||||
|
||||
// Parse the query message (a null-terminated string).
|
||||
query := SimpleQuery(strings.TrimSuffix(string(msg.Data), "\x00"))
|
||||
|
||||
// Execute the query.
|
||||
|
|
@ -887,16 +892,7 @@ func (s *Server) handleStandard(ctx context.Context, proto Protocol, conn net.Co
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
label := "N/A"
|
||||
switch msg.Data[0] {
|
||||
case 'S': //prepared statement
|
||||
label = "prepared statement"
|
||||
case 'P': //portal
|
||||
label = "portal"
|
||||
}
|
||||
vprint.VV("describe %v:'%v'", label, msg.Data[1:])
|
||||
case message.TypeDescribe:
|
||||
//TODO (twg) major hack alet
|
||||
portal.Describe()
|
||||
case message.TypeClose:
|
||||
return w.Flush()
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue