The R Project SVN R-packages

Rev

Rev 3435 | Rev 3457 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3435 Rev 3446
Line 412... Line 412...
412
    return ret;
412
    return ret;
413
}
413
}
414
 
414
 
415
SEXP sdf_get_length(SEXP sdf) {
415
SEXP sdf_get_length(SEXP sdf) {
416
    char *iname;
416
    char *iname;
-
 
417
    int len;
-
 
418
    sqlite3_stmt *stmt;
-
 
419
    int res;
-
 
420
 
417
    iname  = CHAR(STRING_ELT(_getListElement(sdf, "iname"),0));
421
    iname  = CHAR(STRING_ELT(_getListElement(sdf, "iname"),0));
-
 
422
    sprintf(g_sql_buf[0], "select * from [%s].sdf_data;", iname);
418
    if (!USE_SDF1(iname, TRUE, FALSE)) return R_NilValue;
423
    if (!USE_SDF1(iname, TRUE, FALSE)) return R_NilValue;
419
 
424
 
420
    int len = sprintf(g_sql_buf[0], "select * from [%s].sdf_data;", iname);
-
 
421
 
-
 
422
    sqlite3_stmt *stmt;
-
 
423
    int res;
-
 
424
   
-
 
425
    res = sqlite3_prepare(g_workspace, g_sql_buf[0], len, &stmt, NULL);
425
    res = sqlite3_prepare(g_workspace, g_sql_buf[0], -1, &stmt, NULL);
426
    if (_sqlite_error(res)) return R_NilValue;
426
    if (_sqlite_error(res)) return R_NilValue;
427
 
427
 
428
    SEXP ret;
-
 
429
 
-
 
430
    len = sqlite3_column_count(stmt)-1;
428
    len = sqlite3_column_count(stmt)-1;
431
    PROTECT(ret = NEW_INTEGER(1));
-
 
432
    INTEGER(ret)[0] = len;
-
 
433
 
-
 
434
    sqlite3_finalize(stmt);
429
    sqlite3_finalize(stmt);
435
    UNPROTECT(1);
-
 
436
    return ret;
430
    return ScalarInteger(len);
437
}
431
}
438
 
432
 
439
/* get row count */
433
/* get row count */
440
SEXP sdf_get_row_count(SEXP sdf) {
434
SEXP sdf_get_row_count(SEXP sdf) {
441
    char *iname = CHAR(STRING_ELT(_getListElement(sdf, "iname"),0));
435
    char *iname = CHAR(STRING_ELT(_getListElement(sdf, "iname"),0));
Line 445... Line 439...
445
    SEXP ret;
439
    SEXP ret;
446
   
440
   
447
    nrow = _get_row_count2(iname, TRUE);
441
    nrow = _get_row_count2(iname, TRUE);
448
 
442
 
449
    if (nrow < 1) ret = R_NilValue;
443
    if (nrow < 1) ret = R_NilValue;
450
    else {
-
 
451
        PROTECT(ret = NEW_INTEGER(1));
-
 
452
        INTEGER(ret)[0] = nrow;
444
    else ret = ScalarInteger(nrow);
453
        UNPROTECT(1);
-
 
454
    }
-
 
455
 
445
 
456
    return ret;
446
    return ret;
457
}
447
}
458
 
448
 
459
    
449