Fix strings for SHOW MEASUREMENTS

pull/4878/head
Mark Rushakoff 2015-11-22 12:38:48 -08:00 committed by Mark Rushakoff
parent fc628fdb42
commit c7782878aa
2 changed files with 20 additions and 1 deletions

View File

@ -1958,6 +1958,15 @@ func (s *ShowMeasurementsStatement) String() string {
var buf bytes.Buffer
_, _ = buf.WriteString("SHOW MEASUREMENTS")
if s.Source != nil {
_, _ = buf.WriteString(" WITH MEASUREMENT ")
if m, ok := s.Source.(*Measurement); ok && m.Regex != nil {
_, _ = buf.WriteString("=~ ")
} else {
_, _ = buf.WriteString("= ")
}
_, _ = buf.WriteString(s.Source.String())
}
if s.Condition != nil {
_, _ = buf.WriteString(" WHERE ")
_, _ = buf.WriteString(s.Condition.String())

View File

@ -633,6 +633,12 @@ func TestParseString(t *testing.T) {
{
stmt: `CREATE SUBSCRIPTION "ugly \"subscription\" name" ON "\"my\" db"."\"my\" rp" DESTINATIONS ALL 'my host', 'my other host'`,
},
{
stmt: `SHOW MEASUREMENTS WITH MEASUREMENT =~ /foo/`,
},
{
stmt: `SHOW MEASUREMENTS WITH MEASUREMENT = "and/or"`,
},
}
for _, tt := range tests {
@ -642,10 +648,14 @@ func TestParseString(t *testing.T) {
t.Fatalf("invalid statement: %q: %s", tt.stmt, err)
}
_, err = influxql.NewParser(strings.NewReader(stmt.String())).ParseStatement()
stmtCopy, err := influxql.NewParser(strings.NewReader(stmt.String())).ParseStatement()
if err != nil {
t.Fatalf("failed to parse string: %v\norig: %v\ngot: %v", err, tt.stmt, stmt.String())
}
if !reflect.DeepEqual(stmt, stmtCopy) {
t.Fatalf("statement changed after stringifying and re-parsing:\noriginal : %v\nre-parsed: %v\n", tt.stmt, stmtCopy.String())
}
}
}