Yes, pragma table_info on a non-existent table is good example. I think we
can only return NULL and don't create the table in this case:

sqlite> .load ./libsqlitepragmacols.so
sqlite> select pragma_cols('pragma table_info(sqlite_master2)')='';

sqlite> select pragma_cols('pragma table_info(sqlite_master2)') IS NULL;
1
sqlite> select pragma_cols('pragma table_info(sqlite_master)');
cid, name, type, notnull, dflt_value, pk, readonly, enforced

Note: my SQLite build has additional fields "readonly" and "enforced".

Updated pragmacols.c include this lines:

    rc = sqlite3_prepare_v2(db, (char*)sqlite3_value_text(argv[0]), -1,
&stmt, NULL);
    if (rc != SQLITE_OK) {
        sqlite3_result_error_code(context, rc);
        return;
    }

    str = sqlite3_mprintf("%s", sqlite3_column_name(stmt,0));
    for (i=1;i<sqlite3_column_count(stmt);i++) {
        str = sqlite3_mprintf("%s, %s", str, sqlite3_column_name(stmt,i));
    }
    sqlite3_finalize(stmt);

    if (strlen(str)) {
        sqlite3_result_text( context, str, strlen(str), sqlite3_free);
    } else {
        sqlite3_result_null( context );
        sqlite3_free(str);
    }

-- 
Best regards, Alexey Pechnikov.
http://pechnikov.tel/
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to