code: func (s *ShowTagKeysStatement) String() string {
  	var buf bytes.Buffer
  	_, _ = buf.WriteString("SHOW TAG KEYS")
  
  	if s.Database != "" {
  		_, _ = buf.WriteString(" ON ")
  		_, _ = buf.WriteString(QuoteIdent(s.Database))
  	}
  	if s.Sources != nil {
  		_, _ = buf.WriteString(" FROM ")
  		_, _ = buf.WriteString(s.Sources.String())
  	}
  	if s.Condition != nil {
  		_, _ = buf.WriteString(" WHERE ")
  		_, _ = buf.WriteString(s.Condition.String())
  	}
  	if len(s.SortFields) > 0 {
  		_, _ = buf.WriteString(" ORDER BY ")
  		_, _ = buf.WriteString(s.SortFields.String())
  	}
  	if s.Limit > 0 {
  		_, _ = buf.WriteString(" LIMIT ")
  		_, _ = buf.WriteString(strconv.Itoa(s.Limit))
  	}
  	if s.Offset > 0 {
  		_, _ = buf.WriteString(" OFFSET ")
  		_, _ = buf.WriteString(strconv.Itoa(s.Offset))
  	}
  	if s.SLimit > 0 {
  		_, _ = buf.WriteString(" SLIMIT ")
  		_, _ = buf.WriteString(strconv.Itoa(s.SLimit))
  	}
  	if s.SOffset > 0 {
  		_, _ = buf.WriteString(" SOFFSET ")
  		_, _ = buf.WriteString(strconv.Itoa(s.SOffset))
  	}
  	return buf.String()
  }
docs: // String returns a string representation of the statement.