(stmt *parser.SelectStatement, filtered []*message.ColumnMetadata, peer *node, peerCount int)
| 762 | } |
| 763 | |
| 764 | func (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 | |
| 786 | func (c *client) interceptSystemQuery(hdr *frame.Header, stmt interface{}) { |
| 787 | switch s := stmt.(type) { |
no test coverage detected