MCPcopy Create free account
hub / github.com/rilldata/rill / writeInConditionForValues

Method writeInConditionForValues

runtime/metricsview/astexpr.go:560–659  ·  view source on GitHub ↗
(left *Expression, leftOverride string, vals []any, not bool)

Source from the content-addressed store, hash-verified

558}
559
560func (b *sqlExprBuilder) writeInConditionForValues(left *Expression, leftOverride string, vals []any, not bool) error {
561 var hasNull, hasNonNull bool
562 for _, v := range vals {
563 if v == nil {
564 hasNull = true
565 } else {
566 hasNonNull = true
567 }
568 if hasNull && hasNonNull {
569 break
570 }
571 }
572
573 if len(vals) == 0 {
574 if not {
575 b.writeString("TRUE")
576 } else {
577 b.writeString("FALSE")
578 }
579 return nil
580 }
581
582 b.writeByte('(')
583
584 if hasNonNull {
585 if leftOverride != "" {
586 b.writeParenthesizedString(leftOverride)
587 } else {
588 err := b.writeExpression(left)
589 if err != nil {
590 return err
591 }
592 }
593
594 if not {
595 b.writeString(" NOT IN ")
596 } else {
597 b.writeString(" IN ")
598 }
599
600 b.writeByte('(')
601 var comma bool
602 for _, val := range vals {
603 if val == nil {
604 continue
605 }
606 if comma {
607 b.writeString(",?")
608 } else {
609 comma = true
610 b.writeString("?")
611 }
612 b.args = append(b.args, val)
613 }
614 b.writeByte(')')
615 }
616
617 if hasNull {

Callers 1

writeInConditionMethod · 0.95

Calls 4

writeStringMethod · 0.95
writeByteMethod · 0.95
writeExpressionMethod · 0.95

Tested by

no test coverage detected