(hdr *frame.Header, stmt interface{})
| 784 | } |
| 785 | |
| 786 | func (c *client) interceptSystemQuery(hdr *frame.Header, stmt interface{}) { |
| 787 | switch s := stmt.(type) { |
| 788 | case *parser.SelectStatement: |
| 789 | if s.Table == "local" { |
| 790 | localColumns := parser.SystemLocalColumns |
| 791 | if len(c.proxy.cluster.Info.DSEVersion) > 0 { |
| 792 | localColumns = parser.DseSystemLocalColumns |
| 793 | } |
| 794 | if columns, err := parser.FilterColumns(s, localColumns); err != nil { |
| 795 | c.send(hdr, &message.Invalid{ErrorMessage: err.Error()}) |
| 796 | } else if row, err := c.filterSystemLocalValues(s, columns); err != nil { |
| 797 | c.send(hdr, &message.Invalid{ErrorMessage: err.Error()}) |
| 798 | } else { |
| 799 | c.send(hdr, &message.RowsResult{ |
| 800 | Metadata: &message.RowsMetadata{ |
| 801 | ColumnCount: int32(len(columns)), |
| 802 | Columns: columns, |
| 803 | }, |
| 804 | Data: []message.Row{row}, |
| 805 | }) |
| 806 | } |
| 807 | } else if s.Table == "peers" { |
| 808 | peersColumns := parser.SystemPeersColumns |
| 809 | if len(c.proxy.cluster.Info.DSEVersion) > 0 { |
| 810 | peersColumns = parser.DseSystemPeersColumns |
| 811 | } |
| 812 | if columns, err := parser.FilterColumns(s, peersColumns); err != nil { |
| 813 | c.send(hdr, &message.Invalid{ErrorMessage: err.Error()}) |
| 814 | } else { |
| 815 | var data []message.Row |
| 816 | for _, n := range c.proxy.nodes { |
| 817 | if n != c.proxy.localNode { |
| 818 | var row message.Row |
| 819 | row, err = c.filterSystemPeerValues(s, columns, n, len(c.proxy.nodes)-1) |
| 820 | if err != nil { |
| 821 | break |
| 822 | } |
| 823 | data = append(data, row) |
| 824 | } |
| 825 | } |
| 826 | if err != nil { |
| 827 | c.send(hdr, &message.Invalid{ErrorMessage: err.Error()}) |
| 828 | } else { |
| 829 | c.send(hdr, &message.RowsResult{ |
| 830 | Metadata: &message.RowsMetadata{ |
| 831 | ColumnCount: int32(len(columns)), |
| 832 | Columns: columns, |
| 833 | }, |
| 834 | Data: data, |
| 835 | }) |
| 836 | } |
| 837 | } |
| 838 | } else if columns, ok := parser.SystemColumnsByName[s.Table]; ok { |
| 839 | c.send(hdr, &message.RowsResult{ |
| 840 | Metadata: &message.RowsMetadata{ |
| 841 | ColumnCount: int32(len(columns)), |
| 842 | Columns: columns, |
| 843 | }, |
no test coverage detected