MCPcopy Index your code
hub / github.com/bytebase/bytebase / generateSQLForTable

Function generateSQLForTable

backend/plugin/parser/plsql/backup.go:122–183  ·  view source on GitHub ↗
(ctx base.TransformContext, statementInfoList []statementInfo, targetDatabase string, tablePrefix string)

Source from the content-addressed store, hash-verified

120}
121
122func generateSQLForTable(ctx base.TransformContext, statementInfoList []statementInfo, targetDatabase string, tablePrefix string) (*base.BackupStatement, error) {
123 table := statementInfoList[0].table
124
125 version, ok := ctx.Version.(*Version)
126 if !ok {
127 version = &Version{
128 First: 11,
129 Second: 0,
130 }
131 }
132
133 targetTable := fmt.Sprintf("%s_%s_%s", tablePrefix, table.Table, table.Schema)
134 if version.GTE(&Version{First: 12, Second: 2}) {
135 targetTable, _ = common.TruncateString(targetTable, maxTableNameLengthAfter12_2)
136 } else {
137 targetTable, _ = common.TruncateString(targetTable, maxTableNameLengthBefore12_2)
138 }
139
140 var buf strings.Builder
141 if _, err := fmt.Fprintf(&buf, `CREATE TABLE "%s"."%s" AS`+"\n", targetDatabase, targetTable); err != nil {
142 return nil, errors.Wrap(err, "failed to write to buffer")
143 }
144 for i, info := range statementInfoList {
145 if i != 0 {
146 if _, err := buf.WriteString("\n UNION\n"); err != nil {
147 return nil, errors.Wrap(err, "failed to write to buffer")
148 }
149 }
150 t := info.table
151 if t.Alias != "" {
152 if _, err := fmt.Fprintf(&buf, ` SELECT "%s".* FROM `, t.Alias); err != nil {
153 return nil, errors.Wrap(err, "failed to write to buffer")
154 }
155 } else {
156 if t.HasSchema {
157 if _, err := fmt.Fprintf(&buf, ` SELECT "%s"."%s".* FROM `, t.Schema, t.Table); err != nil {
158 return nil, errors.Wrap(err, "failed to write to buffer")
159 }
160 } else {
161 if _, err := fmt.Fprintf(&buf, ` SELECT "%s".* FROM `, t.Table); err != nil {
162 return nil, errors.Wrap(err, "failed to write to buffer")
163 }
164 }
165 }
166 if err := writeSuffixSelectClause(&buf, info.node, info.fullSQL); err != nil {
167 return nil, errors.Wrap(err, "failed to write suffix select clause")
168 }
169 }
170
171 if _, err := buf.WriteString(";"); err != nil {
172 return nil, errors.Wrap(err, "failed to write to buffer")
173 }
174
175 return &base.BackupStatement{
176 Statement: buf.String(),
177 SourceSchema: table.Schema,
178 SourceTableName: table.Table,
179 TargetTableName: targetTable,

Callers 1

generateSQLFunction · 0.70

Calls 5

TruncateStringFunction · 0.92
zeroBasedColumnPositionFunction · 0.85
GTEMethod · 0.80
writeSuffixSelectClauseFunction · 0.70
StringMethod · 0.65

Tested by

no test coverage detected