Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
}