On Mon, Oct 26, 2009 at 05:28:50PM -0400, Rob Sciuk scratched on the wall:
>
> I've just compiled the latest (3.6.19) with the
>
> -DSQLITE_ENABLE_COLUMN_METADATA flag set. The problem I'm seeing is that
> when I use an aggregate function in a select, the table name is not being
> returned from an sqlite3_column_table_name() is not returning the
> tablename as expected from a prepared statement, whereas if I actually
> request data from the table, it works fine:
>
> eg:
> If I prepare the statement "select * from q_user", q_user is returned as
> expected from sqlite3_column_table_name().
>
> If I prepare the statement "select count(*) from q_user",
> sqlite3_column_table_name() returns NULL.
>
> This is somewhat disconcerting, and seems repeatable. Are aggregate
> functions handled differently than tuple data?
The documentation on this is fairly clear:
http://sqlite.org/c3ref/column_database_name.html
If the Nth column returned by the statement is an expression or
subquery and is not a column value, then all of these functions
return NULL. These routine might also return NULL if a memory
allocation error occurs. Otherwise, they return the name of the
attached database, table and column that query result column was
extracted from.
Basically, in order for these functions to work, the returned column
needs to be a raw, unaltered, column directly from a specific table.
Any kind of expression (including aggregate functions) means the
data values in that result did not come directly from a specific
table column, and therefore these functions return NULL.
If you need a more general way to get the name of any column in any
query, you most likely want sqlite3_column_name().
-j
--
Jay A. Kreibich < J A Y @ K R E I B I.C H >
"Our opponent is an alien starship packed with atomic bombs. We have
a protractor." "I'll go home and see if I can scrounge up a ruler
and a piece of string." --from Anathem by Neal Stephenson
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users