MCPcopy Create free account
hub / github.com/cloudquery/cloudquery / getTableInfo

Method getTableInfo

plugins/destination/duckdb/client/migrate.go:243–296  ·  view source on GitHub ↗
(ctx context.Context, tableName string)

Source from the content-addressed store, hash-verified

241}
242
243func (c *Client) getTableInfo(ctx context.Context, tableName string) (*schema.Table, error) {
244 info := tableInfo{}
245 rows, err := c.db.QueryContext(ctx, fmt.Sprintf(sqlTableInfo, tableName))
246 if err != nil {
247 if strings.Contains(err.Error(), fmt.Sprintf("Table with name %s does not exist!", tableName)) {
248 // Table doesn't exist
249 return nil, nil
250 }
251 return nil, err
252 }
253 defer rows.Close()
254 for rows.Next() {
255 colInfo := columnInfo{}
256 if err := rows.Scan(
257 &colInfo.index,
258 &colInfo.name,
259 &colInfo.typ,
260 &colInfo.notNull,
261 &colInfo.defaultValue,
262 &colInfo.pk); err != nil {
263 return nil, err
264 }
265 colInfo.typ = strings.ToLower(colInfo.typ)
266 colInfo.unique, err = c.isColumnUnique(ctx, tableName, colInfo.name)
267 if err != nil {
268 return nil, err
269 }
270 info.columns = append(info.columns, colInfo)
271 }
272 if err := rows.Err(); err != nil {
273 return nil, err
274 }
275
276 if len(info.columns) == 0 {
277 // Table doesn't exist
278 return nil, nil
279 }
280
281 columns := make(schema.ColumnList, len(info.columns))
282 for i, col := range info.columns {
283 columns[i] = schema.Column{
284 Name: col.name,
285 Type: duckDBToArrow(col.typ),
286 NotNull: col.notNull,
287 PrimaryKey: col.pk,
288 Unique: col.unique,
289 }
290 }
291
292 return &schema.Table{
293 Name: tableName,
294 Columns: columns,
295 }, nil
296}

Callers 1

MigrateTablesMethod · 0.95

Calls 6

isColumnUniqueMethod · 0.95
duckDBToArrowFunction · 0.85
NextMethod · 0.80
ScanMethod · 0.80
CloseMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected