in pkg/datasource/sql/exec/at/insert_executor.go [590:622]
func getInsertRows(insertStmt *ast.InsertStmt, pkIndexArray []int) ([][]interface{}, error) {
if insertStmt == nil {
return nil, nil
}
if len(insertStmt.Lists) == 0 {
return nil, nil
}
var rows [][]interface{}
for _, nodes := range insertStmt.Lists {
var row []interface{}
for i, node := range nodes {
if _, ok := node.(ast.ParamMarkerExpr); ok {
row = append(row, sqlPlaceholder)
} else if newNode, ok := node.(ast.ValueExpr); ok {
row = append(row, newNode.GetValue())
} else if newNode, ok := node.(*ast.VariableExpr); ok {
row = append(row, newNode.Name)
} else if _, ok := node.(*ast.FuncCallExpr); ok {
row = append(row, ast.FuncCallExpr{})
} else {
for _, index := range pkIndexArray {
if index == i {
return nil, fmt.Errorf("Unknown SQLExpr:%v", node)
}
}
row = append(row, ast.DefaultExpr{})
}
}
rows = append(rows, row)
}
return rows, nil
}