========= ral 0.10.2 =========
2012/02/26 mangoa01
* configure:
* configure.in:
* doc/ral/relation.man:
* doc/ral/relformat.man:
* doc/ral/relvar.man:
* doc/ral/serialize.man:
* doc/ral/tuple.man:
* ralutil/doc/ralutil.man:
* ralutil/pkgIndex.tcl:
* ralutil/ralutil.tcl:
* ralutil/teapot.txt:
* src/ral.c:
* src/ral.tcl:
* src/ral_attribute.c:
* src/ral_relation.c:
* src/ral_relationcmd.c:
* src/ral_relvar.c:
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_tuplecmd.c:
* src/ral_tupleheading.c:
* test/ral.test:
Fixed the bignum problem by properly initializing the Tom Math stubs.
Cleaned up a number of compiler warning for unused variables when
compiled with NDEBUG to remove assertions.
========= ral 0.10.1 =========
2011/10/08 mangoa01
* doc/ral/relation.man:
* doc/ral/relformat.man:
* doc/ral/relvar.man:
* doc/ral/serialize.man:
* doc/ral/tuple.man:
* ralutil/doc/ralutil.man:
Update documentation version numbers in preparation for new release.
* ralutil/pkgIndex.tcl:
* ralutil/ralutil.tcl:
* ralutil/teapot.txt:
Update to ralutil package revision numbers.
Improved system generated ID's procedures. Now the path name to a
relvar will be automatically resolved and if the attribute that is
the system generated ID is missing in the trace callback, it is added
automatically.
2011/10/03 mangoa01
* src/ral_relation.c:
Put in a workaround for Tcl 8.4. The hash table code in 8.4 clears
the ClientData field whenever any new entry is created -- even if a
custom hash type supplied an allocation function. Later versions of
the code in Tcl 8.5 do not clear ClientData if the allocation
function was supplied (i.e. it depends upon that allocation function
to set a value into ClientData). This difference causes the NULL
pointer to dereferenced when TclRAL is compiled against Tcl 8.4. Here
we put in a workaround.
2011/09/26 mangoa01
* src/ral.tcl:
* src/ral_relationcmd.c:
* src/ral_relvar.h:
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_utils.h:
* test/ral.test:
Corrected several issues when trying to compile for Tcl 8.4 and for
compilers that are strict about C89 syntax.
2011/08/16 mangoa01
* configure:
* configure.in:
* src/ral_relvarobj.c:
Corrected a problem with a format statement that contained too few
arguments.
Incremented version number in preparation for a new release.
* src/ral.tcl:
Increment revision number in Tcl script portion of the package.
2011/08/09 mangoa01
* src/ral_relation.c:
Remove C99 style comment for the benefit of older compilers.
========= ral 0.10.0 =========
2011/06/08 mangoa01
* ralutil/teapot.txt:
* src/ral.tcl:
Corrected a problem with foreign key constraints when serializing
relvars to a SQLite database.
2011/06/06 mangoa01
* doc/ral/relation.man:
* doc/ral/relformat.man:
* doc/ral/relvar-examples.tcl:
* doc/ral/relvar.man:
* doc/ral/serialize.man:
* doc/ral/tuple.man:
* ralutil/doc/ralutil.man:
* src/ral_relationcmd.c:
* src/ral_relvarobj.c:
Clean up of documenation, adding the remaining relvar commands that
are going into the 0.10.0 release.
2011/06/05 mangoa01
* Makefile.in:
* configure:
* configure.in:
* src/ral.c:
* src/ral.tcl:
* src/ral_attribute.c:
* src/ral_attribute.h:
* src/ral_joinmap.c:
* src/ral_joinmap.h:
* src/ral_relation.c:
* src/ral_relation.h:
* src/ral_relationcmd.c:
* src/ral_relationcmd.h:
* src/ral_relationobj.c:
* src/ral_relationobj.h:
* src/ral_relvar.c:
* src/ral_relvar.h:
* src/ral_relvarcmd.c:
* src/ral_relvarcmd.h:
* src/ral_relvarobj.c:
* src/ral_relvarobj.h:
* src/ral_tuple.c:
* src/ral_tuple.h:
* src/ral_tuplecmd.c:
* src/ral_tuplecmd.h:
* src/ral_tupleheading.c:
* src/ral_tupleheading.h:
* src/ral_tupleobj.c:
* src/ral_tupleobj.h:
* src/ral_utils.c:
* src/ral_utils.h:
* src/ral_vector.c:
* src/ral_vector.h:
* tclconfig/install-sh:
* tclconfig/tcl.m4:
* test/ral.test:
Completed procedural constrain command.
Updated to latest TEA files (3.9).
Corrected long latent bug where duplicated attribute names in a
relation join "-using" argument caused a panic and aborted the
program.
2011/05/30 mangoa01
* doc/ral/relation.man:
* test/ral.test:
Updates for "uinsert" command.
2011/04/03 mangoa01
* src/ral.tcl:
* src/ral_relvar.c:
* src/ral_relvar.h:
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_relvarobj.h:
* src/ral_utils.c:
* src/ral_utils.h:
Checkpoint. Saving the current state of the procedural constraint
code. It's not done yet, but I wanted it in the repository.
2011/01/16 mangoa01
* configure:
* configure.in:
* doc/ral/relation.man:
* doc/ral/relformat.man:
* doc/ral/relvar.man:
* doc/ral/serialize.man:
* doc/ral/tuple.man:
* ralutil/doc/ralutil.man:
* ralutil/pkgIndex.tcl:
* ralutil/ralutil.tcl:
* src/ral_relation.c:
* src/ral_relation.h:
* src/ral_relationcmd.c:
* src/ral_relvar.c:
* src/ral_relvarcmd.c:
* src/ral_utils.c:
* src/ral_utils.h:
* test/ral.test:
* test/serialize.test:
Added commands to do disjoin union of both relation values and
of values stored in relvars.
2010/12/05 mangoa01
* src/ral.tcl:
Completed SQLite load / store procedures.
* src/ral.tcl:
* src/ral_relationcmd.c:
First cut at proc to store and load sets of relvars to/from SQLite.
2010/11/14 mangoa01
* src/ral_relationcmd.c:
Added "relation uinsert" command to perform an insert without
throwing an error on duplicates.
* src/ral.c:
Improvements for Windoze builds.
2010/10/20 mangoa01
* src/ral_relationcmd.c:
Changed operation of relation list command to include a sorting option.
* doc/ral/relation.man:
Doc changes for new flavor of relation list command.
* test/ral.test:
Test cases for new version of relation list command and other new
test cases.
2009/09/19 mangoa01
* ralutil/teapot.txt:
* src/ral_relvar.c:
Fixes Bug # 2860118. Extends meta data for "ralutil" package and
eliminates the variable declaration after executable statements.
* src/ral_vector.c:
Fixes Bug # 2860772, by putting an a hack for Windows builds.
* Makefile.in:
* configure:
* configure.in:
Removed "ralutil.tcl" from the build for "ral". Ralutil is now treated
as a separate package.
========= ral 0.9.1 =========
2009/09/12 mangoa01
* doc/ral/relation.man:
* doc/ral/relvar.man:
* src/ral_relationcmd.c:
* src/ral_relvar.c:
* src/ral_relvar.h:
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_relvarobj.h:
* src/ral_utils.c:
* src/ral_utils.h:
* test/ral.test:
* test/trace.test:
Added "relation fromlist" and "relation fromdict" commands.
Corrected problem with recursive call attempting to modify
a relvar already in the process of being modified.
Added trace suspend so that tracing could be temporarily suspended.
2009/08/15 mangoa01
* src/ral_relvarcmd.c:
* src/ral_utils.c:
* src/ral_utils.h:
* test/trace.test:
Corrected the problem where a trace command attempts to modify the
same relvar that is currently being traced. Since the traced relvar
is in the middle of a possible modification, the trace command cannot
be allowed to come in an rip out the existing data structure.
All havoc breaks loose when the trace command returns and we continue
to iterate through data that has been changed. Prohibiting this
seems to be the only realistic course.
* doc/ral/relvar.man:
* ralutil/doc/ralutil.man:
Minor doc corrections. Added an example for "rvajoin".
2009/07/25 mangoa01
* ralutil/doc/ralutil.man:
* ralutil/pkgIndex.tcl:
* ralutil/ralutil.tcl:
* src/ralutil.tcl:
Added "rvajoin" procedure to ralutil.
* configure:
* configure.in:
* doc/ral/relation.man:
* ralutil/doc/ralutil.man:
* ralutil/teapot.txt:
* src/ral_relationcmd.c:
* src/ral_utils.c:
* src/ral_utils.h:
* test/ral.test:
Added new "relation issametype" command to provide an unambiguous
means of determining if two relations have the same heading. Updated
"config.in" to reflect the reorganization of "ralutil" source.
2009/07/12 mangoa01
* demos/ralview.tcl:
* doc/ral/relvar.man:
* src/ral_attribute.c:
* src/ral_relationcmd.c:
* test/ral.test:
Corrected several problems that originated from a single cause.
The problems occurred when commands line "extend" or "summarize"
create relation or tuple valued attributes and then the expressions
that return the value instead return a value with an incorrect heading
or different type altogether.
2009/06/21 mangoa01
* src/ral.tcl:
Cleaned up for 0.9.1 release.
Deal better with version compatibility checks.
* configure:
* configure.in:
* doc/ral/relation.man:
* doc/ral/relformat.man:
* doc/ral/relvar.man:
* doc/ral/serialize.man:
* doc/ral/tuple.man:
* ralutil/doc/ralutil.man:
* test/merge1.mk:
* test/merge2.mk:
* test/merge2.ral:
Preparing for 0.9.1 release. Changing doc version numbers.
2009/06/07 mangoa01
* src/ral_relation.c:
* src/ral_relvar.c:
* src/ral_relvarcmd.c:
Corrections for compile errors for non-gcc compilers.
* doc/ral/relvar.man:
Minor correction to trace documentation.
* test/ral.test:
Tests to check that "tuple update" fails on updates to Tuple or
Relation valued attributes if the headers don't match.
2009/05/10 mangoa01
* doc/Makefile:
* doc/ral/relation.man:
Correction to "tag" command manual page.
========= ral 0.9.0 =========
2009/03/29 mangoa01
Revision 0.9.0 is a major change in TclRAL.
N.B. 0.9.0 breaks script level compatibility with previous versions of TclRAL.
Revision 0.9.0 solves a major conceptual error in the foundation of TclRAL. In
this revision, relation values do not have identifiers. Identifiers are only
found in relvars. In all previous revision of TclRAL, identifiers were
associated with relation values and only by virtue of the fact that relvar
store relation variables, did the identification constraints get associated
with relvars. This was wrong. Relation values should only enforce the notion of
a relation begin a set and insist that all tuples be distinct in a relation.
This only require a definition of tuple equality. The fact that subsets of
attributes are all that is necessary to identify a particular tuple is a
"relvar" identity constraint and is only enforced on relation values that are
actually stored in a relvar.
This seemingly simple change has many ramifications for TclRAL and the required
changes are script incompatible. I decided to use this opportunity to make other
incompatible changes that need to be done and have been building up over the
years. The goal is to stabilize the interface during the 0.9.X releases heading
for a 1.0 where backward compatibility will be a priority design goal. Below
is the list of major changes going from 0.8.9 to 0.9.0:
1. The keywords "Tuple" and "Relation" have been removed from the string
representation of tuples and relations. This was probably a design misfeature
in the first place. At the time I was concerned about being able to adequately
distinguish tuple and relation values from other Tcl strings and lists. That
concern proved to be inconsequential in practice.
2. The string representation of a relation value now no longer has a list
of identifiers.
3. Added the commands:
relation table
relation summarizeby
relation wrap
relation unwrap
relation update
relvar exists
relvar constraint exists
relvar identifiers
relvar restrictone
relvar updateper
merge
mergeFromFile
mergeFromMk
4. Deleted the commands:
relation choose (cf. "relvar restrictone")
relation identifiers (cf. "relvar identifiers")
relation reidentify
5. Changed the names of:
relation include ==> relation insert
6. The following commands have new argument interfaces.
tuple relation
tuple update
tuple wrap
relation array
7. The "tuple update" command no longer operates on a tuple variable but
rather a tuple value, returning a new tuple value. This command no longer
serves the same role as previously in the operation of "relvar update".
8. The script part of the "relvar update" and "relvar updateone" commands must
now return a tuple value. Previously, the updated tuple value was placed back
in a tuple variable. Now it is the return value of the script that is used to
update the matching tuple values. This is more in keeping with the interfaces
used by relvar traces and eliminates the need for a tuple operation that
updates a variable in place. Hence the change in semantics of "tuple update".
9. The serialization formats used produced and consumed by "serialize",
"deserialize", "storeToMk" and "loadFromMk" are not backward compatible.
These changes have simplified the serialization formats and corrected
a number of problems with the metakit storage. Also, the namespace of
the relvar is no longer "flattened out" and what is stored is the full
path from the global namespace down. To aid in the transition to 0.9.X,
the deserialize command can interpret the 0.8.X serialization format.
2009/04/11 mangoa01
* src/ral_relvarcmd.c:
* src/ral_tuple.c:
Minor clean up to get rid of compiler warnings about usage of
uninitialized variables.
2009/04/06 mangoa01
* raloo/pkgIndex.tcl:
* raloo/raloo.tcl:
* raloo/tests/raloo.test:
First cut at revising raloo to run with ral 0.9.0.
* ralutil/ralutil.tcl:
Make sure to require the correct version of ral.
2009/04/05 mangoa01
* CHANGES:
Additions to the change log for 0.9.
* src/ral_relation.c:
Corrected an error in duplicating relation values where the tuples
ended up refering to a heading that was not the heading of the
relation value.
* doc/ral/relformat.man:
* doc/ral/relvar.man:
* doc/ral/serialize.man:
* doc/ral/tuple.man:
* ralutil/doc/ralutil.man:
Documentation updates.
2009/03/29 mangoa01
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_relvarobj.h:
Added "relvar constraint exists" command.
* test/update.test:
Added "relvar updateper" test case.
* CHANGES:
* doc/ral/relation.man:
* doc/ral/relvar.man:
* doc/ral/serialize.man:
* src/ral.tcl:
* test/merge1.mk:
* test/merge1.ral:
* test/merge2.mk:
* test/merge2.ral:
* test/serialize.test:
Additional work on the documentation.
Added commands to merge relvars from other files.
Additional work on testing serialization commands.
* src/ral_utils.c:
Corrected error code strings.
2009/03/28 mangoa01
* doc/ral/serialize.man:
* src/ral.tcl:
* test/serialize.test:
* test/serialized0.8.9.ral:
Added capability to read old serialization format.
2009/03/23 mangoa01
* doc/dogexample.tcl:
* doc/ral/relation.man:
* doc/ral/relvar-examples.tcl:
* doc/ral/relvar.man:
* pkgIndex.tcl.in:
* ralutil/doc/ralutil.man:
* ralutil/pkgIndex.tcl:
* ralutil/ralutil.tcl:
Split out "ralutil" package for easier distribution.
Added docs for "ralutil" package.
Update docs for "ral".
2009/03/22 mangoa01
* CHANGES:
* doc/ral/relation.man:
* doc/ral/relvar.man:
* src/ral_relation.c:
* src/ral_relvar.c:
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_relvarobj.h:
* src/ral_tuple.c:
* src/ral_tuple.h:
* src/ral_tuplecmd.c:
* src/ral_tupleheading.h:
* src/ral_utils.c:
* src/ral_utils.h:
* test/trace.test:
* test/update.test:
Added the "relvar updateper" command to update relvars from a
relation value. More doc additions and corrections.
2009/03/01 mangoa01
* doc/ral/relation.man:
* src/ral_relationcmd.c:
* test/ral.test:
Added "relation update" command to be able to generate updates
in a relation value.
2009/02/23 mangoa01
* doc/ral/relation.man:
* doc/ral/relvar.man:
* doc/ral/tuple.man:
* src/ral_relation.c:
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_tuplecmd.c:
* src/ralutil.tcl:
* test/ral.test:
* test/trace.test:
* test/update.test:
Made "tuple update" return an updated tuple value rather than update
a tuple variable in place. Also made "relvar update" work on the
return value of the script rather than the variable used to store the
iterated tuple variable. Now there are not update in place commands
except relvar commands. Next is to put a "relation update" command in
place corresponding to "tuple update".
2009/02/22 mangoa01
* src/ral_relation.c:
* src/ral_relationcmd.c:
* src/ral_tupleheading.c:
* src/ral_utils.c:
* src/ral_utils.h:
* test/ral.test:
Added "relation summarizeby" command that will perform the summarize
on a relation value whose "per" relation is a project of the same
value.
* doc/ral/relation.man:
* doc/ral/tuple.man:
* src/ral_relation.c:
* src/ral_relationcmd.c:
* src/ral_tuplecmd.c:
* test/ral.test:
Added "relation wrap" command and changed the interface to
"tuple wrap" to correspond to it.
* doc/ral/relation.man:
* src/ral_relationcmd.c:
* src/ral_tupleobj.c:
* src/ral_tupleobj.h:
* src/ral_utils.c:
* src/ral_utils.h:
* test/ral.test:
Corrected a problem in "relation wrap" with object reference counts.
Added "relation table" command to make literal relation value creation
easier.
2009/02/17 mangoa01
* doc/ral/relation.man:
* doc/ral/relvar.man:
* doc/ral/serialize.man:
* doc/ral/tuple.man:
* src/ral.tcl:
* src/ral_attribute.c:
* src/ral_attribute.h:
* src/ral_relation.c:
* src/ral_relation.h:
* src/ral_relationcmd.c:
* src/ral_relvarcmd.c:
* src/ral_tuple.c:
* src/ral_tuplecmd.c:
* src/ral_tupleobj.c:
* src/ral_utils.c:
* src/ral_utils.h:
* src/ralutil.tcl:
* test/ral.test:
* test/serialize.test:
* test/testdata.tcl:
Corrected a number of problems with internal string representations.
Serialization is now much better and the ral utils have been
reworked. Added "relation unwrap" and stub for "relation wrap".
Updated relvar docs.
2009/02/15 mangoa01
* src/ral.c:
* src/ral_attribute.c:
* src/ral_attribute.h:
* src/ral_relation.c:
* src/ral_relationcmd.c:
* src/ral_relationcmd.h:
* src/ral_relationobj.c:
* src/ral_relvar.c:
* src/ral_relvar.h:
* src/ral_relvarcmd.c:
* src/ral_relvarcmd.h:
* src/ral_relvarobj.c:
* src/ral_relvarobj.h:
* src/ral_tuple.c:
* src/ral_tuplecmd.c:
* src/ral_tuplecmd.h:
* src/ral_tupleheading.c:
* src/ral_tupleobj.c:
* src/ral_utils.c:
* test/ral.test:
* test/serialize.test:
* test/testdata.tcl:
* test/trace.test:
* test/update.test:
Completed the remaining relvar commands. Except for serialization,
the code base is back operational with identifiers now moved to be
only a constraint on relvars.
2009/02/08 mangoa01
* doc/ral/relation.man:
* src/ral_relation.c:
* src/ral_relation.h:
* src/ral_relationcmd.c:
* src/ral_relvar.c:
* src/ral_relvar.h:
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_relvarobj.h:
* src/ralutil.tcl:
* test/ral.test:
* test/trace.test:
Corrected "relvar insert" to return a relation value with the
inserted tuples. Fixed "relvar delete" and "relvar deleteone".
Updates to documentation.
2009/02/02 mangoa01
* src/ral_attribute.c:
* src/ral_relation.c:
* src/ral_relvar.c:
* src/ral_relvar.h:
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_relvarobj.h:
* src/ral_tuple.c:
* src/ral_tupleobj.c:
* src/ral_tupleobj.h:
* src/ral_utils.c:
* src/ral_utils.h:
* test/ral.test:
Got relvar insert to work properly with traces. Traces may now add in
attribute not specified in the inserted tuples. This is intended to
clean up system defined identifiers.
2009/01/25 mangoa01
* src/ral_relation.c:
* src/ral_relation.h:
* src/ral_relationcmd.c:
* src/ral_relvar.c:
* src/ral_relvar.h:
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_relvarobj.h:
* src/ral_tupleobj.c:
* src/ral_utils.c:
* src/ral_utils.h:
* test/ral.test:
Checkpoint. "relation tag" is now working. Clean up code for many of
the relation commands. Modified relvar data structure and go "relvar
create" to work.
2009/01/19 mangoa01
* src/ral.tcl:
Change invocation of "relation include" to be "relation insert".
* doc/ral/relation.man:
* doc/ral/relformat.man:
* doc/ral/relvar.man:
* doc/ral/serialize.man:
* doc/ral/tuple.man:
* src/ral_attribute.c:
* src/ral_joinmap.c:
* src/ral_joinmap.h:
* src/ral_relation.c:
* src/ral_relation.h:
* src/ral_relationcmd.c:
* src/ral_relvar.c:
* src/ral_tuple.c:
* src/ral_tuple.h:
* src/ral_utils.c:
* src/ral_utils.h:
* src/ral_vector.c:
* src/ral_vector.h:
* test/ral.test:
Checkpoint. Have added three types of custom hash tables to handle
the various cases of uniqueness constraints and to help computing the
relation join (and friends). Some docs changed. Changed "relation
include" to be "relation insert". Should have been named that in the
first place. The "relation tag" command still has problems. Time to
start looking at the relvar commands to straighten them out.
2009/01/12 mangoa01
* configure:
* configure.in:
* src/ral.tcl:
* src/ral_attribute.c:
* src/ral_attribute.h:
* src/ral_relation.c:
* src/ral_relation.h:
* src/ral_relationcmd.c:
* src/ral_relationheading.c:
* src/ral_relationheading.h:
* src/ral_relationobj.c:
* src/ral_relationobj.h:
* src/ral_relvar.c:
* src/ral_relvar.h:
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_relvarobj.h:
* src/ral_tuple.c:
* src/ral_tuple.h:
* src/ral_tuplecmd.c:
* src/ral_tupleheading.c:
* src/ral_tupleheading.h:
* test/ral.test:
Checkpoint. Many of the changes necessary to remove identifiers from
relation values are in place. Most of the join code (and consequently
all the related operations) does not work.
2009/01/02 mangoa01
* doc/ral/tuple.man:
Changed man page to reflect new string rep for Tuples.
* configure:
* configure.in:
* src/ral.tcl:
* src/ral_attribute.c:
* src/ral_attribute.h:
* src/ral_relationcmd.c:
* src/ral_relationheading.c:
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_tuple.c:
* src/ral_tuple.h:
* src/ral_tuplecmd.c:
* src/ral_tupleheading.c:
* src/ral_tupleheading.h:
* src/ral_tupleobj.c:
* src/ral_tupleobj.h:
* src/ralutil.tcl:
* test/ral.test:
Work on the tuple commands. Removed the use of the "Tuple" keyword
as part of the string representation for a Tuple. Still use the
keyword in headings for tuple valued attributes. This simplifies the
overall scheme for tuples so that now they just look like a two
element list, the first element being a list of attribute name / type
pairs and the second being a list of attribute name / value pairs.
========= ral 0.8.9 =========
2008/11/10 mangoa01
* test/ral.test:
Added new test case to catch problem with tuple valued identifiers.
* src/ral_attribute.c:
* src/ral_attribute.h:
* src/ral_relation.c:
* src/ral_relationheading.c:
* src/ral_relationobj.c:
* src/ral_tupleheading.c:
* src/ral_tupleobj.c:
Corrected a problem with the way that hash keys for tuple and
relation valued identifiers were formed. Previously just used the
string representation. This is wrong. Now we use a recursive
concatenation of the attributes values of the tuple and of the tuple
values of a relation. This is in keeping with the new way of
generated hash keys for multi-attribute identifiers.
2008/11/03 mangoa01
* doc/ral/relformat.man:
* doc/ral/relvar.man:
* doc/ral/serialize.man:
* doc/ral/tuple.man:
Changed version number in anticipation of the 0.8.9 release.
* src/ral_relvar.c:
Corrected a problem when the interpreter was destroyed in the middle
of a transaction.
* src/ral_relation.c:
* test/ral.test:
Corrected a problem with the way that hash keys were generated for
multi-attribute identifiers. This showed up as a problem with join.
The key was generated by simply concatenating the string
representation of the identifying attributes. This is not unique as
separate attribute values could concatenate to same string.
* doc/ral/relation.man:
Include a discussion on some of the limitations of set operations on
relation values.
2008/11/02 mangoa01
* src/ral_utils.c:
* src/ral_utils.h:
Added "serious internal error" error message. Also initialize the
"errorCode" field to "OK". This will catch other places where it is
not properly set and prevent indexing into never-never land.
* configure:
* configure.in:
* src/ral.tcl:
* src/ralutil.tcl:
Preparing for the 0.8.9 release.
2008/06/09 mangoa01
* src/ral_relvarobj.c:
* test/ral.test:
Corrected a problem where invoking "relvar transaction end" without a
corresponding "relvar transaction begin" caused a panic and dumped
core.
2008/04/26 mangoa01
* src/ral_relvarobj.c:
Bug #1949888
Fix for old AIX compiler that can't handle automatic variable
declarations that are not at the beginning of a block.
2008/04/22 mangoa01
* src/ral_attribute.c:
Removed the use of "stdbool.h" as this is a C99 feature that causes
old compilers great consternation. Reverted to plain old ints.
========= ral 0.8.8 =========
2008/04/15 mangoa01
* src/ral_attribute.c:
* src/ral_relationobj.c:
* src/ral_relvar.c:
* src/ral_relvarcmd.c:
* src/ral_relvarobj.c:
* src/ral_tupleobj.c:
* test/ral.test:
Cleaned up several aspects dealing with the lifetimes of the
internal representation. There were places in the code where
the string representation was being invalidated when it should
not have been. In particular, the string rep of "literals" was
occasionally invalidated and this causes Tcl to panic when the
literal table is cleaned up when an interpreter is destroyed.
2008/04/14 mangoa01
* src/ral_relation.c:
* test/ral.test:
Corrected a problem with "relation divide". In divide the
heading of the mediator relation must be the union of the
headings of the dividend and divisor. The code as written
failed to insure that the mediator heading was not a super
set of the union of the dividend and divisor headings.
2008/04/13 mangoa01
* test/serialize.test:
Documentation change.
* src/ral_relvarobj.c:
Remove an unused variable warning when assertions are compiled out.
* src/ral.c:
* src/ral_attribute.c:
* src/ral_relvarobj.c:
Removed all the dependencies on "tclInt.h" for the Tcl 8.4 builds.
* CHANGES:
* README:
Updates preparing for 0.8.8 release.
2008/04/12 mangoa01
* configure:
* configure.in:
* src/ral.tcl:
* src/ral_relvarcmd.c:
* src/ral_relvarcmd.h:
* src/ral_relvarobj.c:
* src/ral_relvarobj.h:
* src/ralutil.tcl:
* test/ral.test:
Bug #1939872
Corrected an error where copy on write rules were not properly
enforced when the relation values stored in a relvar are
modified. Added a check if the underlying relation value is
being shared and if so, then a copy is made to prevent stomping
on the reference.
* src/ral_attribute.c:
Improved comments in code.
* doc/ral/relation.man:
* doc/ral/relformat.man:
* doc/ral/relvar.man:
* doc/ral/serialize.man:
* doc/ral/tuple.man:
Removed deprecated doctools commands.
Added more explanation of data types in the "Tuple" man page.
Make ready for 0.8.8. release.
* src/ral_relvar.c:
* src/ral_relvar.h:
Source code clean up.
2008/04/11 mangoa01
* src/ral.c:
* src/ral_attribute.c:
* src/ral_attribute.h:
* src/ral_relationcmd.c:
* src/ral_relvarobj.c:
* test/ral.test:
Bug #1923541.
This set of changes removes the dependency on the internal
representation of Tcl objects. Now, there is a "shadow" type
system that is internally maintained. The interface to Tcl
uses the "Tcl_GetXXXFromObj()" functions that are part of
the recognized public interface. The "Relation" and "Tuple"
object types are no longer registered in keep with the general
consensus that "Tcl_RegisterObjType()" is a design misfeature.
Now, attributes may not have an arbitrary Tcl type associated
with them, but instead there are a set of Tcl types, mainly the
numeric ones, that are recognized and for which the necessary
type operations are supported.
2008/04/04 mangoa01
* src/ral_relvarobj.c:
* src/ral_utils.c:
* src/ral_utils.h:
Changed confusing error message when a relvar is "unset"
during a transaction.
2008/04/02 mangoa01
* src/ralutil.tcl:
Fix to bug #1931572.
Added "package require ral" to make sure "ralutil.tcl" is explicit
about all of its package dependencies.
2008/02/15 mangoa01
* test/ral.test:
Added tests for fix to bug # 1893238.
* src/ral_attribute.c:
Fixed: 1893238
The empty string represents something else for relation valued
attributes and so the test for the empty string was moved to
apply only to Tcl types.
2008/02/09 mangoa01
* src/ral.c:
* src/ral_relation.c:
* src/ral_relationcmd.c:
* src/ral_relationheading.c:
* src/ral_tuplecmd.c:
* src/ral_tupleheading.c:
* src/ral_vector.c:
Added patch from Andreas Kupries to resolve problems in the code base
for native HPUX and AIX compilers. A number of C99 and GCC specific
constructs had crept into the code base.
========= ral 0.8.7 =========
Version 0.8.7 is a bug fix release.
1. Correct a problem when a newer version of the serialization code contained
in "ral.tcl" was committed. This code was being developed for the 0.9 release
and was accidentally inserted in the the release. This broke the ability to
serialize and deserialize relvars and contained a different serialization
format that was inconsistent with the other 0.8 releases.
========= ral 0.8.6 =========
Version 0.8.6 is a code clean up release. There were a number of GCC specific
constructs that were in the source that caused errors for other compilers
(e.g. the native Sun compiler). There was no change in functionality, only
the elimination of some anonymous unions in a couple data structures.
========= ral 0.8.5 =========
Version 0.8.5 is a bug fix release.
1. Corrected a problem with the package configuration command, "ral::pkgconfig".
This command is formed by a call to Tcl_RegisterConfig(). In previous verions,
an incorrect encoding string was passed to the call. Late in the 8.5 release,
the semantics of how this was handled was changed and the error, which in the
past was effective masked, now shows up.
2. Fixed an anonymous union that causes compilation problems on compilers other
than GCC.
========= ral 0.8.3 =========
Version 0.8.3 is primarily a bug fix release, however, several new commands
were added.
1. Added "relation compose" command.
2. Moved "crosstab" proc in "ralutil" into the proper namespace
3. Added "tuple relation" command.
4. Corrected a problem with "relation group" when there are multiple
identifiers and the grouping results in fewer identifiers in the grouped
relation than in the original one.
5. Corrected a problem with "relation rename". It was using a "medium" deep
copy of the relation value in an attempt to save the deep copy. Unfortunately,
this implied that the tuples pointed to a different tuple header than
the relation that they were in. Then went "rename" modifies the header, the
relation internals ended up corrupt -- the tuple in the relation were
pointing to different header than the one in the relation where they resided.
6. Corrected a problem when create relvars where the parent namespace does not
exist. The clean up failed because the name of the relvar was deleted before it
could be removed from the internal structures.
========= ral 0.8.2 =========
Version 0.8.2 is primarily a bug fix release, however, several
new commands have been added and there are three commands were the interface
has changed slightly.
1. There is now a "relvar transaction" command that is complementary to
"relvar eval". This command allows controlling the contraint evaluation
across several commands were that is necessary.
2. The return value of "relvar insert", "relvar update" and "relvar updateone"
has changed. Now the commands return a relation value that contains the
inserted or updated tuples only. Previously the commands returned the
entire value of the relvar. This change makes it possible for the caller
to be able to see the changes that might be made by a relvar trace on the
insert or update.
========= ral 0.8.1 =========
Version 0.8.1 is an incremental release that is backward compatible at the
script level. There have been a number of code base improvements. Several new
commands were added that experience indicated were useful. Several commands
have new optional arguments. The biggest new feature is relvar tracing. It is
now possible to define a trace on a relvar and intercede in some of the relvar
operations. A new package called "ralutil" is included that contains some
useful procs. The "ralutil" package is, in places, quite experimental as
subject to interface changes. There is no documentation yet for the "ralutil"
package, but that will come later as the interfaces stabilize. However, I
wanted a place to try out new things without cluttering the main "ral" package.
Overview of the script visible changes from Version 0.8 to Version 0.8.1
1. Added "relvar trace" command. This allows setting traces on relvar
operations.
2. Added the commands "relvar union", "relvar intersect", "relvar
minus". These are shorthands for performing the indicated operation
and assigning the result back into the relvar.
3. Added the "relation create" command so that relation values can be
created without reference to the string representation of the relation.
Compare with "tuple create"
4. Added the command "relation body" to return the body of a relation. The
body is a list of tuple values, each of which is a dictionary of
attribute name / attribute value pairs.
5. Added "relation reidentify" to change the identifiers of a relation
value. Occasionally it is desirable to change identifiers when by
context other information is known about a relation value.
6. Modified "relation array" and "relation dict" to accept optional
arguments for the key attribute name and value attribute name. This
makes it more convenient so that projecting out a binary relation
is not strictly required now.
7. Create a "ralutil" package as part of the release to hold utility procs
and other experimental script code.
========= ral 0.8 =========
Version 0.8 is a complete refactoring and rewrite of the extension.
The source has been split among many files and there was a concerted
attempt to have an internal "C" API separated from the Tcl portions.
The biggest new feature is support for referential integrity constraints.
Support for virtual relvars (i.e. views) has been removed, but may come
back later when whole area is better understood.
========= ral 0.7 =========
Organization of the source code did not change in this version. It is still a
single (albeit rather large) "C" file. The "relformat" utility is also still
implemented as script. However, the build procedure is now TEA compliant.
========= ral 0.6 =========
TCLRAL is contained in a single "C" source file. My apologies that the build
mechanisms are so primative. I'll improve then in future releases. As it stands
now, you need only compile the single source file to produce a shared
library. A utility procedure, "relformat", is included as Tcl script. The
"pkgIndex.tcl" file handles the load and source necessary to get everything
loaded.