Database objects are identified by name, check is case-insensitive, so for example table myTable vs MyTable is considered as the same table.
All objects except Plagmas are built by reading object definition from sqlite_master system table. List of Pragmas to read is configured in the application settings. Application also uses pragma table_info command to read list of view columns. This command is also used to read list of table columns in case if they could not be parsed from the table definition.
All objects are compared as their text presentation, that's the text you observe if you open an object in a Text diff tab. In the Pro you can set up text diff options to ignore some general text-related changes like case-insensitive or ignore-whitespace.
As of Oct 2023, application supports all table definition attributes mentioned in the SQLite CREATE TABLE specification. However, as mentioned above - application uses own table definition parsing and it can be different compared to SQLite internal parser. Particularly, SQLite parser may allow some statements which should not be allowed by its specification. For example like this one. It may happen that such object definition would not be parsed by application correctly.
The Pro version also allows you to compare table definition from sqlite_master as is, this can be useful if you want to ensure no changes are lost. There is an appropriate button in the Table structure diff tab.
Virtual table definition statements are not parsed and used as is.
Last updated: 2023-10-05