Advanced QHacc
QHacc is aimed squarely at the non-advanced user. However, there are
some features that should generally be avoided by the casual user, but
may be of interest to people who like to break things. I call these the
advanced features of QHacc. You should not use any of the features
described here. They are for tinkerers and
live-by-the-seat-of-your-pantsers. Very often, they will completely
destroy your installation and all your data. You have been warned.
Undocumented Features
I should start off by saying I get a kick out of a section in the
documentation titled "Undocumented Features." Obviously, I'm documenting
them here, so perhaps this section should be titled "Screwball Antics," or
"How to Break QHacc," or some such, but those just don't make me laugh
like "Undocumented Features" does. I should also mention that some of
these features can be set on the plugin-specific page of the Preferences
Dialog, but that does not mean they are safe to use.
  - KEEPFILEPERMS By default, QHacc will reset the file
	permissions on files it writes so that only the current user can open
	them later. That's not strictly true, because setting the
	KEEPFILEPERMS preference to true will make QHacc leave the file
	permissions alone. It will leave file permissions as it finds
	them. This is highly discouraged, as it could leave your data readable
	by anyone on the system. However, if two users want to share one
	QHACC_HOME, it's very handy.
	
- CONSERVEIDSONIMPORT If you're a big importer and exporter,
	you may have noticed that QHacc burns through table ids like they're
	going out of style. That behavior has been curtailed somewhat as of
	release 2.9.3, but QHacc will still waste many IDs. Setting
	CONSERVEIDSONIMPORT to true will force QHacc to reclaim any IDs that
	it previously wasted. That is, all the IDs of QHacc's tables will be
	contiguous starting with ID=1. This is totally unnecessary. QHacc uses
	an unsigned integer for all its IDs, so even if you tried as hard as
	you could, it would next to impossible to run out of IDs. Still, if
	you're anal like me, you might want your IDs to be contiguous.
  
	This "feature" is particularly dangerous because it will invalidate
	duplicate checking on subsequent imports, and it will very likely
	break any archives you've made. Basically, you won't be able to import
	any data ever again, and recovery from this situation is impossible.
	 
- NORECALCONSTARTUP QHacc tries to recalculate its account
	balances every time it starts up. This is to make sure that any
	transactions added or modified without using the program are correctly
	accounted for. If you find that you never alter QHacc's data without
	using the GUI or CLI, you can set this preference to true, and QHacc
	will skip its usual calculations. This will make startup a bit faster,
	especially if you have lots of transactions and are using the native
	database. Account balances will still be recalculated when a
	transaction inside the account is altered.
	
- XMLCOMPRESSIONLEVEL Okay, all the dire warnings that
	do apply to the other options on this list probably don't apply
	to this one. If you're a fan of the XML plugin, but find that the file
	it creates is just too darned big (it is XML, after all), you can set
	this preference item to a number between 1 and 9. When set, the XML
	plugin will gzip its data before writing it to the filesystem. The
	higher the number, the better compression you'll see. Unless you go
	passed 9, in which case you'll get standard uncompressed files
	again. How does the engine know if the data is compressed before it
	tries to open your QHACC_HOME? It doesn't. It initially assumes the
	data is compressed, and if that doesn't yield usable data, it assumes
	it is uncompressed. If neither works, you're in trouble.