getSequences gets all sequences of a database.
(txn *sql.Tx, schemaName string)
| 1166 | |
| 1167 | // getSequences gets all sequences of a database. |
| 1168 | func getSequences(txn *sql.Tx, schemaName string) ([]*storepb.SequenceMetadata, error) { |
| 1169 | var sequences []*storepb.SequenceMetadata |
| 1170 | |
| 1171 | // Get sequence comments |
| 1172 | sequenceCommentMap, err := getSequenceComments(txn, schemaName) |
| 1173 | if err != nil { |
| 1174 | return nil, errors.Wrapf(err, "failed to get sequence comments") |
| 1175 | } |
| 1176 | |
| 1177 | query := fmt.Sprintf(` |
| 1178 | SELECT SEQUENCE_NAME FROM ALL_SEQUENCES |
| 1179 | WHERE SEQUENCE_OWNER = '%s' |
| 1180 | ORDER BY SEQUENCE_NAME`, schemaName) |
| 1181 | |
| 1182 | slog.Debug("running get sequences query") |
| 1183 | rows, err := txn.Query(query) |
| 1184 | if err != nil { |
| 1185 | return nil, util.FormatErrorWithQuery(err, query) |
| 1186 | } |
| 1187 | defer rows.Close() |
| 1188 | |
| 1189 | for rows.Next() { |
| 1190 | seq := &storepb.SequenceMetadata{} |
| 1191 | if err := rows.Scan(&seq.Name); err != nil { |
| 1192 | return nil, err |
| 1193 | } |
| 1194 | // Skip system-generated sequences (e.g., ISEQ$$_* for IDENTITY columns) |
| 1195 | if strings.HasPrefix(seq.Name, "ISEQ$$_") { |
| 1196 | continue |
| 1197 | } |
| 1198 | key := db.TableKey{Schema: schemaName, Table: seq.Name} |
| 1199 | if comment, ok := sequenceCommentMap[key]; ok { |
| 1200 | seq.Comment = comment |
| 1201 | } |
| 1202 | sequences = append(sequences, seq) |
| 1203 | } |
| 1204 | if err := rows.Err(); err != nil { |
| 1205 | return nil, err |
| 1206 | } |
| 1207 | if err := rows.Close(); err != nil { |
| 1208 | return nil, err |
| 1209 | } |
| 1210 | |
| 1211 | return sequences, nil |
| 1212 | } |
| 1213 | |
| 1214 | func getRoutines(txn *sql.Tx, schemaName string) ([]*storepb.FunctionMetadata, []*storepb.ProcedureMetadata, []*storepb.PackageMetadata, error) { |
| 1215 | var functions []*storepb.FunctionMetadata |
no test coverage detected