MCPcopy Create free account
hub / github.com/datastax/cql-proxy / filterSystemPeerValues

Method filterSystemPeerValues

proxy/proxy.go:764–784  ·  view source on GitHub ↗
(stmt *parser.SelectStatement, filtered []*message.ColumnMetadata, peer *node, peerCount int)

Source from the content-addressed store, hash-verified

762}
763
764func (c *client) filterSystemPeerValues(stmt *parser.SelectStatement, filtered []*message.ColumnMetadata, peer *node, peerCount int) (row []message.Column, err error) {
765 return parser.FilterValues(stmt, filtered, func(name string) (value message.Column, err error) {
766 if name == "data_center" {
767 return codecs.EncodeType(datatype.Varchar, c.proxy.cluster.NegotiatedVersion, peer.dc)
768 } else if name == "host_id" {
769 return codecs.EncodeType(datatype.Uuid, c.proxy.cluster.NegotiatedVersion, nameBasedUUID(peer.addr.String()))
770 } else if name == "tokens" {
771 return codecs.EncodeType(datatype.NewList(datatype.Varchar), c.proxy.cluster.NegotiatedVersion, peer.tokens)
772 } else if name == "peer" {
773 return codecs.EncodeType(datatype.Inet, c.proxy.cluster.NegotiatedVersion, peer.addr.IP)
774 } else if name == "rpc_address" {
775 return codecs.EncodeType(datatype.Inet, c.proxy.cluster.NegotiatedVersion, peer.addr.IP)
776 } else if val, ok := c.proxy.systemLocalValues[name]; ok {
777 return val, nil
778 } else if name == parser.CountValueName {
779 return codecs.EncodeType(datatype.Int, c.proxy.cluster.NegotiatedVersion, peerCount)
780 } else {
781 return nil, fmt.Errorf("no column value for %s", name)
782 }
783 })
784}
785
786func (c *client) interceptSystemQuery(hdr *frame.Header, stmt interface{}) {
787 switch s := stmt.(type) {

Callers 1

interceptSystemQueryMethod · 0.95

Calls 4

FilterValuesFunction · 0.92
EncodeTypeFunction · 0.92
nameBasedUUIDFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected