SQLite Forum

Does table have rowid?
Missed one.

 > The column cid is the ordinal position of the column; if so, what does -1 indicate?

The cid -1 indicates the "hidden implicit rowid".  This is added for completeness if the table has the "I am a ROWID table" indicator but not the "I have a named ROWID" indicator.

The aff (Affinity) column is also from the internal schema dictionary and does not depend on re-implementing the affinity deduction logic but simply reports what affinity is being used internally, which is an attribute stored in the internal schema information.

For more clarity the internal schema info has an item that indicates the cid of the iPKey.  If that value is -1 (meaning there is no column that is the explicit iPKey) and the table is a rowid table, then a row for cid -1 representing the hidden iPKey is output if hidded columns are being output.