Run precog from anywhere! Previously, you had to actually chdir into the precog root.
Guard against a column having no data_type prop.
When a file is no longer included in the definition set, its data is removed from the cache. When a file which includes other files and that ifile is changed, the includes may be dropped, and those files' objects are invalidated.
Looking at the wrong collection to make sure all parsed files end up in _files
Dependency references really care about the actual instance of the object, so we need to check for identity here instead of equality. Two different objects can look pretty equal, and so references won't be transfered from the old one to the new one.
Generate a unified diff when plsql objects change, just to be more informative to the user.
Fixed a bug if an object type doesn't exist in the db yet, but does in the files.
Unnecessary ignore
Specify --@ volatile at the end of a line of plsql code to indicate where you don't care about changes (e.g. svn:keyword $) so that excessive changes aren't generated.
Introduced ErrorCheckingDiff to get the error checking ability but not the other complexities of PlsqlDiff
Clean up Synonym to not even bother to reference the object it may refer to. Really a synonym only refers to an object name, not the object itself. It does just fine when that object doesn't exist or you change it completely right under the synonym.
Try to find the position in the sourcefile that a PL/SQL error occurred. Oracle provides the line number of the error in relation to the start of that object's source, which could be anywhere in a given .sql file. This change makes the error message's line numbers match the correct line in the .sql file. In order to get the right line for the object creation the create_location was calculated after the 'CREATE OR REPLACE' clause instead of before.
Fixed a bug in some debug logging
Factor out some of the common cache code. Now cache files have a version string. This should be incremented when any objects change dict entries. An invalid version will invalidate the cache, and this will prevent cryptic AttributeErrors from deep in the code after loading old objects.
Remove unused keyword
Move test sql files into test/ directory
Only skip changes containing --@ volatile lines if there are the same number of - and + lines. This isn't perfect, but it's pretty close. You'd have to make sure you added exactly the same number of lines with --@volatile at the end as other lines you'd removed in order to trigger a false positive. I think this is acceptable for now.
Change the default_schema of a cached database to match whatever the new db connection's user is. This way the same file-based schema definition can be cached and use for whatever DB schema you connect to.
Specify which user@dsn is up to date.
Ignore types generated when a PL/SQL package has a type used in a pipelined function.