MCPcopy Create free account
hub / github.com/ajitpratap0/GoSQLX / PutMergeStatement

Function PutMergeStatement

pkg/sql/ast/pool.go:1556–1608  ·  view source on GitHub ↗

PutMergeStatement returns a MergeStatement to the pool. It recursively releases nested expressions in WHEN clauses and OUTPUT.

(stmt *MergeStatement)

Source from the content-addressed store, hash-verified

1554// PutMergeStatement returns a MergeStatement to the pool.
1555// It recursively releases nested expressions in WHEN clauses and OUTPUT.
1556func PutMergeStatement(stmt *MergeStatement) {
1557 if stmt == nil {
1558 return
1559 }
1560
1561 // Release OnCondition
1562 PutExpression(stmt.OnCondition)
1563 stmt.OnCondition = nil
1564
1565 // Release WHEN clause expressions
1566 for i := range stmt.WhenClauses {
1567 if stmt.WhenClauses[i] == nil {
1568 continue
1569 }
1570 PutExpression(stmt.WhenClauses[i].Condition)
1571 stmt.WhenClauses[i].Condition = nil
1572 if stmt.WhenClauses[i].Action != nil {
1573 for j := range stmt.WhenClauses[i].Action.SetClauses {
1574 PutExpression(stmt.WhenClauses[i].Action.SetClauses[j].Value)
1575 stmt.WhenClauses[i].Action.SetClauses[j].Value = nil
1576 stmt.WhenClauses[i].Action.SetClauses[j].Column = ""
1577 }
1578 stmt.WhenClauses[i].Action.SetClauses = stmt.WhenClauses[i].Action.SetClauses[:0]
1579 for j, expr := range stmt.WhenClauses[i].Action.Values {
1580 PutExpression(expr)
1581 stmt.WhenClauses[i].Action.Values[j] = nil
1582 }
1583 stmt.WhenClauses[i].Action.Values = stmt.WhenClauses[i].Action.Values[:0]
1584 stmt.WhenClauses[i].Action.Columns = stmt.WhenClauses[i].Action.Columns[:0]
1585 stmt.WhenClauses[i].Action.ActionType = ""
1586 stmt.WhenClauses[i].Action.DefaultValues = false
1587 stmt.WhenClauses[i].Action = nil
1588 }
1589 stmt.WhenClauses[i].Type = ""
1590 stmt.WhenClauses[i] = nil
1591 }
1592 stmt.WhenClauses = stmt.WhenClauses[:0]
1593
1594 // Release OUTPUT expressions
1595 for i, expr := range stmt.Output {
1596 PutExpression(expr)
1597 stmt.Output[i] = nil
1598 }
1599 stmt.Output = stmt.Output[:0]
1600
1601 // Reset TargetTable / SourceTable (value types - zero them out)
1602 stmt.TargetTable = TableReference{}
1603 stmt.SourceTable = TableReference{}
1604 stmt.TargetAlias = ""
1605 stmt.SourceAlias = ""
1606
1607 mergeStmtPool.Put(stmt)
1608}
1609
1610// GetCreateViewStatement gets a CreateViewStatement from the pool.
1611func GetCreateViewStatement() *CreateViewStatement {

Callers 2

releaseStatementFunction · 0.85
TestMergeStatementPoolFunction · 0.85

Calls 2

PutExpressionFunction · 0.85
PutMethod · 0.80

Tested by 1

TestMergeStatementPoolFunction · 0.68