To add to what drh wrote, from the documentation for sqlite3_get_table() (both of which he probably also wrote): > NULL values result in NULL pointers. All other values are in their UTF-8 zero-terminated string representation as returned by sqlite3_column_text(). So the documented interface says it is possible for the table to include NULL values and it does not allow wiggle room for "unless the schema" exceptions.