(left, right *Expression, leftOverride string, not bool)
| 521 | } |
| 522 | |
| 523 | func (b *sqlExprBuilder) writeInCondition(left, right *Expression, leftOverride string, not bool) error { |
| 524 | if right.Value != nil { |
| 525 | vals, ok := right.Value.([]any) |
| 526 | if !ok { |
| 527 | return fmt.Errorf("the right value must be a list of values for an IN condition") |
| 528 | } |
| 529 | |
| 530 | return b.writeInConditionForValues(left, leftOverride, vals, not) |
| 531 | } |
| 532 | |
| 533 | b.writeByte('(') |
| 534 | |
| 535 | if leftOverride != "" { |
| 536 | b.writeParenthesizedString(leftOverride) |
| 537 | } else { |
| 538 | err := b.writeExpression(left) |
| 539 | if err != nil { |
| 540 | return err |
| 541 | } |
| 542 | } |
| 543 | |
| 544 | if not { |
| 545 | b.writeString(" NOT IN ") |
| 546 | } else { |
| 547 | b.writeString(" IN ") |
| 548 | } |
| 549 | |
| 550 | err := b.writeExpression(right) |
| 551 | if err != nil { |
| 552 | return err |
| 553 | } |
| 554 | |
| 555 | b.writeByte(')') |
| 556 | |
| 557 | return nil |
| 558 | } |
| 559 | |
| 560 | func (b *sqlExprBuilder) writeInConditionForValues(left *Expression, leftOverride string, vals []any, not bool) error { |
| 561 | var hasNull, hasNonNull bool |
no test coverage detected