rc_t vdb_info( Vector * schema_list, dump_format_t format, const VDBManager *mgr, const char * acc_or_path, struct num_gen * rows ) { rc_t rc = 0; VSchema * schema = NULL; vdh_parse_schema( mgr, &schema, schema_list ); if ( format == df_sql ) rc = vdb_info_print_sql_header( acc_or_path ); if ( rows != NULL && !num_gen_empty( rows ) ) { const struct num_gen_iter * iter; rc = num_gen_iterator_make( rows, &iter ); if ( rc == 0 ) { int64_t max_row; rc = num_gen_iterator_max( iter, &max_row ); if ( rc == 0 ) { int64_t id; uint8_t digits = digits_of( max_row ); while ( rc == 0 && num_gen_iterator_next( iter, &id, &rc ) ) { char acc[ 64 ]; size_t num_writ; rc_t rc1 = -1; switch ( digits ) { case 1 : rc1 = string_printf ( acc, sizeof acc, &num_writ, "%s%ld", acc_or_path, id ); break; case 2 : rc1 = string_printf ( acc, sizeof acc, &num_writ, "%s%.02ld", acc_or_path, id ); break; case 3 : rc1 = string_printf ( acc, sizeof acc, &num_writ, "%s%.03ld", acc_or_path, id ); break; case 4 : rc1 = string_printf ( acc, sizeof acc, &num_writ, "%s%.04ld", acc_or_path, id ); break; case 5 : rc1 = string_printf ( acc, sizeof acc, &num_writ, "%s%.05ld", acc_or_path, id ); break; case 6 : rc1 = string_printf ( acc, sizeof acc, &num_writ, "%s%.06ld", acc_or_path, id ); break; case 7 : rc1 = string_printf ( acc, sizeof acc, &num_writ, "%s%.07ld", acc_or_path, id ); break; case 8 : rc1 = string_printf ( acc, sizeof acc, &num_writ, "%s%.08ld", acc_or_path, id ); break; case 9 : rc1 = string_printf ( acc, sizeof acc, &num_writ, "%s%.09ld", acc_or_path, id ); break; } if ( rc1 == 0 ) rc = vdb_info_1( schema, format, mgr, acc, acc_or_path ); } } num_gen_iterator_destroy( iter ); } } else rc = vdb_info_1( schema, format, mgr, acc_or_path, acc_or_path ); if ( schema != NULL ) VSchemaRelease( schema ); return rc; }
static rc_t vdb_fastq_database( const p_dump_context ctx, const VDBManager *mgr, fastq_ctx * fctx ) { const VDatabase * db; VSchema *schema = NULL; rc_t rc; vdh_parse_schema( mgr, &schema, &(ctx->schema_list) ); rc = VDBManagerOpenDBRead( mgr, &db, schema, ctx->path ); DISP_RC( rc, "VDBManagerOpenDBRead() failed" ); if ( rc == 0 ) { bool table_defined = ( ctx->table != NULL ); if ( !table_defined ) table_defined = vdh_take_this_table_from_db( ctx, db, "SEQUENCE" ); if ( table_defined ) { const VTable * tbl; rc = VDatabaseOpenTableRead( db, &tbl, ctx->table ); DISP_RC( rc, "VDatabaseOpenTableRead() failed" ); if ( rc == 0 ) { rc = vdb_fastq_tbl( ctx, tbl, fctx ); VTableRelease( tbl ); } } else { LOGMSG( klogInfo, "opened as vdb-database, but no table found/defined" ); ctx->usage_requested = true; } VDatabaseRelease( db ); } VSchemaRelease( schema ); return rc; }
static rc_t vdb_fastq_table( const p_dump_context ctx, const VDBManager *mgr, fastq_ctx * fctx ) { const VTable * tbl; VSchema * schema = NULL; rc_t rc; vdh_parse_schema( mgr, &schema, &(ctx->schema_list) ); rc = VDBManagerOpenTableRead( mgr, &tbl, schema, ctx->path ); DISP_RC( rc, "VDBManagerOpenTableRead() failed" ); if ( rc == 0 ) { rc = vdb_fastq_tbl( ctx, tbl, fctx ); VTableRelease( tbl ); } VSchemaRelease( schema ); return rc; }