2011-08-28 John Wu <John dot Wu at ACM dot org>
	* src/bord.h, src/bord.cpp: add one more version of
	bord::column::append to deal with the in-memory data

2011-08-27 John Wu <John dot Wu at ACM dot org>
	* src/bord.h, src/bord.cpp: implement bord::column::append to deal
	with the column mask

2011-08-26 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: initialize mask_ in the constructor of
	ibis::bord::column.  The new implementation of
	ibis::bord::column::actualMinMax makes used of the mask, but the
	mask was not initialized, which causes the columns to be
	considered to have no data in some operations
	* src/countQuery.cpp, src/query.cpp: change other three versions
	of setWhereClause to match the behavior suggested by Robert's
	changes

2011-08-25 Robert Wong <robert.wong at openx.com>
	* src/countQuery.cpp: change the version of setWhereClause that
	accepts the string version of a where clause to continue after
	encountering unknown column names.  Note that the conditions on
	unknown columns will result in zero answers.

2011-08-25 John Wu <John dot Wu at ACM dot org>
	* src/mensa.cpp, src.part.cpp: add more conditions before
	attempting to define our own isfinite
2011-08-23 John Wu <John dot Wu at ACM dot org>
	* src/table.h, src/part.h: add function to reorder columns with
	each column in a different direction

2011-08-19 John Wu <John dot Wu at ACM dot org>
	* configure.ac: Change AC_MSG_ERROR to AC_MSG_WARN to avoid abrupt
	termination of the configuration script
	* src/index.cpp: remove the return statements from cases dealing
	with string values columns in the function ibis::index::create,
	they prevent the newly created index from being written to disk
	(a problem reported by Teryl Taylor)

2011-07-21 John Wu <John dot Wu at ACM dot org>
	* src/mensa.cpp, src/part.cpp: addd conditional definition for an
	inline version of isfinite to overcome the problem with missing
	definition from math.h

2011-07-20 John Wu <John dot Wu at ACM dot org>
	* src/util.h: add definition of isfinite if it is not defined
	already (in order to overcome the problem on MS visual studio)
	* src/qExpr.cpp: replace the calls to round with calls to floor
	(MS visual studio does not support round in math.h)
	* src/parth.cpp, src/parth2d.cpp, src/parth3d.cpp: compute the
	scaling factors to leave more room bin boundaries to ensure the
	largest value falls in the valid bin (to address a problem
	reported by Andrew Olson)

2011-07-18 John Wu <John dot Wu at ACM dot org>
	* examples/ibis.cpp, doc/ibisCommandLine.html: add description
	about -f option at the suggestion of thiago.mosqueiro at gmail.com

2011-07-02 John Wu <John dot Wu at ACM dot org>
	* src/tafel.cpp: change the default delimiters into the same list
	of  " ,;\t\n\v" when extracting fields from text verson of data.
	This fixes the last error found while testing the function
	ibis::table::toTable

2011-07-01 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: clean up the messages printed out from
	divideCounts based on a suggestion from Andrew Olson
	* examples/ardeap.cpp:827,856 change the tests to use ta->mRows()

2011-06-30 John Wu <John dot Wu at ACM dot org>
	* src/table.h: add functions getColumnMin and getColumnMax based
	on comments from Andrew Olson
	* src/bord.cpp: add code to use mask_ in
	ibis::bord::column::comptueMinMax and
	ibis::bord::column::evaluateRange

2011-06-22 John Wu <John dot Wu at ACM dot org>
	* tests/Makefile.am: change type of c_2 from float to double to
	make sure queries involving floating-point values are answered
	exactly (because the query strings are parsed as doubles not
	floats)
	* runconfig: import environment variable HOME, expand the test
	condition involving bit
	* src/qExpr.h, src/qExpr.cpp: add support of function round
	(the single-argument version rounds to nearest integer while the
	two-argument version rounds to the number decimal digits
	specified by the second argument)

2011-06-21 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: implement function
	ibis::bord::column::keywordSearch

2011-06-20 John Wu <John dot Wu at ACM dot org>
	* src/table.h, src/tafel.h, src/tafel.cpp: rename freeze to
	toTable
	* examples/ardea.cpp: modify the default value of outdir to be an
	empty string and all the data to be held in memory when the output
	directory is an empty string
	* src/bord.cpp: move the definition of m_desc to the earlier part
	of ibis::bord::bord
	* src/mensa.cpp: add default select clause to function
	ibis::table::select

2011-06-18 John Wu <John dot Wu at ACM dot org>
	* src/table.h, src/tafel.h, src/tafel.cpp: add function freeze to
	ibis::tablex and ibis::tafel
	* src/column.h, src/column.cpp: add function setNullMask

2011-06-10 John Wu <John dot Wu at ACM dot org>
	* src/selectClause.h, src/selectClause.cpp: group the functions in
	select clause according to the visibility of the expressions

2011-06-09 John Wu <John dot Wu at ACM dot org>
	* src/table.h: add two optional arguments to functions of the form
	ibis::table::getColumnAsTypes at the request of Jon Strabala

2011-06-08 John Wu <John dot Wu at ACM dot org>
	* src/whereLexer.ll: enforce the need for coma as separator in
	string sequences (to avoid the problem of treating a LIKE
	expression as a string sequence by the lexer, a problem reported
	by Jon Strabala)
	* src/selectClause.h, src/selectClause.cpp: rename the functions
	to separate the internal terms and external expressions more
	cleanly.   Add function getGroupbyKeys.

2011-06-07 John Wu <John dot Wu at ACM dot org>
	* src/colValues.cpp:4048 remove the extra statement that
	increments j (and causes a problem with segmenting string values
	reported by Anderson Carniel)

2011-06-04 John Wu <John dot Wu at ACM dot org>
	* src/jnatural.cpp: use auto_ptr to make sure the memory is freed
	in fillResults
	* src/bord.cpp: add code block to try the column name without any
	prefixes
	* src/selectParser.yy: add back support of using keyword stddev
	for standard deviation (in addition to stdev, and stdsamp)

2011-06-03 John Wu <John dot Wu at ACM dot org>
	* src/part.h, src/util.h: comment out ibis::util::clearDatasets
	* src/ibis.h: remove ibis::util::clearDatasets from atexit
	registration, invoke the equivalent function in the destructor of
	ibis::fileManager instead.  The avoids the problem of attempting
	to free data partitions after the file manager has been freed
	* src/category.cpp: print out dic.size() as the upper bound
	instead of the content of upper which can become stale (a problem
	spotted in a -part.txt file sent out by Anderson Carniel)

2011-06-02 John Wu <John dot Wu at ACM dot org>
	* src/selectClause.cpp: comment out the use of ordered_ in
	selectClause::fillNames
	* src/bord.cpp: initialize colorder in the constructors and in
	function renameColumns
	* tests/Makefile.am: fixed most test cases except joins
	* src/bord.cpp: in fillNames, add code to deal with part.column
	style of names (which is needed to deal with joins)
	* src/selectClause.h, src/selectClause.cpp: add function to update
	the internal references to the selectClause from
	selectClause::variable
	* src/bord.cpp: update evaluateTerms to compute the terms in atms_
	instead of xtms_ of selectClause
	* src/bundle.cpp: use atms_ and aggr_ consistently in bundle1::bundle1

2011-06-01 John Wu <John dot Wu at ACM dot org>
	* src/selectParser.yy: add back support for "count(*)" which was
	deleted by error
	* src/bord.cpp: need to deal with special column name "*"
	* src/colValues.h, src/colValues.cpp: add constructors that takes
	a constant value
	* src/selectClause.h, src/selectClause.cpp: constructors and swap
	function neglected to handle some of the recently added member
	variables, add function getAliases
	* src/bord.h, src/bord.cpp, src/column.h, src/column.cpp: add
	functions to rename columns

2011-05-31 John Wu <John dot Wu at ACM dot org>
	* src/filter.cpp: replace filter::filt with new bord functions
	* src/bundle.h, src/bundle.cpp: remove bufferList from the
	argument list of constructors
	* src/colValues.h, src/colValues.cpp: remove the argument of type
	void* from the constructor of colValues
	* src/bord.cpp: add function copyColumn, complete the second round
	of evaluations in ibis::bord::groupby

2011-05-30 John Wu <John dot Wu at ACM dot org>
	* src/mensa.cpp, src/bord.cpp, src/bord.h: refactor
	ibis::table::select to make direct use of ibis::bord

2011-05-28 John Wu <John dot Wu at ACM dot org>
	* src/bord.h: remove mypart (which was left over from yesterday's
	modifications to ibis::bord)
	* src/selectLexer.ll, src/selectParser.yy, src/selectClause.h,
	src/selectClause.cpp: modify the grammar for the select clauses to
	allow arithmetic expressions on top of aggregations

2011-05-27 John Wu <John dot Wu at ACM dot org>
	* src/selectParser.yy: add support for aliases without the keyword
	'AS' in the select clause (to match up with the from clause)
	* src/fromClause.h: add documentation about the from clauses
	* src/bord.h, src/bord.cpp: refactor ibis::bord to absorb
	ibis::bord::part.  The class ibis::bord now inherents from both
	ibis::part and ibis::table, which makes it possible to be listed
	in ibis::datasets and available for other queries.
	* src/part.h: add function gatherSortKeys
	* src/parti.cpp: replace the implementation of part::reorder()
	with a call to gatherSortKeys and the other version of reorder
	(consolidate the reorder functions to a single version)

2011-05-22 John Wu <John dot Wu at ACM dot org>
	* tests/Makefile.am: add test cases 10, 11 and 12 to target
	really-small for checking the join operations to verify the fixes
	requested by Alexandre Maurel

2011-05-21 John Wu <John dot Wu at ACM dot org>
	* src/jNatural.cpp:219 the second maskR_ should have been maskS_
	* src/jNatural.cpp:102,198 colR_ --> colS_
	* src/joinin.cpp:80 colR_ --> colS_

2011-05-19 John Wu <John dot Wu at ACM dot org>
	* src/utilidor.cpp: add function sortAll_quick to allow sortAll to
	call nosharing on the input arrays, add calls to nosharing to
	sortKeys and sortMerge to make sure the arrays being sorted are
	not shared with anything else (as the suggestion of Alexandre
	Maurel)

2011-05-14 John Wu <John dot Wu at ACM dot org>
	* src/util.cpp: add a note in the documentation for
	ibis::util::readString about the baskslash (Robert Wong from
	openx.org was inquiring about the backslash)

2011-05-13 John Wu <John dot Wu at ACM dot org>
	* configure.ac, Makefile.am: add rules to output fastbit-config
	for dynamically exporting the dependencies of FastBit
	* tests/Makefile.am: regenerate the test cases 16, 17, 18 and 19
	for check-ibis (they were somehow lost)

2011-05-12 John Wu <John dot Wu at ACM dot org>
	* src/*.h: add FASTBIT_CXX_DLLSPEC to classes and global variables
	at the request of Alexandre Maurel
	* src/colValues.cpp: add code for handling ibis::selectClause::CNT
	to function reduce
	* src/bundle.h, src/bundle.cpp: add member variable aggr to
	ibis::bundle1 and ibis::bundles to record the aggregator
	corresponding to each column to address the problem with ordering
	of select clauses raised by Jon Strabala
	* src/selectClause.h: rename NIL of AGREGADO to NIL_AGGR to make
	it more explicit
	* tests/Makefile.am: add test case 16, 17, 18, and 19 to
	check-ibis to check for the placement of various terms in the
	select clause

2011-05-11 John Wu <John dot Wu at ACM dot org>
	* src/utilidor.cpp: remove calls to nosharing from sortAll and
	sortKeys.  These functions use shallow copying extensively to make
	sure they are working on the same data.
	* src/Makefile.am: remove -i option from sed command because -i is
	not standardized (this problem was first noticed by Jon Strabala)
	* src/part.cpp: add a conditional include statement for ieeefp.h
	when the macro sun is defined (at the request of Jon Strabala)

2011-05-10 John Wu <John dot Wu at ACM dot org>
	* src/array_t.cpp:156 m_end was set incorrectly, which causes the
	sort functions to behave incorrectly (a problem first reported by
	Alexandre Maurel)

2011-05-07 John Wu <John dot Wu at ACM dot org>
	* configure.ac, src/Makefile.am: replace AC_CONFIG_COMMANDS for
	modifying PACKAGE_ prefix with a rule in src/Makefile.am

2011-05-06 John Wu <John dot Wu at ACM dot org>
	* configure.ac: quite_NaN should be quiet_NaN

2011-05-05 John Wu <John dot Wu at ACM dot org>
	* src/capi.cpp: add support for categorical values through
	function fastbit_add_values (the patch from Mario D. Santana only
	dealt with text type not category type)
	* tests/Makefile.am: add tests to prevent test data to be
	generated multiple times
	* util.h: add macros FASTBIT_FLOAT_NULL and FASTBIT_DOUBLE_NULL to
	denote the null values used for float and double.  this is an
	attempt to get around the problem with STLPORT having an incorrect
	value for quiet_NaN (a problem reported by Alexandre Maurel)
	* configure.ac: add option --disable-quiet-nan to avoid using
	quiet nan as null values

2011-05-04 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: remove idcol from index::create
	* src/ikeywords.h, src/ikeywords.cpp: refactor the default
	constructor of ibis::keywords to make more consistent use of the
	internal parser (to address a problem reported by Gunter Hick
	<hick at scigames.at>)
	* src/category.h, src/category.cpp: add functions
	text::TDListForKeywordIndex and delimitersForKeywordIndex
	* configure.ac: add option --enable-static-pic to add options
	"-static -fPIC".  These flags are needed for compute node linux

2011-04-19 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: change part::buildIndexes and
	part::purgeIndexFiles from using writeLock to using readLock

2011-04-18 John Wu <John dot Wu at ACM dot org>
	* src/fileManager.cpp:955 add variable evt to make the log
	message more uniform in function fileManager::tryGetFile

2011-04-07 John Wu <John dot Wu at ACM dot org>
	* tests/Makefile.am: update test case 2 of check-ibis to match the
	changes in printing formats in examples/ibis.cpp
	* examples/ibis.cpp, examples/ardea.cpp: add calls to buildIndexes
	before performinging queries in an attempt to reproduce the
	problem reported by Chavdar Kopoev
	* src/part.cpp, src/mensa.cpp: change mensa::buildIndexes to call
	part::buildIndexes and part::buildIndexes to always use
	ibis_part_build_indexes, only rebuild indexes in
	ibis_part_build_indexes if the number of rows has doubled
	* src/column.cpp: add call ibis::fileManager::flushFile before
	removing files in ibis::column::purgeIndexFile (likely the real
	cause of the deadlock reported by Chavdar Kopeov)
	* src/ixzona.cpp:77 replace nc+1 with end to address the problem
	with test case 166 of match-counts (a change required by
	2010-11-03 modification to array_t)

2011-04-06 John Wu <John dot Wu at ACM dot org>
	* src/column.h, src/column.cpp: add function
	ibis::column::indexedRows to report the number of rows in the
	index associated with the column
	* src/part.cpp: update function ibis_part_build_indexes to make
	sure the new indexes have the same number of rows as the data
	partition (at the request of Chavdar Kopoev)
	* src/i*.cpp: catch up with the 2010-11-03 change to the
	constructor of array_t that takes a pointer to storage object.
	These errors causes the indexes to be regenerated incorrectly when
	the whole index is read into memory

2011-04-05 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: change the 4th argument to ibis::index::create
	from inEntirety to readopt, change the interpretation of the
	default option from reading the metadata to attempting the memory
	map option.  Note that this increase the memory usage, but
	decrease the query response time in almost all cases.  (To address
	a question raised by Michael Chong from sac.com)
	* src/part.cpp: update the inline document for
	ibis::part::loadIndexes to refer to ibis::column::loadIndex
	* examples/ibis.cpp: update the usage print out

2011-04-04 John Wu <John dot Wu at ACM dot org>
	* examples/ibis.cpp:3873 remove  the condition "num1 > 0" to
	overwrite output file with an empty file when the result set is empty
	(per request of Jon Strabala)

2011-03-31 John Wu <John dot Wu at ACM dot org>
	* configure.ac: update the code for detecting jni.h to accomodate
	the peculiarity of java on Mac OS, update CPPFLAGS and CXXCPP as
	well as CFLAGS and CXXFLAGS

2011-03-30 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: adjust the warning message about missing metadata
	file from ibis::part::init to avoid tripping built-in test scripts

2011-03-29 John Wu <John dot Wu at ACM dot org>
	* java/milky.java: add call to System.currentTimeMillis to measure
	the elapsed time in processQuery

2011-03-22 John Wu <John dot Wu at ACM dot org>
	* src/ixfuzz.cpp: update the printing statement to use coffset32
	and coffset64 in the right code block in function
	fuzz::activeCoarse

2011-03-19 John Wu <John dot Wu at ACM dot org>
	* java/milky.java: add code to traverse the data directory
	recursively

2011-03-18 John Wu <John dot Wu at ACM dot org>
	* src/qExpr.cpp: print 12 digits from qContinuousRange::printFull
	* src/i*.cpp: update the message from the constructors to say
	"intialization completed" instead of "constructed" as the
	suggestion from Jon Strabala
	* src/ixfuzz.cpp: fuzz::readCoarse computed incorrect number of
	elements for coffset32/coffset64 and cbits

2011-03-17 John Wu <John dot Wu at ACM dot org>
	* configure.ac: when --enable-debug and --disable-xopt are both
	specified, remove -O options from CFLAGS and CXXFLAGS

2011-03-10 John Wu <John dot Wu at ACM dot org>
	* src/category.h, src/category.cpp: change the definition of
	category::getStrings to take advantage of the case where the
	dictionary has only one valid string (to address an issue reported
	by Andrew Olson)

2011-03-07 John Wu <John dot Wu at ACM dot org>
	* category.h, category.cpp: change the definition of getNumKeys,
	getKey, and isKey to invoke prepareMembers when the dictionary is
	empty

2011-03-02 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: update part::readMetaTags to match the
	part::readMetaData
	* win/MinGW.mak: add SHELL=cmd.exe to remove the dependency on
	MSYS (which provides bash), removed the use of rm and perl from
	tests (now able to compile ibis and check-ibis with nuwen.net's
	distribution of MinGW without MSYS)
	* src/const.h: add conditional statement to include stdint.h when
	compiling under MinGW
	* src/part.cpp: replace the exception generated when missing
	metadata file with an error message (to avoid a problem reported
	by Andrew Olson)
	* src/const.h, src/capi.h: update the conditional compilation
	macros to compile under MinGW
	* src/resource.cpp:390-397 add statements to strip away the outer
	most quotes
	* src/part.cpp:1538-1563 add a case in part::readMetaData to deal
	with obviously bad values in meta tags

2011-02-28 John Wu <John dot Wu at ACM dot org>
	* tests/Makefile.am: add dependency on TESTDIR for some targets

2011-02-25 John Wu <John dot Wu at ACM dot org>
	* configure.ac: add option --without-getpwuid

2011-02-13 John Wu <John dot Wu at ACM dot org>
	* src/bundles.cpp: replace all calls to ibis::util::logMessage
	with LOGGER macro, add some status messages in the constructors of
	ibis::bundle and derivatives
	* src/fileManager.cpp: add log messages whenever storage::m_begin
	is 0
	* src/bord.cpp, src/filter.cpp, src/mensa.cpp: add a couple of
	logging statments

2011-02-12 John Wu <John dot Wu at ACM dot org>
	* src/fileManager.cpp: add statement to indicate initialization
	has completed in two constructors of storage object to aid
	debugging of memory leak related to check-sq1
	* src/colValues.cpp: add try-catch block around array->resize in
	the constructors
	* src/util.h: add template classes ibis::util::refHolder and
	ibis::util::guardObj0, template function ibis::util::ref and
	ibis::util::ojbectGuard
	* src/bundle.cpp: add try-catch block to clear resource in case
	the constructors of bundle1 and bundles encounter exceptions.
	These objects hold pointers that are lost in case of the
	constructors receive exceptions.  This should be the root cause of
	the problem with check-sq0, check-sq1 and check-sq2.

2011-02-11 John Wu <John dot Wu at ACM dot org>
	* src/query.cpp: expand the function getNumHits to compute the
	number of hits if there are certain inexpensive options
	* tests/Makefile.am: add check-sq0 to reduce the amount of time
	needed by more-check

2011-02-10 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.cpp: modify bitvector::setBit to decompress the
	bitmap if the bit to be changed is in the middle of a fairly long
	object

2011-02-09 John Wu <John dot Wu at ACM dot org>
	* src/ibin.cpp: in ibis::bin::setBoundaries avoid casting bounds
	to floats

2011-02-08 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: change part::doCount to use column::getValuesArray
	instead of directly attempting to read the underlying data files
	* src/ibin.cpp: take into account of the total cost in
	bin::estimate, do nothing if the total cost is higher than
	scanning the base data

2011-01-28 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp, src/column.cpp: add statements in
	column::selectTypes to perform shallow copy when selecting all
	elements of the data values
	* tests/Makefile.am: add more files to be removed under the target
	clean

2011-01-27 John Wu <John dot Wu at ACM dot org>
	* src/fileManager.h, src/fileManager.cpp: remove function
	ibis::fileManager::storage::unnamed
	* src/array_t.h, src/array_t.cpp: add constructor taking a raw
	pointer from the caller to avoid copying data

2011-01-25 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: add checks for nil pointer col

2011-01-06 John Wu <John dot Wu at ACM dot org>
        * doc/*.html: update html files to use RDFa tag for creator

2011-01-04 John Wu <John dot Wu at ACM dot org>
	* src/util.h:1353 use function floor to extract the integer
	portion from the log10 of incoming value instead of rounding with
	static_cast<int>, to correct a problem identified by Jinoh Kim
	* src/ibin.h, src/ibin.cpp: rename granule::loc0 to granule::locm,
	granule::loc1 to granule::locp, update printGranules to check for
	nil pointer of granule::loce

2010-12-22 John Wu <John dot Wu at ACM dot org>
	* src/resources.cpp:381 remove backslash infront of ` to address a
	complaint from PGI compiler
	* src/category.h:128 use the function estimateCost from the
	immediate base class instead of ibis::column
	* tests/Makefile.am: add statements to print a blank statement
	after the completion of check-labeling and check-join

2010-12-21 John Wu <John dot Wu at ACM dot org>
	* src/table.h, src.tafel.h, src/tafel.cpp: add the 5th argument to
	tablex::write and tablex::writeMetaData to write meta tags
	* src/part.cpp: extract column shape from meta tags
	* examples/ardea.cpp: add command line options -i and -tag for
	indexing option and meta tags
	* src/resource.cpp: modify ibis::resource::parseNameValuePairs to
	respect grouping indicated by parentheses and quotes, which is
	necessary to parse column shape which more than one dimension
	* src/ibis.cpp: label1 and label2 usage reversed in doMeshQuery
	* tests/Makefile.am: add test case check-labeling to exercise the
	new labeling functions

2010-12-20 John Wu <John dot Wu at ACM dot org>
	* src/meshQuery.h, src/meshQuery.cpp: break toBlocks into
	toBlocks1, toBlocks2, toBlocks3 and toBlocksN to make it possible
	to compare toBlocksN with others for self-consistency check
	* src/meshQuery.h, src/meshQuery.cpp: add functions to produce and
	label query lines (also called line segments): getHitsAsLines and
	labelLines
	* src/ibis.cpp: update doMeshQuery to exercise the new labeling
	functions

2010-12-17 John Wu <John dot Wu at ACM dot org>
	* src/meshQuery.cpp, src/meshQuery.h: rename lableNDSimple to
	labelBlocks, it is now the only public function for labeling,
	label[1234]DSimple become label[1234]DBlocks and are now protected
	functions called through labelBlocks, reorder their formal
	arguments so that the constant arguments are in the front as in
	most other functions

2010-12-16 John Wu <John dot Wu at ACM dot org>
	* src/meshQuery.cpp: implement meshQuery::labelNDSimple and use it
	to debug label3DSimple, implement meshQuery::label4Dsimple

2010-12-15 John Wu <John dot Wu at ACM dot org>
	* src/ibin.h, src/ibin.cpp: add one more bitmap to
	ibis::bin::granule to produce three bins for each target (instead
	of two), in template function scanAndPartition add a case for
	working with simpler binning strategy
	* tests/test1.csv: change the last two columns to be 1 and 0
	exclusively to produce new test cases
	* tests/scripts/query-count.list: update queries and counts to
	accommodate the new test data

2010-12-14 John Wu <John dot Wu at ACM dot org>
	* examples/ibis.cpp: rearrange the call to ibis::init so that it
	reads the last configuration file from the command line (instead
	of attempting to read the default configuration file)

2010-12-13 John Wu <John dot Wu at ACM dot org>
	* src/meshQuery.cpp, src/meshQuery.h: add functions afind, aset,
	label2DSimple and label3Dsimple to handle connected component
	labeling

2010-12-10 John Wu <John dot Wu at ACM dot org>
	* win/ibis.sln, win/*.vcproj: remove the definition of WINVER and
	remove the X64 platform specifications (the X64 platform causes
	visual studio express to complain about the project files), remove
	some unused items from the .vcproj files

2010-12-09 John Wu <John dot Wu at ACM dot org>
	* examples/ardea.cpp: add call to ibis::init before calling
	parse_args (i.e., before possibly doing anything with the FastBit
	functions)

2010-12-08 John Wu <John dot Wu at ACM dot org>
	* tests/jrf.cpp: to generate random data based on 20-entry Risk
	Category from Justo Ruiz Ferrer <justo.ruizferrer@endelec.com>
	* tests/scripts/jrf-ckeck.pl, tests/Makefile.am: add tests for
	keyword index based on test data generated by jrf.cpp
	* src/column.cpp: dataFileName neglected to handle the case where
	there are directory separators in the incoming argument dir
	* tests/scripts/jrf-check.pl: change from dos style line break to
	unix style line break to get the tests to run on a linux machine
	* tests/setqgen.cpp:149 generate the file names with subdirectory
	names starting with 0

2010-12-07 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: update ibis::column::dataFileName to check for
	incoming name already containing the column name or index file
	name
	* src/category.h: add class ibis::text::tokenizer as a virtual
	base class for tokenizers
	* src/ikeywords.h, src/ikeywords.cpp: add
	ibis::keywords::tokenizer and ibis::keywords::parseTextFile for
	generating keyword index from text first directly without a
	user-provided term-document list

2010-12-06 John Wu <John dot Wu at ACM dot org>
	* src/ikeywords.h, src/ikeywords.cpp: allow
	ibis::keywords::readKeywords to read keywords with embedded spaces

2010-11-28 John Wu <John dot Wu at ACM dot org>
	* examples/tcapi.c: change buildin to builtin, add a repeat of the
	built-in tests to mimic the test case from Chavdar Kopeov

2010-11-26 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.cpp:3829 change the test condition to avoid
	division by 0 (when density is 1)
	* src/parti.cpp: in function part::updateData check both st_ctime
	and st_mtime (my own windows-based laptop seems to not update
	st_ctime, but st_mtime), reading the metadata files if time stamps
	are the same as previously recorded to allow for quick changes
	within the same second

2010-11-25 John Wu <John dot Wu at ACM dot org>
	* src/tafel.cpp: in function ibis::tafel::write and
	ibis::tafel::writeMetaData move the statement to flush the data
	directory to the beginning of the respective function

2010-11-24 John Wu <John dot Wu at ACM dot org>
	* src/part.h, src/part.cpp, src/parti.cpp: add part::updateData
	and util::updateDatasets at the request of Chavdar Kopeov

2010-11-23 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp, src/bitvector.cpp: change the operation to read
	bitvectors to prefer read (instead of file map) to address a
	problem observed by Chavdar Kopoev

2010-11-14 John Wu <John dot Wu at ACM dot org>
	* src/filter.cpp, src/mensa.cpp: add printing statements to help
	debug problems with exceptions absorbed by table::select and
	filter::select (in an attempt to address an issue raised by
	Anderson Chavez)

2010-11-04 John Wu <John dot Wu at ACM dot org>
	* src/bord.h: add quotes to string values printed from
	ibis::bord::column (as suggested by Anderson Chaves)
	* tests/Makefile.am: update check-ibis test 2 and check-text test
	4 to accommodate the changes in printout

2010-11-03 John Wu <John dot Wu at ACM dot org>
	* src/fileManager.cpp:1694 the statement "if (n < 8) n = 8" causes
	some allocations of 4-byte arrays to fail consistency checks
	* tests/Makefile.am: change rule for $(TESTDIR) to TESTDIR and
	modify it to initialize the file stdout.log, this also ensures
	that the test directory and stdout.log are only created once
	* src/array_t.h, src/array_t.cpp: change the constructor of
	array_t that take a segment of an existing array_t from nelm to
	end-position to match other array section constructors
	* src/index.cpp: initOffsets from in-memory storage object
	initializes offs with the incorrect parameter 3
	* src/ibin.cpp, src/ixambit.cpp: update the constructors with
	storage objects to properly use the new 64-bit offsets
	* src/colValues.h:236 add double quotes arround string values
	printed by colUInts::write (to address the concern raised by
	Anderson Chaves)

2010-11-02 John Wu <John dot Wu at ACM dot org>
	* tests/Makefile.am: update large-sanity-check and match-counts to
	more reliably set the indexing options
	* bitvector.cpp: bitvector::adjustSize neglected to erase etra
	bits and mishandled the bits after nv

2010-11-01 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: update accessHint to use MMAP_LARGE_FILES when a
	majority of the values are selected
	* src/colValues.h, src/colValues.cpp: add shorter integer types to
	reduce the memory usage (to address a test case provided by Ben
	Williams)
	* src/column.h, src/part.h, src/query.h: change selectBytes to
	return signed char instead of char because on some system char can
	be default to be unsigned
	* src/colValeus.h: add double-quote around the strings when they
	are printed in ASCII form (a suggestion from Anderson Chaves)
	* tests/Makefile.am: strip double quotes from tmp/t0-0 and
	tmp/t0-1 to make it easier for comparisons
	* src/colValues.cpp: update computation of stddev to produce more
	consistent output when it is not possible to compute stddev (only
	decrement count if it is greater than 1)
	* tests/vault/small-5: update file after the redefinition of
	stddev

2010-10-29 John Wu <John dot Wu at ACM dot org>
	* examples/ibis.cpp: change the type of qlist, alist and slist
	from ibis::table::stringList to std::vector<const char*> to avoid
	triggering the initialization of the file manager object before
	the configuration parameters are read into memory (a problem
	reported by Ben Williams)
	* java/*/FastBitStringReader.java,
	java/*/FastbitStringWriter.java: remove the references to commons
	logging objects to reduce dependencies

2010-10-28 John Wu <John dot Wu at ACM dot org>
	* src: remove the prefix ibis from most of the print statements
	* tests/Makefile.am: in two places smallmem2.rc was incorrectly
	writtent as smallmem3.rc
	* src: update many files to address the warning message produced
	by PGI compilers

2010-10-25 John Wu <John dot Wu at ACM dot org>
	* src/part.h, src/part.cpp: add keyword virtual to the definition
	of ibis::part::buildIndexes to allow other packages to override it
	more easily

2010-10-21 John Wu <John dot Wu at ACM dot org>
	* src/util.cpp: in function util::userName add macro HAVE_GETPWUID
	to control the access to getpwuid (on certain parallel computers,
	getpwuid is supported differently on the compute nodes and the
	login nodes, using it can cause the program to crash), comment out
	the use of getlogin because it requires a login shell
	* configure.ac: add a statement with AC_RUN_IFELSE to test for the
	presence and usability of getpwuid

2010-10-20 John Wu <John dot Wu at ACM dot org>
	* src/tafel.cpp: update the conditional macro surrounding strtoll
	* configure.ac: add test for strtoll, remove tests for unnecessary
	header
	* src/const.h: remove reference to memory.h

2010-09-24 John Wu <John dot Wu at ACM dot org>
	* src/mensa.cpp:2088 add missing & to avoid the cursor object from
	pointing to temporary objects for names
	* src/iroster.cpp: update the constructor to avoid extra copying
	* src/ikeywords.cpp: update readTermDocFile to allow for a keyword
	to appear in multiple lines of the term document list
	* tests/Makefile.am: add test two cases to really-small to
	exercise the keyword index feature
	* src/column.cpp: update the log messages from readLock, writeLock
	and softWriteLock to output the address of the read-write lock
	* src/part.h, src/part.cpp: move the definition of readLock,
	writeLock, advisoryLock from part.h to part.cpp, change the log
	statements to match those from ibis::fileManager

2010-09-23 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp, src/column.cpp: reorder the locks to resolve
	complains fron helgrind

2010-09-22 John Wu <John dot Wu at ACM dot org>
	* src/fileManager.h: update the constructor of
	fileManager::softLock to check for the value of locked_ before
	unlocking the read-write lock, which appears to address the
	problem with unlocking not-locked locks

2010-09-21 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: in the destructor reverse the order of the mutex
	lock and the write lock to satisfy the helgrind (which seems to
	want them to be in the same as as they appear elsewhere in the
	code) (addresses some of problems reported by Andreas Streichardt)
	* src/fileManager.cpp: in getFile accquire read lock before the
	mutex lock (helgrind complained about lock order violation),
	remove the read lock from ibis::fileManager::recordFile (because
	it is unnecessary)
	* src/fileManager.cpp:1306 refer to undefined variable it
	* src/util.cpp: the function groupby1000 can not handle incoming
	value being 0

2010-09-20 John Wu <John dot Wu at ACM dot org>
	* src/util.h: rewrite functions ibis::util::trim and
	ibis::util::removeTail to remove the function call to strlen that
	access uninitialized variables in some cases
	* src/util.h, src/util.cpp: move strnewdup from util.h to util.cpp

2010-09-13 John Wu <John dot Wu at ACM dot org>
	* src/tafel.cpp:556 remove the condition on _XOPEN_SOURCE which
	causes problems on euclid.nersc.gov with PGI compiler (fall back
	to use strtod which is present on more platforms)
	* INSTALL: update issue (9) regarding error with PGI compiler
	after testing runs on ewok

2010-09-10 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.cpp, src/bitvector64.cpp: fix errors in
	conditional code for WAH_CHECK_SIZE
	* src/util.h, src/util.cpp: change the file
	ibis::util::writeLogFileHeader to test the incoming arguments (to
	address the problem with log files reported by Karen Schomburg)
	* src/ibis.h: register the function ibis::util::closeLogFile with
	ibis::init as the last function to be invoked during exit, this
	removes the need for users to invoke the function

2010-09-09 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.cpp: replace all calls to util::logMessage with
	LOGGER macro

2010-09-08 John Wu <John dot Wu at ACM dot org>
	* java/FastBit.c: move the declaration of variables to the
	beginning of their scope to avoid problem with compiler error
	reported by otrack50@hotmail.com

2010-09-07 John Wu <John dot Wu at ACM dot org>
	* src/util.h, src/util.cpp: change template
	ibis::util::groupby1000 to be a concrete function (rely on the
	automatic argument conversion to produce the correct code instead
	of template instantiation), to address a problem encountered by
	Gunther Weber and Allen Sanderson on Macs
	* src/util.h: add FASTBIT_CXX_DLLSPEC in front of the declaration
	of ibis::util::readString to make it available to win/trydll.cpp

2010-09-06 John Wu <John dot Wu at ACM dot org>
	* win/Win.mak, win/MinGW.mak: add reference to dictionary.cpp

2010-09-03 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.cpp: update the print statements in
	bitvector::write, add conditional statements to write the run
	information

2010-08-30 John Wu <John dot Wu at ACM dot org>
	* src/twister.h: include header file cmath instead of math.h
	* tests/Makefile.am: correct spelling of the word 'iteration'

2010-08-26 John Wu <John dot Wu at ACM dot org>
	* src/mensa.cpp, src/filter.cpp: return a nil pointer from
	table::select and filter::filt if the select clause is incorrect
	from all data partitions (as suggested by Jan Steemann)

2010-08-24 John Wu <John dot Wu at ACM dot org>
	* src/twister.h: clean up doxygen document of the random number
	generators, move continuous random number generators out of
	Mersenne Twister, change all pointers to uniformRandomNumber to
	references

2010-08-23 John Wu <John dot Wu at ACM dot org>
	* src/colValues.cpp:548 change the function swap to operator =,
	using swap causes the new bundle to take over the existing string
	values which destroys the apparently const object (void* helped us
	in circumventing the const-correctness).  This addresses a problem
	reported by Andreas Streichardt

2010-08-23 Peter Tardif <Peter.TARDIF@3ds.com>
	* src/bitvector.cpp: address the problem in the cases where this
	and rhs are not of the same size in operator-

2010-07-22 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.cpp:475 add code to double the size of key_ and
	code_ to avoid array_t::resize incrementing the array sizes one
	element at a time

2010-07-21 John Wu <John dot Wu at ACM dot org>
	* src/array_t.h, src/bitvector.h: add keyword explicit to the
	constructors that may be used as implicitly converters

2010-07-15 John Wu <John dot Wu at ACM dot org>
	* tests/setqgen.cpp:151 compute ceiling of (krow/nrpd) instead of
	floor to ensure the left over rows are written into their own
	partition (not the previous data partition)
	* tests/Makefile.am: update check-sq1 to allow up to 200 Warnings
	(because of the small memory caches used to exercise the memory
	management functions)

2010-07-14 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp, src/mensa.cpp, src/filter.cpp: need to dismiss the
	scope guards after the buffers have been successfully transferred
	to the new table objects (otherwise the new table objects returned
	will contain invalid pointers)
	* src/part.h, src/part.cpp: add functions columnNames and
	columnTypes to output names and types in the order recorded in
	colorder as suggested by Jan Steemann
	* src/bord.cpp, src/mensa.cpp: redirect columnNames and
	columnTypes to use ibis::part::columnNames and
	ibis::part::column::columnTypes
	* tests/setqgen.cpp: accept the fourth arguement as the name of a
	configuration file (to control how much memory to use in test case
	check-sq1 and therefore how long make more-check will run)

2010-07-13 John Wu <John dot Wu at ACM dot org>
	* src/table.h: change typeList and stringList to use array_t
	instead of std::vector
	* src/bord.h: change bufferList to use array_t instead of
	std::vector, move bufferList to table.h, also moves functions
	allocateBuffer, freeBuffer and freeBuffers to table.h
	* src/array_t.cpp: add more print statement to debug memory issue
	(surround them with conditional compilation macro DEBUG)
	* src/array_t.cpp: change the raw pointer in function nosharing to
	auto_ptr
	* src/mensa.cpp, src/filter.cpp: delay the creation of scope
	guards till after the bufferLists take on their final sizes (the
	constructor of the scope guards took the parameters as they were
	declared and are not aware of the changs made later) (this should
	solve the remaining problem with memory leaks reported by Jan
	Krivanek)

2010-07-12 John Wu <John dot Wu at ACM dot org>
	* src/bundle.cpp: add if-statement to check for empty cols
	* src/bord.cpp: wrap the raw pointer for bundle with auto_ptr
	* src/column.cpp: wrap the raw pointers in various select
	functions with auto_ptr

2010-07-11 John Wu <John dot Wu at ACM dot org>
	* src/util.h: replace logger::buffer with logger::operator() to
	remove the need to use function name
	* src/fileManager.cpp: remove uses of malloc outside of
	constructors of fileManager::storage, consolidate the print
	statements in the constructors of fileManager::storage, rearrange
	the call to increaseUse to eliminate the duplicate counting of
	in-core storage object, which appears to be the last possible
	source of memory management errors related to the problem report
	reported by Jan

2010-07-10 John Wu <John dot Wu at ACM dot org>
	* src/fileManager.h: storage::size and storage::bytes contained
	mixed up tests
	* src/fileManager.cpp: replace the implementation of
	storage::enlarge with copy-and-swap completely
	* src/colValues.cpp: replace the underlyine storage object with a
	smaller one in the function reduce when the array size decreases
	significantly (keeping the memory usage low)
	* tests/setqgen.cpp: change KSEQ to be 32-bit integer (to allow
	its values to be casted into doubles safely in thula.cpp)

2010-07-09 John Wu <John dot Wu at ACM dot org>
	* src/whereParser.yy: fix the problem with simple where clauses
	(the previous change to add long-integer expresions has caused the
	parser to reject the simplest query expressions), remove JOINOP
	(not really used anymore)
	* examples/thula.cpp: add function toTest to perform large selects
	* src/mensa.cpp: in function util::addIncoreData, resize target
	only if nold > 0
	* src/fileManager.cpp: change calls to printStatus to call the
	file manager version of it (which actually prints all files in
	memory as intended), implement retry when constructing the storage
	objects

2010-07-08 John Wu <John dot Wu at ACM dot org>
	* tests/setqgen.cpp: add a test program to generate large test
	datasets
	* src/ibin.cpp, src/query.cpp, src/column.cpp: capture return
	values of function write, fgets, and truncate (to address the
	warnings produced by gcc 4.4)

2010-07-02 John Wu <John dot Wu at ACM dot org>
	* src/iroster.cpp: add explicit instantiation of roster::locate
	* src/qExpr.cpp: change the constructors of qIntHod and qUIntHod
	to reflect the change of parent class
	* src/column.cpp: estimateRange with qIntHod and qUIntHod needs to
	check whether thePart is nil
	* src/part.h, src/part.cpp: add variantions of doCompare and
	negativeCompare for qIntHod and qUIntHod, add cases in
	part::doScan and part::negativeScan to make use of the new
	functions
	* src/countQuery.cpp: add cases to deal with qIntHod and qUIntHod

2010-07-01 John Wu <John dot Wu at ACM dot org>
	* src/part.h, src/part.cpp: add functions for doCount for qIntHod
	and qUIntHod

2010-06-30 John Wu <John dot Wu at ACM dot org>
	* src/qExpr.h, src/qExpr.cpp: change qIntHod and qUIntHod to
	inherent from qRange instead of qExpr
	* src/query.h, src/query.cpp: add cases for qIntHod and qUIntHod

2010-06-28 John Wu <John dot Wu at ACM dot org>
	* src/column.h, src/column.cpp: add functions to handle qIntHod
	and qUIntHod

2010-06-26 John Wu <John dot Wu at ACM dot org>
	* src/whereLexer.ll, src/whereParser.yy: add rules for detecting
	sequences of long integers and building qIntHod and qUIntHod

2010-06-24 John Wu <John dot Wu at ACM dot org>
	* src/util.cpp: modify readInt and readUInt to skip trailing
	modifiers U and L, add cases to deal with hexadecimal values
	* src/query.cpp: moved the functions for ibis::nameList from
	query.cpp to util.cpp (along with the definition of
	ibis::util::delimiters)
	* src/array_t.cpp: add function deduplicate
	* src/qExpr.h, src/qExpr.cpp: add qIntHod and qUIntHod

2010-06-23 John Wu <John dot Wu at ACM dot org>
	* src/quaere.cpp: add two cases in ibis::quaere::create to handle
	range joins with zero as delta, wrap raw pointers to qExpr with
	auto_ptr
	* src/fromClause.cpp: change function realName and alias to return
	the incoming argument instead of nil pointer when the incoming
	argument is not found in the from clause, this allows the from
	clause to be empty when joins are specified
	* src/whereLexer.ll: add rules for integer constants

2010-06-22 John Wu <John dot Wu at ACM dot org>
	* src/fromClause.h, src/fromClause.cpp: add function reorderNames
	* src/quaere.cpp: add code to swap the names in the from clause in
	function ibis::quaere::create
	* src/quaere.cpp:557 vars was assigned the same value as varr
	* tests/join-?: add files for check-join
	* src/mensa.cpp, src/filter.cpp: wrap raw pointers used in
	ibis::table::selct and ibis::filter::filt in std::auto_ptr to
	address the memory leak problem reported by Jan Krivanek
	* tests/vault: add directory for expected output files for
	regression tests

2010-06-21 John Wu <John dot Wu at ACM dot org>
	* src/selectClause.h, src/selectClause.cpp: rename _verify to
	verifyTerm and change it to be a class function to make it
	accessible to other functions
	* src/whereClause.h, src/whereClause.cpp: rename _verify to
	verifyExpr and change it to be a class function
	* src/qExpr.cpp: change implementations of getTableNames to not
	record the empty table names
	* src/quaere.cpp: add statements to ensure the two tables are used
	in the right order in function ibis::quaere::create
	* src/jrange.cpp:1029 add else block to handle the case of "no
	match"

2010-06-18 John Wu <John dot Wu at ACM dot org>
	* src/fromParser.yy: change the join condition specified with the
	keyword USING into a proper arithmetic expression

2010-06-18 Mario D. Santana <mds at mariosantana dot net>
	* src/capi.cpp: a patch to work with text values in C API

2010-06-17 John Wu <John dot Wu at ACM dot org>
	* src/utilidor.cpp: add calls to nosharing to make sure the arrays
	to be sorted are not shared
	* src/bord.cpp, src/filter.cpp, src/mensa.cpp: add scope guard for
	ibis::bord::bufferList to ensure the buffers are released
	* src/selectClause.cpp: the copy constructor neglected to copy
	names
	* src/part.cpp:4455 add statement to clear the existing content of
	res
	* src/part.cpp:11799 add statement to call storage::beginUse,
	otherwis some arrays are left in memory after completion of
	queries

2010-06-16 John Wu <John dot Wu at ACM dot org>
	* src/util.h: add ibis::util::guardImpl2 to work with two-argument
	functions
	* src/jnatural.h, src.jrange.h: add select clause to
	ibis::jNatural and ibis::jRange, modify the constructors and the
	function select
	* src/fromClause.cpp:40 add loop to fill member variable ordered_,
	can not copy its content from rhs which points to wrong strings

2010-06-15 John Wu <John dot Wu at ACM dot org>
	* src/bord.h, src.bord.cpp: change the constructor of bord and
	bord::part to explicit reset the pointers to 0, add function
	evaluateTerms

2010-06-13 John Wu <John dot Wu at ACM dot org>
	* src/filter.h, src/filter.cpp: rename aliases_ to sel_ to reflect
	that he intent of the variable has changed to be the select clause

2010-06-11 John Wu <John dot Wu at ACM dot org>
	* src/utilidor.h, src/utilidor.cpp: add another version of
	template sortMerge for range joins

2010-06-10 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: replace columns.find with getColumn to make the
	column name look up more uniform and to accomodate fully qualified
	column names

2010-06-07 John Wu <John dot Wu at ACM dot org>
	* src/capi.cpp: add try-catch blocks to all functions in C API as
	suggested by Luca Deri

2010-06-04 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: add statements to check for col->partition()
	before using it

2010-06-03 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp, src/ixbylt.cpp, src/ixfuge.cpp, src/ixfuzz.cpp,
	src/ixzona.cpp: update all versions of activate and activateCoarse
	to use the new constructor (slightly simplifies the code, but
	mostly to be more consistent in the constructor argument list)

2010-06-02 John Wu <John dot Wu at ACM dot org>
	* src/array_t.h, src/array_t.cpp: change the constructor of
	array_t that takes a segment of a storage to use the start and end
	address as constructors that take similar arguments

2010-05-26 John Wu <John dot Wu at ACM dot org>
	* src/util.h: add ibis::util::getVersionString and
	ibis::util::getVersionNumber

2010-05-25 John Wu <John dot Wu at ACM dot org>
	* configure.ac: replace the obsolete command AC_OUTPUT_COMMANDS
	with AC_CONFIG_COMMANDS, add integer version version number as
	macro FASTBIT_IBIS_INT_VERSION, update the output command to
	better handle the substitution of PACKAGE_ prefix with FASTBIT_
	prefix (to address a problem noticed by Valeria Lorezetti)

2010-05-21 John Wu <John dot Wu at ACM dot org>
	* src/capi.h, src/capi.cpp: minor clean up of the doxygen
	documentation

2010-05-21 Georgiy Zhytar <Georgiy dot Zhytar at solarwinds dot com>
	* src/capi.h, src/capi.cpp: add function fastbit_reorder_partition

2010-05-19 John Wu <John dot Wu at ACM dot org>
	* configure.ac, src/fastbit-config.h.in: check for the presense of
	function getpwuid_r
	* src/util.cpp: add the use of macro HAVE_GETPWUID_R
	* src/utilidor.h, src/utilidor.cpp: add a version of quick sort
	for strings stored in array_t<const char*>, all existing string
	sortign functions perform whole string comparisons using standard
	system calls.
	* src/category.h, src/category.cpp: move ibis::dictionary into its
	own file
	* src/dictionary.h, src/dictionary.cpp: remove the use of std::map
	to reduce the time needed to read a dictionary file, add a
	header to the dictionary file (new code passed make check)

2010-05-18 John Wu <John.Wu at ACM.org>
	* src/util.cpp:1104 comment out the delete statement, the pointer
	was returned by a old-style getpwuid which can not be deleted (to
	address crash reported by Jason Chambers)

2010-05-17 John Wu <John.Wu at ACM.org>
	* src/part.h: add function ibis::part::rename
	* src/part.cpp: change function gatherParts to keep the new
	partitions that has the same name but different in other regards
	as suggested by Valeria Lorezetti
	* src/fileManager.h, src/fileManager.cpp: add
	fileManager::softWriteLock to avoid indefinite wait in
	ibis::fileManager::clear (suggested by Luca Deri)
	* src/bord.cpp: change bord::part::groupby to return an empty
	table when the current table is empty as suggested by Luca Deri

2010-05-14 John Wu <John.Wu at ACM.org>
	* tests/Makefile.am: change test case 1 and 2 of check-marksdb to
	exclude the output of d ~ 12 because there are two sets of points
	with d that are almost the same so their orders (and therefore
	which ones will show up in the output) depend on tiny numerical
	errors.

2010-05-13 John Wu <John.Wu at ACM.org>
	* src/bundle.cpp: in bundles::sort and bundle1::sort add calls to
	perform aggregation operations when there is only one row in the
	bundles (a problem reported by Bernd Jaenichen); need to invoke
	the function reduce even in the case of nGroups == nHits
	* src/util.h, src/util.cpp: change the function getString that
	takes three arguments to readString, to make it possible to detect
	missing string values in the incoming text files
	* tests/Makefile.am: add test case really-small to target check

2010-05-12 Zhengbing Li <li dot zhengbing at huawei dot com> and
	Xun Hu <XunHu at huawei dot com>
	* java/FastBit.c: add code to properly release memory allocated for
	java objects.  This fixes memory leaks in JNI library.

2010-05-04 John Wu <John.Wu at ACM.org>
	* src/bord.h, src/bord.cpp: add bord::column::evaluateRange to
	support qDiscreteRange, remove the template function bord::doScan,
	change code to use ibis::part::doScan instead
	* src/part.cpp:4012 hits.setBit(i, 1) should be
	hits.setBit(iix[i], 1)
	* src/mensa.cpp, src/filter.cpp: add back the statement to compute
	nplain (which were removed last night by mistake), restores the
	correctness of check-text case 8
	* tests/Makefile.am: add test case 9 to exercise tests/inRange.cpp
	* tests/inRange.cpp: modify the test and query to exercise more
	functions of FastBit

2010-05-04 Bernd Jaenichen <bernd.jaenichen at globalpark.com>
	* tests/inRange.cpp: add code for testing discrete range queries
	on in-memory data partitions

2010-05-03 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: add cases to handle limit clauses with a
	single arugment (an error reported by Valeria Lorenzetti)
	* tests/Makefile.am: update test cases in check-marksdb to
	exercise the new limit clauses
	* src/selectClause.cpp:297 reverse the change made on 2010-04-29
	to correct the problem with group-by operations

2010-04-29 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: add code to check for two-argument version of
	the limit clause to excercise the functionality suggested by
	Valeria Lorenzetti
	* tests/smatch.cpp: add file the detected a bug in
	ibis::text::stringSearch originally from Bernd Jaenichen
	* tests/Makefile.am: modify a test case in check-marksdb to
	exercise the new extension of limit clause
	* src/selectClause.cpp:297 add code to extract the variable from
	simple arithmetic express

2010-04-28 John Wu <John.Wu at ACM.org>
	* src/category.cpp: in text::stringSearch, fix the error the
	unrolled loops for string comparisons (a problem identified by
	Bernd Jaenichen)
	* src/table.h: add a new variation of ibis::table::dump as
	suggested by Valeria Lorenzetti
	* src/bundle.h: add a two-argument version of the function
	truncate to match the functionality suggested by Valeria
	Lorenzetti
	* src/colValues.h: add the second argument (start) to the function
	truncate to implement the changes in ibis::bundle::truncate

2010-04-27 John Wu <John.Wu at ACM.org>
	* src/column.cpp: adjusting the print out in the constructors of
	column object to accomodate the empty partition names
	* src/category.cpp: add ibis::text::patternSearch to allow pattern
	matches on text columns

2010-04-26 John Wu <John.Wu at ACM.org>
	* src/part.h: add class ibis::part::mutexLock to provide an access
	to the mutex lock on the part object (issue raised by Prabhat in
	debugging HDF5_FastQuery)

2010-04-21 John Wu <John.Wu at ACM.org>
	* src/column.h, src/column.cpp, src/category.h, src/category.cpp:
	change string search functions from search to stringSearch,
	declare them in ibis::column to make them more consistently
	accessible
	* src/part.h, src/part.cpp: rename likeSearch to patternSearch
	* src/query.cpp, src/countQuery.cpp: check the return code of
	ibis::part::lookforString
	* src/board.h, src/bord.cpp: add the newly defined functions for
	string searches in column.h

2010-04-20 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: modify doQuaere to exercise query on string
	values (to address a problem reported by Andreas Streichardt)
	* src/bord.h, src/bord.cpp: add function selectStrings to
	ibis::bord::column

2010-04-16 John Wu <John.Wu at ACM.org>
	* src/part.cpp: change ibis::part::barrel::open to work with
	in-memory data, change doScan to use ibis::part::barrel instead of
	ibis::math::barrel (to address a problem reported by Andreas
	Streichardt)

2010-04-14 John Wu <John.Wu at ACM.org>
	* java/Makefile.am: add targets to generate build.properties to
	work with the modified build.xml

2010-04-14 Shiran Pasternak <shiranpasternak at gmail.com>
	* java/build.xml: add reference to build.properties to control the
	path for new library files

2010-04-13 John Wu <John.Wu at ACM.org>
	* src/selectClause.cpp: update the external names to remove the
	use of parentheses to make it easier to use the columns produced
	from queries
	* src/mensa.cpp, src/filter.cpp: remove the changes made on 04/08
	to the static functions ibis::table::select and ibis::filter::filt
	regarding the column names in the result table, use the output of
	ibis::selectClause::termName
	* src/bord.cpp:2001 add a copy to nosharing to address the seg
	fault problem reported by Valeria Lorenzetti
	* src/bord.cpp: modify the name of the column for count(*) to be
	count0, change the integer following the rest of the column to
	start with 1
	* examples/thula.cpp:682 add statement to delete sel2, it causes
	function fileManager::clear to deadlock when selecting everything
	from a data partition (a test case used by Valeria Lorenzetti)

2010-04-12 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp: split the code to handle each column type
	separately

2010-04-11 John Wu <John.Wu at ACM.org>
	* src/bord.h, src/bord.cpp: add missing versions of selectTypes

2010-04-09 John Wu <John.Wu at ACM.org>
	* src/column.cpp:4601,4634,4667 can not swap oss.str() (a problem
	spotted by both Arian Baer and Teryl Taylor)
	* src/mensa.cpp: add an empty implementation of mensa::backup
	* src/bord.cpp: add function bord::part::backup, set amask to all
	1s in the constructor to address a problem reported by Andreas
	Streichardt on querying in-memory data
	* src/bord.cpp: change the implementation of ibis::bord::select to
	use static function ibis::table::select

2010-04-08 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp, src/filter.cpp: change the construction of names
	for columns involving aggregation functions in preparation for
	outputing the in-memory data partitions
	* src/tafel.cpp, src/part.cpp: move functions writeColumn,
	writeString and writeRaw from ibis::tafel to ibis::part to make
	them available to more classes

2010-04-07 John Wu <John.Wu at ACM.org>
	* src/query.cpp: modify function computeHits to take into account
	the null mask due to the select clause (a problem reported by
	Arian Baer)

2010-04-06 John Wu <John.Wu at ACM.org>
	* src/column.h, src/column.cpp: add an implementation of
	selectStrings
	* examples/tcapi.c: add call to fastbit_get_qualified_strings, add
	column type s
	* src/util.h, src/util.cpp: add util::readUInt (to address a
	problem reported by Arian Baer)
	* src/tafel.cpp:3073 change util::readInt to util::readUInt

2010-04-05 John Wu <John.Wu at ACM.org>
	* src/capi.cpp, src/capi.h: add function
	fastbit_get_qualified_strings (at request of Jose Nazario)

2010-03-31 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp:963,964 the variable it should have been mit
	as Teryl Taylor pointed out

2010-03-04 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp, src/filter.cpp: assign names through the long
	versions of the constructor for ibis::tabula and ibis::tabele as
	suggested by Andreas Streichardt
	* src/qExpr.h:52 Clarify the ownership of the nodes in a query
	expression tree.

2010-03-03 John Wu <John.Wu at ACM.org>
	* tests/Makefile.am: modify test case 2 of check-ibis to exercise
	the error caught by Andreas Streichardt
	* src/selectClause.cpp:479 add code to prevent the checking of
	variable name "*"
	* src/whereClause.cpp:250 add check for variable name starting
	with *
	* src/selectClause.cpp:514 add check for the number of variables
	in bar, empty bar should be treated as no affecting the mask
	* src/filter.cpp: update the class function filt to work with
	select count(*) with an alias

2010-03-03 Andreas Streichardt <andreas.streichardt at globalpark.com>
	* src/tab.h: correct errors in the value returned by
	ibis::tabele::cursor

2010-02-28 John Wu <John.Wu at ACM.org>
	* INSTALL: update item 7 to mention Cray XT explicitly, add
	information about disabling attempts to build JNI library with the
	option --without-java

2010-02-25 John Wu <John.Wu at ACM.org>
	* doc/dataLoading.html: comment out the note about the restriction
	due to 32-bit offsets used in index files

2010-02-18 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: change doQuaere to match the print out of
	doQuery
	* src/category.cpp:2753 add call to startPositions to make sure
	.sp file is up-to-date
	* src/ibis.h, src/util.h: remove the verbose argument from
	ibis::init, add ibis::util::setVerboseLevel to change the
	verboseness level.  The example program ibis.cpp has changed to
	invoke ibis::init some time ago, which causes it to reset the
	verboseness level to default value and causing it to fail some
	tests run by 'make check'
	* tests/marksdb-3: change the content to match the output from
	ibis.cpp with the new quaere class -- it matches with SQL standard
	a little better

2010-02-17 John Wu <John.Wu at ACM.org>
	* src/Makefile.am: add jrange.h and jrange.cpp to the list of
	files
	* src/filter.h, src/filter.cpp: add ibis::filter class to handle
	query conditions not involving any table names

2010-02-15 John Wu <John.Wu at ACM.org>
	* src/part.h: getColumn with name is changed to skip over the
	portion before the first period if a period is present in the name

2010-02-12 John Wu <John.Wu at ACM.org>
	* src/fileManager.h: comment out the statement that swap the
	variable nref in ibis::fileManager::storage::swap to address the
	memory leak problem identified by Zeid Derhally
	* src/fromClause.cpp, src/fromParser.yy: remove operations on
	ordered_ from fromParser.yy, fill ordered_ in fromClause::parse
	instead, otherwise the pointer inserted into ordered_ earlier can
	become invalid when the names_ and aliases_ are resized

2010-02-11 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp: add check to make sure nref is less than 2
	in storage::read, add test for nref in storage::enlarge (in an
	attempt to catch the problem reported by Zeid Derhally from
	SolarWinds, don't know how to reproduce his problem yet)

2010-02-10 John Wu <John.Wu at ACM.org>
	* src/fromParser.yy, src/selectParser.yy, src/whereParser.yy:
	split the %{%} section and use the newer directives supported by
	bison
	* examples/ibis.cpp: add function doQuaere to exercise the new
	ibis::quaere class hierarchy

2010-02-09 John Wu <John.Wu at ACM.org>
	* src/util.h, src/part.cpp: add function ibis::findDataset

2010-02-08 John Wu <John.Wu at ACM.org>
	* src/quaere.h, src/quaere.cpp: move join.h to quaere.h, add
	quaere.cpp
	* src/util.h, src/util.cpp: add global variable ibis::datasets
	* examples/ibis.cpp: replace tlist with ibis::datasets

2010-02-05 John Wu <John.Wu at ACM.org>
	* src/jrange.h, src/jrange.cpp: add skeleton of ibis::jRange

2010-02-04 John Wu <John.Wu at ACM.org>
	* src/fromLexer.ll, src/fromParser.yy: add parser for the from
	clause

2010-02-03 John Wu <John.Wu at ACM.org>
	* src/qExpr.h, src/qExpr.cpp: remove hasJoin, add class function
	extractTableName and splitColumnName, add member function
	getTableNames, extend the function simplify to take advantage of
	the constant expressions

2010-02-02 John Wu <John.Wu at ACM.org>
	* src/*, examples/*: update copyright year, change existing range
	join to deprecatedJoin and the corresponding term type from JOIN
	to DEPRECATEDJOIN
	* src/bord.h, src/bord.cpp: add functions bord::copyValue,
	bord::createBuffer, bord::freeBuffer, and bord::freeBuffers
	* src/join.h: add function ibis::join::fillEquiJoinTable
	* src/jnatural.h, src/jnatural.cpp: remove function clearBuffer,
	add definition of ibis::join::fillEquiJoinTable, replace
	jNatual::select with new implementation
	* src/whereClause.yy: remove the rules for producing old join
	expression (deprecatedJoin)

2010-02-01 John Wu <John.Wu at ACM.org>
	* src/part.cpp:780 modify the tests to take into account the
	trailing directory separator (which is removed internally) to
	address an issue reported by Valeria Lorenzetti
	* tests/Makefile.am: add trailing / to a few test cases to verify
	the fix
	* src/jnatural.h, src/jnatural.cpp: rename joinin to jNatural
	* src/join.h: remove ibis::join::result, use ibis::table in its
	place

2010-01-29 John Wu <John.Wu at ACM.org>
	* tests/Makefile.am: add test data directory t2 to exercise the
	functions that work with multiple data partitions
	* src/parti.cpp, examples/ibis.cpp: add more print out to
	reordering operations
	* src/fileManager.cpp: storage::enlarge used copy-and-swap idiom
	incorrectly and caused the client to assume the operation was a
	failure

2010-01-28 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp:3476 add '++jp' to increment the loop index, an
	error reported by Joel Dolisy <Joel dot Dolisy at solarwinds dot
	com>
	* src/parti.cpp: add code to empty the memory cache in the
	functions that perform reordering, otherwise, some files to be
	modified by the reordering could be hold in memory in read-only
	mode.  Joel Dolisy reported that such situation can cause file
	sharing violation on MS Windows

2010-01-27 John Wu <John.Wu at ACM.org>
	* src/bundle.cpp: remove extra call to reverse the row order
	(address a problem reported by Valeria Lorenzetti)
	* src/qExpr.h: make sure the name is a valid name before recording
	it is a barrel object in function ibis::variable::recordVariable
	* src/part.cpp:12114 make sure column has a valid name before
	print a warning message about not able to locate a column

2010-01-25 John Wu <John.Wu at ACM.org>
	* src/array_t.cpp: change the sort function that takes an index
	array to sort the elements identified by the input array when the
	input array is a valid subset of indices
	* src/colValues.cpp: change sort function that takes an index
	array to make use new sort function of array_t
	* src/bundles.cpp: change the constructor of bundles that takes a
	list of values to skip over '*'
	* src/bord.cpp: columnType(i) --> columnType(jbdl)
	* tests/Makefile.am: modify test case 5 of check-text to exercise
	the order-by functionality more
	* src/mensa.cpp:390 match 'count(*)' exactly, not just 'count('
	* src/bundle.cpp: update bundles::sort to deal with the case there
	ncol is not the same as comps.size()

2010-01-23 John Wu <John.Wu at ACM.org>
	* src/part.cpp: handle code to fill RIDs in the constructor that
	takes two directory names
	* src/bundle.cpp: a number of loops with g as loop variable, but
	actually used i instead, they cause the function reorder to
	misbehavior (a problem reported by Valeria Lorenzetti)

2010-01-22 John Wu <John.Wu at ACM.org>
	* src/part.h, src/part.cpp: change names ibis::util::tablesFromDir
	and ibis::util::tablesFromResource to ibis::util::gatherParts, add
	optional argument to indicate whether the data partitions are to
	be created for reading only
	* src/mensa.cpp: change all data partitions in mensa to be read-only

2010-01-20 John Wu <John.Wu at ACM.org>
	* README, INSTALL: add note about nightly snapshots and sudo
	problem with configure
	* src/part.h, src/part.cpp, src/parti.cpp: add protected member
	variable readonly, throw exception if readonly flag is set but the
	data directory is not properly configured

2010-01-19 John Wu <John.Wu at ACM.org>
	* src/query.cpp: update setWhereClause, setSelectClause and
	setPartition to print out the data partition name in case of error

2010-01-18 John Wu <John.Wu at ACM.org>
	* src/qExpr.h: add function isTrue to ibis::math::term
	* src/part.h, src/part.cpp: add a variation of doScan to treat an
	arithmetic expression as true or false
	* src/countQuery.cpp, src/query.cpp: add code to work with
	arithmetic expressions
	* src/qExpr.cpp: replace ibis::math::number(0.0) with call to
	ibis::compRange::makeConstantFalse.  Because the existing parser
	will not accpet a standard alone arithmethic expression (without
	a comparison operator), the number written to query files will not
	be read in correctly.  (To address the crash problem with a where
	clause that obviously does not select any rows, reported by
	Valeria Lorenzetti)
	* src/qExpr.cpp: the paser of negation operator generates a right
	child of the tree, but the evaluation procedures in qExpr.cpp used
	left child instead. a number of other minor changes to work with
	negation operator correctly

2010-01-17 John Wu <John.Wu at ACM.org>
	* src/whereClause.cpp: in functin verify check the value of expr_
	after calling qExpr::amplify
	* src/qExpr.cpp: replace nil expression with the address of
	ibis::math::number(0.0) (which will be interpretted as false)

2010-01-16 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp:2924 stop in case the return value of
	setSlectClause is negative
	* src/mensa.cpp:3680 capture the return value of
	ibis::selectClause::parse (it was previously ignored)
	* src/whereLexer.ll: add UNSIGNED to create tokens of numbers
	without a sign, leave the parser to deal with the sign
	* src/selectLexer.ll: remove the sign from NUMBER to let the
	parser deal with the sign (to address a parser error discovered by
	Andreas Streichardt)

2010-01-13 John Wu <John.Wu at ACM.org>
	* src/selectLexer.ll: add var and variance as aliases of varsamp,
	varp as an aliases of varpop, stdev and stddev as aliases of
	stdsamp, and stdevp as an alias of stdpop, these new names are
	more commonly used in SQL implementations, add aggregation
	function median
	* src/selectParser.yy: add rule for aggregation function median
	* src/colValues.cpp: add code to compute the median, update
	computations of distinct counts to avoid making copies of the
	values to be sorted, change the type of the variable lastValue for
	diciding whether the values have changed for follow the type of
	the array
	* src/bundle.cpp: create colValues in the same type as the
	incoming values for aggregation function DISTINCT, previously it
	always uses double which may require copying the incoming values
	* src/query.h, src/countQuery.h, src/query.cpp,
	src/countQuery.cpp: add function getHitRows to both ibis::query
	and ibis::countQuery

2010-01-12 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp:3951 change return value from a nil pointer to a
	new empty table
	* src/mensa.cpp: add code to catch paser error and return a nil
	pointer from ibis::table::select as suggested by Andreas
	Streichardt

2010-01-11 John Wu <John.Wu at ACM.org>
	* countQuery.cpp: add calls to m_sel->getNullMask to exclude null
	values in the select clause

2009-12-30 John Wu <John.Wu at ACM.org>
	* tests/Makefile.am: add hcompare.pl to EXTRA_DIST
	* src/query.cpp: add one more layer of try-catch block to attempt
	to recover from failure during query evaluation

2009-12-29 John Wu <John.Wu at ACM.org>
	* src/column.cpp: in the catch block of evaluateRange add code to
	empty cache and retry the query evaluation
	* examples/ibis.cpp: add catch block to parseString

2009-12-28 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp:4324 keep the total number of threads equal to
	that specified by the option -t

2009-12-25 John Wu <John.Wu at ACM.org>
	* tests/scripts/hcompare.pl, tests/Makefile.am: add hcompare.pl to
	compare the histograms produced for the test cases in chek-marksdb

2009-12-24 John Wu <John.Wu at ACM.org>
	* src/array_t.h, src/array_t.cpp, src/fileManager.h,
	src/fileManager.cpp, src/i*.cpp: consolidate all uses of trymmap
	into one function named ibis::fileManager::getFileSegment,
	consolidate the implementation of array_t constructor to use the
	function read (remove duplicate code for reading the file contant)

2009-12-23 John Wu <John.Wu at ACM.org>
	* src/category.cpp:2500 prevent the nil terminator from being
	inserted into the output string object (when it is inserted, it
	creates a nil terminator in other strings that includes this one
	and make the values following the string invisible in print outs)
	* src/util.cpp: update readInt and readDouble to detect empty
	strings, add check for str.size() before using str[str.size()-1]
	* src/tafel.cpp: change parseLine to record parser errors as null
	values instead of treating them as errors and terminating the
	function (to address a need to input null values through CSV files
	raised by Andreas Streichardt andreas dot streichardt at
	globalpark dot com)
	* src/category.cpp: replace all getState call with
	getStateNoLocking to remove the problem with dead locks while
	attempting to create indexes on string-valued columns (first
	reported by Elaheh Pourabbas <elaheh.pourabbas at iasi.cnr.it>)
	* src/column.cpp:4761 add 'if (idx != tmp)' to prevent current
	index being deleted
	* tests/Makefile.am: change check-text to test the functions for
	building indexes in bulk (which how Elaheh discovered the problem
	with index building procedure)
	* src/index.cpp:4118 fname should be fdes
	* src/index.cpp: check the return values of read function of
	different indexes

2009-12-22 John Wu <John.Wu at ACM.org>
	* examples/ardea.cpp: assign "," as the default delimiter for
	readCSV
	* src/util.cpp: change getString to remove the (assumed) space
	delimiter

2009-12-21 John Wu <John.Wu at ACM.org>
	* src/ixfuge.cpp, src/index.cpp, src/array_t.cpp,
	src/bitvector.cpp: change conditional compilation statement #if
	defined(_DEBUG) to be #if  DEBUG+0 > 1 || _DEBUG+0 > 1, minor
	updates to address errors in the logging statements
	* src/fileManager.cpp: replace the statement that reinterpret
	m_begin as float and double with casts to uint32_t and uint64_t,
	PGI compiler appears to be doing some extra checking and does not
	like the recast values

2009-12-18 John Wu <John.Wu at ACM.org>
	* src/configure.ac: add AC_PACKAGE_URL
	* src/util.cpp: print FastBit version, mailing list address and
	web url at the beginning of log file
	* src/tafel.cpp:551-555 update the check on the availability of
	strtof (default to strtod)
	* src/ibin.h: using statement can only refer to members of direct
	base class
	* src/fileManager.cpp:1906 neglected to assign the value of
	cp.m_end
	* example/ibis.cpp:3586 merge the if test with the test in LOGGER
	statment to avoid ambuguious if statement (warning from gcc)
	* INSTALL: update known problem (9)

2009-12-17 John Wu <John.Wu at ACM.org>
	* src/ibin.h, src/irelic.h: add using statements to quiet
	complains about partially overwritten functions
	* src/part.cpp: the function quickTest produced select clauses
	without expected separators

2009-12-16 John Wu <John.Wu at ACM.org>
	* src/whereParser.yy: add rules to accept "name != 'string'" at
	request of Alexandre Maurel
	* tests/Makefile.am: add test case 3 in check-maurel to exercise
	"name != 'string'"
	* src/selectClause.cpp: change functions describe and fillNames to
	produce external names with the aggregation function when no alias
	is provided

2009-12-15 John Wu <John.Wu at ACM.org>
	* tests/readcsv.cpp: prefix the column names with comment
	characters to allow other CSV reader to correctly read the CSV
	file too, change the string type from text to category (to allow
	indexing and searching)
	* tests/Makefile.am: add check-maurel to exercise the test data
	and queries contributed by Alexandre Maurel

2009-12-14 John Wu <John.Wu at ACM.org>
	* src/bord.cpp: update bord::part::groupby to work with count(*)
	as a term in the select clause
	* src/bundle.h, src/bundle.cpp: allow count(*) in the select
	clauses, consolidate ibis::bundles::sort and ibis::bundles::sort2
	* src/util.h, src/query.cpp: remove class ibis::selected (replaced
	with ibis::selectClause)
	* src/bundle.cpp: replace ibis::selected with ibis::nameList in
	function bundles::tuncate and bundles::reorder
	* src/selectParser.ll: add keyword countdistinct
	* test/Makefile.am: change test case 7 to avoid in-line editing of
	output file
	* src/util.cpp: change ibis::util::strMatch to make sure an empty
	string can match the wild character '%' (zero or more of any
	character - a problem reported by Jan Hapke)

2009-12-13 John Wu <John.Wu at ACM.org>
	* src/qExpr.h:214 construtor of qContinuous assigned operations to
	the wrong side (a problem reported by Jan Hapke)
	* src/countQuery.cpp:45 change conds.getString() to simply conds
	(to make use of the operator<< defined in whereClause.h) to avoid
	the problem with getString() returning nil pointer (which happens
	when the query expression is directly passed in from the caller)

2009-12-12 John Wu <John.Wu at ACM.org>
	* src/bundle.h, src/bundle.cpp: add function bundles::sort2 to
	handle the cases where the aggregation functions appear in the
	middle of the select clause (the previous attempt to address this
	issue on 12-10 neglected to move the aggregation functions with
	the column values, and therefore produces the incorrect result.
	Problem reported by Jan Hapke)

2009-12-11 John Wu <John.Wu at ACM.org>
	* src/query.cpp: make sure ierr is set for LOGICAL_NOT operator
	(address a problem reported by Alexandre Maurel)
	* src/array_t.cpp: change nosharing to make a copy when m_begin !=
	actual->begin()
	* src/fileManager.cpp: constructor of fileManager::rofSegment
	neglected to record the memory it allocated (address a problem
	reported by Jan Hapke)
	* win/*.vcproj: restore the Debug configurations to use Debug
	options (they were accidentally change to use Release options)

2009-12-10 John Wu <John.Wu at ACM.org>
	* src/bundle.cpp: add code to temporarily move the aggregation
	functions to the end of the list of columns for easier sorting (to
	address the problem with aggregations appears before the group-by
	keys in the selected clause observed by Jan Hapke)
	* src/util.h: consolidate the checking of atomic operations on
	windows platforms
	* src/selectClause.h: rename innerName to argName and outerName to
	termName
	* win/trydll.cpp: replace ibis::selected with ibis::selectClause

2009-12-08 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp: move the mutex lock outside to the caller
	because most of the callers have already a mutex lock, which
	causes dead lock
	* src/whereParser.yy: introduce special cases of operator IN
	involving string literals (to address a problem reported by
	Alexandre Maurel)
	* src/qExpr.h: add qLike to represent the operator Like
	* src/whereLexer.ll, src/whereParser.yy: add LIKEOP and defintion
	of operator LIKE
	* src/category.h, src/category.cpp, src/query.cpp,
	src/countQuery.cpp, src/whereClause.cpp: update to work with
	ibis::qLike through ibis::util::strMatch

2009-12-07 John Wu <John.Wu at ACM.org>
	* win/win.Mak: remove '-o' from commands that build object files,
	visual studio has deprecated -o
	* src/array_t.cpp:301 check for nil m_begin or m_end
	* src/bitvector.cpp: 454 check for nil m_vec.begin() or
	m_vec.end()
	* src/*.cpp: address issues raised by g++ -Wall, only warnings
	left should be unused variables starting with g, which are
	ibis::util::guard objects meant to be automatically cleaned by the
	compiler
	* src/fileManager.cpp: comment out line 1161 and 1162 to prevent
	duplicate calls to fileManager::increaseUse, consolidate the
	recording of files in getFile and tryGetFile with recordFile
	(previous version may record roFile objects that have been deleted)

2009-12-06 John Wu <John.Wu at ACM.org>
	* src/util.cpp: change util::userName to prefer getpwuid_r, add
	call to delete the object pass (under valgrind, this variable is
	always shown as lost)

2009-12-05 John Wu <John.Wu at ACM.org>
	* src/qExpr.h, src/qExpr.cpp: change all 'inline virtual'
	functions to virtual functions (without inlining) (an attempt to
	reduce the linking problems on cygwin with gcc)

2009-12-04 John Wu <John.Wu at ACM.org>
	* src/qExpr.cpp: change the default option in printFull to call
	the print function, change the defaul options in both print and
	printFull to use the output stream given by Jochen Schlosser
	* src/fileManager.cpp, src/fileManager.h: remove
	fileManager::mutexLock, use ibis::util::mutexLock instead
	* src/part.h, src/parti.h, src/part.cpp: add function emptyCache,
	replace ibis::part::mutexLock with ibis::util::mutexLock
	* src/array_t.h, src/array_t.cpp: move function freeMemory from
	array_t.h to array_t.cpp, add log statements to match the log
	statement in the constructors

2009-12-03 John Wu <John.Wu at ACM.org>
	* src/tafel.cpp: change tablex::readNamesAndTypes to read
	-part.txt as well, change ibis::tafel::writeMetaData to write the
	columns in the order given on input
	* src/whereLexer.ll: change return type of {QUOED} to STRLIT
	(return the return type of the number sequence to NUMSEQ as it
	should be, the previous modfication was incorrect)
	* src/whereParse.yy: uncomment the rules for producing
	ibis::qString, modify the rule on line 419 to provide a
	work-around for the shift/reduce conflict
	* tests/Makefile.am: add test cases for "index = none"
	* src/bitvector.cpp: invoke nosharing on m_vec in all four
	versions of bitwise logical operations that modifies the left-hand
	side (only operator-= was doing it in some cases).  This might
	address the problem reported by Jochen Schlosser because the
	modified mask vector may still be using a map of the old mask file.

2009-12-02 John Wu <John.Wu at ACM.org>
	* configure.ac: generate Makefile in contrib/fbmerge
	* INSTALL: add note about floating-point value variations, remove
	note about valgrind warning

2009-12-01 John Wu <John.Wu at ACM.org>
	* src/selectClause.cpp:10 move assignment of clause_ to the body
	of the constructor to avoid problem with input argument being a
	nil pointer
	* src/query.cpp:2463 change else if block to else block to always
	initialize the bitvector mask
	* src/query.cpp:340-344 compute verified with sc (instead of
	comps)
	* tests/Makefile.am: add a new test case 5 to check-text to test
	the new order by functionality (requested by Jan Hapke)
	* contrib: add contrib directory to cvs/svn along with fbmerge.cpp
	from Luca Deri

2009-11-30 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp: consolidate two nearly identical versions of
	ibis::table::select
	* src/selectClause.h: add a constructor that takes
	ibis::table::stringList
	* src/bord.h, src/bord.cpp: change ibis::bord::part::groupby to
	take ibis::selectClause as argument instead of a list of strings
	(to better handle the aliases)
	* src/query.h, src/query.cpp: replace ibis::select with
	ibis::selectClause (to consolidate handling of select clauses)

2009-11-28 John Wu <John.Wu at ACM.org>
	* src/bord.cpp: include typeinfo to add compilation problem with
	gcc 4.4.x (a problem reported by Jan Hapke)

2009-11-25 John Wu <John.Wu at ACM.org>
	* src/utilidor.cpp: add try-catch block in util::sortStrings
	* examples/ibis.cpp:3997 add statements to work with order by
	clauses with ASC and DESC keywords but without LIMIT clause (a
	problem reported by Jan Hapke)
	* src/bord.cpp: in bord::column::reverseRows and
	bord::column::limit add code to handle string values
	* src/colValues.cpp: in two versions of colStrings::sort, change
	sep from std::string& to std::string
	* tests/Makefile.am: add keyword DESC to the order by clause used
	in check-marsdb case 3 (to verify the problem reported by Jan is
	fixed)
	* src/bundle.cpp:1627 i <= ngroups should be i < ngroups
	(otherwise it writes to an element beyond the allocated memory for
	starts)
	* tests/marksdb-3: update the file to correct printout

2009-11-24 John Wu <John.Wu at ACM.org>
	* src/bord.cpp: add function ibis::bord::part::sortStrings, rename
	some reorderValues that actually performs sorting to sortValues

2009-11-23 John Wu <John.Wu at ACM.org>
	* src/selectParser.yy, src/whereParser.yy: change the
	associativities of unary operators +, - and ! (not) to be right
	associative following the common convention.  This also addresses
	the problem reported by Andrew Olson about failure to parse
	expression "stop-start+1"
	* src/whereLexer.ll: change the return type of quoted string
	literal from NOUNSTR to STRSEQ to ensure that the quoted strings
	are recognized as string literals.  This addresses the problem
	reported by Alexandre Maurel where the value of a string literal
	is also the name of another column.

2009-11-21 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: change doQuery to directly use an
	ibis::bundle object (instead of routing the function calls through
	the query object).  This addresses the issue on the order by
	clause and the limit clause raised by Jan Hapke (but only for
	queries not invoving any arithmetic expressions or aggregation
	functions).

2009-11-20 John Wu <John.Wu at ACM.org>
	* src/colValues.cpp: an incorrect use of
	std::vector<std::string>::reference causes it to overwrite some
	values, which was the cause of a problem observed by Jan Hapke
	* examples/ibis.cpp: modify doAppend to check whether the second
	argument to -a is a directory name (to mimic a utility function
	written by Luca Deri)
	* examples/ibis.cpp: neglected to check the error code returned by
	query::orderby and query::limit, which is the source of a couple of
	problems reported by Jan Hapke.  Modify parseString to bypass the
	problems.
	* src/mensa.cpp: the function ibis::table::parseNames neglected
	the underscore '_'

2009-11-16 John Wu <John.Wu at ACM.org>
	* src/array_t.cpp: in function nosharing, change the test to use
	filename() != 0 instead of isFileMap() because named files are
	tracked by the file manager and may be shared with others later
	* src/bundle.cpp, src/colValues.cpp: add calls to nosharing before
	modifying the content of the bundle or column values (to address
	an issue raised by Alexandre Maurel)

2009-11-10 John Wu <John.Wu at ACM.org>
	* src/ixfuzz.cpp:51-52 remove statements that blindly refers to
	offset32
	* src/ixfuzz.cpp:485 neglected to test for size of coffset64
	* src/colValues.cpp: remove extra statement ++ j in various
	implementation of function segment to address the issue raised by
	Alexandre Maurel
	* src/ibis.h, src/index.h: remove warning about 32-bit bitmap
	offsets

2009-11-09 John Wu <John.Wu at ACM.org>
	* src/fileManager.h: add operator[] to storage object, make it
	possible to shorten st->begin()[6] to (*st)[6]
	* src/ibin.cpp:205-207 change sizeof(uint32_t) to (*st)[6]
	* src/ifade.cpp:77-85 change sizeof(int32_t) to (*st)[6]
	* src/ixzona.cpp: the constructor used offset32 blindly, change
	hit1+1 to hit1 in function evaluate

2009-11-06 John Wu <John.Wu at ACM.org>
	* src/ixambit.cpp, src/ixpack.cpp, src/ixpale.cpp, src/ixzone.cpp:
	capture the return from writing the elements of sub
	* src/irange.cpp:529 change 4*(nobs+1) to sizeof(int64_t)*(nobs+1)
	* src/bitvector.cpp:3285, src/bitvector64:2503 replace call to
	flip with explict code to flip the bits in m_vec, the function
	flip also turns the active bits which need to be handled
	separately in this case
	* src/islice.cpp, src/ifade.cpp: write32 and write64 mistakenly
	used nbos in places of card
	* src/ibin.cpp:484 the starting position of the offsets should be
	8+2*sizeof(uint32_t) not 8+sizeof(uint32_t)
	* src/imesa.cpp: remove mesa::write32 and mesa::write64, they are
	the same as bin::write32 and bin::write64
	* src/ixbylt.cpp:1220 add case for when c1 is in the unrecorded bin

2009-11-05 John Wu <John.Wu at ACM.org>
	* src/ibin.cpp:457 sizeof(int32_t) to st->begin()[6]
	* src/icegale.cpp: in function read(storage*) update computation
	of offsets and add code for cnts
	* src/ixzona.cpp:611 offset32 should be offset64
	* src/ibin.cpp:5126 sizeof(int32_t) should be sizeof(int64_t)
	* src/ixpale.cpp:509 sizeof(int32_t) should be sizeof(int64_t)
	* src/islice.cpp: functions write32 and write64 handles offsets
	incorrectly
	* src/ixpack.cpp:519 change sizeof(int32_t) to sizeof(int64_t)
	* src/ibin.cpp: change ibis::bin::write to call bin::write32 and
	write64
	* src/irange.cpp: change ibis::range::write to use write32 and
	write64, correct the statement in write64 that actually write the
	64-bit offsets
	* src/imesa.cpp: change ibis::mesa::write to use write32 and
	write64 to reduce the code size

2009-11-04 John Wu <John.Wu at ACM.org>
	* src/capi.cpp, src/fileManager.cpp, src/tafel.cpp,
	examples/thula.cpp: get rid off warnings issued by g++ compiler
	* src/ixzone.cpp: in the constructor from a storage object,
	mistakenly placed the offsets for the next level into offset64 and
	offset32
	* src/irange.cpp:461, src/irelic.cpp:549, src/islice.cpp:451,
	src/ixbylt.cpp:2073, src/ixfuzz.cpp:381, src/ixpack.cpp:687 change
	sizeof(int32_t) to header[6], corrects address computations
	* src/ixfuge.cpp: in two version of read function, many instances
	of offset32 should be offset64

2009-11-03 John Wu <John.Wu at ACM.org>
	* src/bitvector.h: change copy_runs and copy_runsn to chech the
	values of nw before calling run::decode.  This avoids the warnings
	from valgrind and make it a little easier to debug the rest of the
	code.
	* src/ixbylt.cpp:1224 cbounds[0] should be cbounds[c0]
	* src/ixbylt.cpp: check the value of c0 in casues where c0-1 and
	c0-2 are used as indices to arrays (in functions evaluate and
	estimateCost)

2009-11-02 John Wu <John.Wu at ACM.org>
	* src/i*.cpp: add compiler macro FASTBIT_USE_LONG_OFFSETS to force
	it to always use 64-bit bitmap offsets (even if the index sizes
	are small)
	* INSTALL: add a note about FASTBIT_USE_LONG_OFFSETS
	* src/ixfuge.cpp:1574 offset64.size() > cbits.size() should be
	coffset64.size() > cbits.size()
	* src/ixbylt.cpp:669 coffset64.size() > bits.size() should be
	offset64.size() > bits.size()
	* src/ixbylt.cpp:1131 add condition c1-1 < ncoarse, the coarse bin
	may be the unrecorded bin, which means cbits[c1-1] is not defined
	* src/ixbylt.cpp:853,1346 the branch for 64-bit offsets mistakenly used
	32-bit offsets
	* src/ixbylt.cpp: in functions estimateCost and evaluate, move the
	case for handling unrecorded bin up the list of if blocks

2009-11-01 John Wu <John.Wu at ACM.org>
	* src/bundle.cpp:1706 same problem as identified by Luca

2009-11-01 Luca Deri <deri at ntop.org>
	* src/bundle.cpp:1416 change cols[i] to cols[j].  The incorrect
	index to cols causes core dump

2009-10-30 Jan Steemann <Jan.Steemann at globalpark.com>
	* examples/ibis.cpp, examples/thula.cpp, src/bundle.cpp,
	src/colValues.cpp src/ibis.h, src/mensa.cpp, src/query.cpp,
	src/query.h, src/selectClause.h, src/selectClause.cpp,
	src/SelectLexer.ll, src/selectParser.yy, src/table.h, src/util.h:
	add aggregate functions stdpop, stdsamp, varpop, varsamp, and
	distinct to the select clause

2009-10-30 John Wu <John.Wu at ACM.org>
	* src/ixpale.cpp: in function write32 and write64, update the
	computation of offset32[0] and offset64[0]
	* src/icegale.cpp: in functions write32 and write64, the offsets
	array need to have nbits+1 elements not nobs+1 elements

2009-10-29 John Wu <John.Wu at ACM.org>
	* src/ifade.cpp: in function write, update the value of header[6].
	in functions write32 and write64, update the computation of
	position of the 1st bitmap
	* src/irange.cpp:472 the element size should be 4 instead of 8
	* src/icegale.cpp:416, src/icfuge.cpp:253 header[6] was entered
	wrongly
	* src/ixfuge.cpp, src/ixbylt.cpp, src/ixfuzz.cpp, src/ixzona.cpp:
	change the function write to detect whether a coarse level index
	is actually present before calling the function to write the
	coarse level indexes
	* src/ixbylt.cpp:215 should call reserve not resize
	* src/horometer.h: add information about MinGW.  It has
	sys/timer.h, but not sys/resource.h

2009-10-28 John Wu <John.Wu at ACM.org>
	* src/i*.cpp: many write functions neglected to initialize the
	new offset32 and offset64 to the proper size before using them
	* src/ixbylt.cpp: writeCoarse32 and writeCoarse64 used offset32
	and offset64 instead of coffset32 and coffset64
	* src/index.cpp: update all versions of activate function to use
	LOGGER for messages
	* src/idirekte.cpp, src/ikeywords.cpp: invoked initOffsets with
	wrong start address
	* configure.ac: add option --with-pthread=dir to use non-standard
	pthread library (first used on MinGW)

2009-10-27 John Wu <John.Wu at ACM.org>
	* src/irelic.h, src/ixzona.cpp: modify ibis::zona to use coffset64
	and coffeset32 to replace coffsets, use offset64 and offset32 to
	replace offsets
	* src/irelic.h, src/ixfuzz.cpp: modify ibis::fuzz to use coffset64
	and coffeset32 to replace coffsets, use offset64 and offset32 to
	replace offsets

2009-10-26 John Wu <John.Wu at ACM.org>
	* src/irelic.h, src/ixbylt.cpp: modify ibis::bylt to use coffset64
	and coffeset32 to replace coffsets, use offset64 and offset32 to
	replace offsets

2009-10-23 John Wu <John.Wu at ACM.org>
	* src/irelic.h, src/ifade.cpp: modify ibis::fade to use offset64
	* src/isbiad.cpp, src/isapid.cpp: modify ibis::sbiad and
	ibis::sapid

2009-10-22 John Wu <John.Wu at ACM.org>
	* src/ikeywords.cpp: modify ibis::keywords to use offset64 and
	offset32
	* src/idirekte.h, src/idirekte.cpp: modify ibis::direkte to use
	offset64 and offset32
	* src/irelic.cpp: modify ibis::relic to use offset64
	* src/islice.cpp: modify ibis::slice to use offset64

2009-10-21 John Wu <John.Wu at ACM.org>
	* src/ibin.h, src/ixfuge.cpp: modify ibis::fuge

2009-10-20 John Wu <John.Wu at ACM.org>
	* src/ibin.h, src/ixpack.cpp: modify ibis::pack class
	* src/ibin.h, src/ixzone.cpp: modify ibis::zone class
	* src/idbak.cpp, src/idbak2.cpp: change function write to call
	ibis::bin::write instead -- no longer will produce indexes of type
	ibis::BAK nor ibis::BAK2
	* src/icegale.cpp, src/icmoins.cpp, src/icentre.cpp: modify
	ibis::egale, ibis::moins and ibis::entre
	* src/ibin.h, src/ixfuge.cpp: add coffset64 to ibis::fuge, rename
	coffsets to coffset32

2009-10-19 John Wu <John.Wu at ACM.org>
	* src/ibin.h, src/ixpale.cpp: modify ibis::pale class

2009-10-18 John Wu <John.Wu at ACM.org>
	* src/ibin.h, src/ixambit.cpp: modify ibis::ambit class

2009-10-16 John Wu <John.Wu at ACM.org>
	* src/ibin.h, src/imesa.cpp: modify ibis::mesa class

2009-10-15 John Wu <John.Wu at ACM.org>
	* src/ibin.h, src/irange.cpp: modify ibis::range class

2009-10-14 John Wu <John.Wu at ACM.org>
	* doc/contact.html: add new contact information

2009-10-12 John Wu <John.Wu at ACM.org>
	* src/fileManager.h, src/util.h: move the macro HAVE_FILE_MAP and
	FASTBIT_MIN_MAP_SIZE to util.h to be accessible to more files
	* src/ibin.h, src/ibin.cpp: modified ibis::bin class to use
	offset64 and offset32 at the same time

2009-10-09 John Wu <John.Wu at ACM.org>
	* src/fileManager.h, src/fileManager.cpp: change size information
	for ibis::storage to be stored in a size_t (instead of a uint32_t)
	* src/array_t.h, src/array_t.cpp: change size related variables
	from uint32_t to size_t, but keep sorting functions using uint32_t
	for indices (add statements to check that uint32_t is sufficient
	for the tasks)
	* src/index.h, src/index.cpp: add member variable offset64
	* src/colValues.h, src/colValues.cpp: change all lengths and sizes
	from uint32_t to size_t

2009-10-08 John Wu <John.Wu at ACM.org>
	* src: use the refactoring capability of eclipse to rename
	index::offsets to index::ofset32, in preparation of adding
	index::offset64

2009-10-07 John Wu <John.Wu at ACM.org>
	* src/ibis.h, src/index.h: add warning about index size limitation
	of 2^32 bytes

2009-10-04 John Wu <John.Wu at ACM.org>
	* doc/header.html: add header file to insert description and
	keywords meta tags to all html pages
	* doc/footer.html: add google custom search to the end of all html
	documents generated by doxygen

2009-09-12 John Wu <John.Wu at ACM.org>
	* configure.ac: change the square bracket for defaults in
	AS_HELP_STRING to parentheses (avoids problem with autoconf);
	regenerate configure with "aclocal-1.11 && automake-1.11 &&
	autoconf-2.64"

2009-09-10 John Wu <John.Wu at ACM.org>
	* src/util.h, src/column.cpp, src/tafel.cpp: add new macro
	OPEN_WRITEADD and use it in function append with fix-sized
	columns, change the macro OPEN_WRITEONLY to OPEN_WRITENEW to
	indicate that it truncates existing file and is intended to write
	new files.  The append operation was using OPEN_APPENDONLY which
	was always adding new bytes, but the append operation may need to
	overwrite certain existing bytes.  The earlier attempt to change
	them to OPEN_WRITEONLY has caused the existing data to be wiped
	out (an error discovered with regression testing).
	* src/tafel.cpp: in function writeRaw, add statments to write the
	initial 0 to the .sp file, add statement to ensure the correct
	totmask before adding newmask, add function preferredSize to
	compute the number of rows to store in memory based on available
	memory
	* src/category.cpp: add error checking to ibis::text::readString

2009-09-09 John Wu <John.Wu at ACM.org>
	* src/table.h: change prototype of readCSV and readSQLDump to make
	it possible for these functions to write out content as they read
	* src/tafel.h, src/tafel.cpp: update implementation of readCSV and
	readSQLDump to write content when running out of memory
	* src/mensa.cpp: update cursor::fillBuffers and cursor::fillBuffer
	to reflect the fact that the bufferElements are no longer storing
	fileManager::storage objects but array_t objects instead

2009-09-08 John Wu <John.Wu at ACM.org>
	* src/table.h: add blobsnames and blobsvalues to ibis::table::row,
	note this version of ibis::table::row use std::string to hold
	blobs, which may have problems with null characters on some
	systems
	* src/mensa.h, src/mensa.cpp: add starts to
	ibis::mensa::cursor::bufferElement, use void* for both starts and
	cval (use the same type convention for cval as that of
	ibis::tafel::column)
	* src/category.h, src/category.cpp: add function getBlob and two
	versions of readBlob

2009-09-05 John Wu <John.Wu at ACM.org>
	* src/tafel.cpp, src/category.cpp, src/column.cpp: change opening
	mode from OPEN_APPENDONLY to OPEN_READWRITE for all .sp files,
	change some OPEN_APPENDONLY to OPEN_WRITEONLY because those
	functions may move the file pointers from the end of the file to
	somewhere in the middle of the file in case of unexpected file
	sizes

2009-09-04 John Wu <John.Wu at ACM.org>
	* src/tafel.cpp: add minimal processing of column type set in
	function createSQLTable, add handling of BLOB to most functions,
	add handling of default for missing values

2009-09-03 John Wu <John.Wu at ACM.org>
	* examples/ardea.cpp: add code to invoke readSQLDump

2009-09-02 John Wu <John.Wu at ACM.org>
	* src/fileManager.h: add fileManager::buffer<T>::swap, hide copy
	constructor and assignment operator
	* src/table.h: remove ibis::tablex::SQLCreateTable, add
	ibis::tablex::readSQLDump
	* src/tafel.h, src/tafel.cpp: implement readSQLDump with functions
	SQLCreateTable and readSQLStatement

2009-09-01 John Wu <John.Wu at ACM.org>
	* src/*.h, src/*.cpp: change all size_t back to uint32_t because
	size_t some how is not one of intxx_t on cygwin -- my main
	development environment.  In addition, there were ealier user
	request to keep certain return values in uint32_t instead of
	size_t.  The attempt to make array_t store more than 2^32 elements
	is abandoned and should not be attempted again with this code
	base!
	* src/array_t.h, src/array_t.cpp: update push_back and three
	versions of insert to use the copy-and-swap idiom if new space is
	needed, add check for array size over 2^31

2009-08-31 John Wu <John.Wu at ACM.org>
	* src/colValues.h, src/colValues.cpp, utilidor.h, utilidor.cpp:
	change array indices from uint32_t to size_t following the changes
	to array_t

2009-08-30 John Wu <John.Wu at ACM.org>
	* src/category.cpp: add functions extractAll and extractSome to
	ibis::blob

2009-08-28 John Wu <John.Wu at ACM.org>
	* src/array_t.h, src/array_t.cpp: change type of sizes from
	uint32_t to size_t, difference_type to ptrdiff_t (use c++ header
	cstddef).  The intention is to make array size go beyond 2^32
	elements.

2009-08-27 John Wu <John.Wu at ACM.org>
	* src/table.h: add column type BLOB
	* src/category.h, src/category.cpp: add column type ibis::blob
	* src/util.h: add ibis::util::guard, ibis::util::makeGuard and
	supporting functions to implement objects for clean up after
	resources such as file pointers.  This is to simply the handling
	of file pointers used in functions such as ibis::blob::append.
	* src/colValues.cpp: rearrange the loops in all versions of
	ibis::colValues::segement to initialize the segmentation process
	within each existing segement, to address an issue reported by
	Alexandre Maurel <alexandre dot maurel at gmail dot com>, who also
	provided a fix ibis::colFloats::segement

2009-08-27 Alexandre Maurel <alexandre dot maurel at gmail dot com>
	* src/colValues.cpp: fix ibis::colFloats::segment to correct
	handle existing segments with the same values

2009-08-26 John Wu <John.Wu at ACM.org>
	* src/table.h, src/mensa.h, src/mensa.cpp: rename
	ibis::mensa::computeHits to ibis::table::computeHits, rename
	ibis::mensa::doSelect to ibis::table::select.  Move the list of
	data partitions to the from of the argument lists in these two
	functions.  This change addresses a need brought up by Andrew
	Olson.
	* src/table.h, src/mensa.h: add a version of table::select and
	table::computeHits that accept qExpr directly
	* examples/thula.cpp: add a minimal test for the class functions
	ibis::table::select
	* src/table.h: add versions of the member function
	ibis::table::estiamte and ibis::table::select to take query
	expression in the form of ibis::qExpr*.

2009-08-25 John Wu <John.Wu at ACM.org>
	* src/qExpr.h: change values in ibis::qDiscreteRange and
	ibis::qAnyAny from type std::vector<double> to
	ibis::array_t<double> to better track the memory usage, change
	related functions to use the new data type
	* src/table.h: add function getPartitions to return a list of
	ibis::part
	* src/bitvector.h: modify all 8 versions of bitwise logical
	operators to make sure the two operands represent the same number
	of bits (to address problems reported by David Reynolds < David
	dot Reynolds at 3ds dot com>)
	* src/bitvector.h: rename setSize to sloppySize and clarify its
	functionality in doxygen documents

2009-08-24 John Wu <John.Wu at ACM.org>
	* src/table.h: clarify that ibis::tablex::write also updates
	metadata

2009-08-13 John Wu <John.Wu at ACM.org>
	* src/util.h:1173 change abs to fabs, apparently fabs is the only
	name guaranteed to work on double values, the function abs may be
	resolved to work with integers on some versions of libm

2009-08-12 John Wu <John.Wu at ACM.org>
	* src/ibin.cpp: print the result from function ibis::bin::locate
	* src/util.h: update to the implementation of util::coarsen to
	cope with round-off errors that may cause the same value to come
	out differently, for example, 1e-14 and 10 x 1e-15 are observed to
	come out slightly differently.

2009-08-06 John Wu <John.Wu at ACM.org>
	* src/idbak2.cpp:998 change && to || (this error can cause crashes
	on some machines)

2009-08-04 John Wu <John.Wu at ACM.org>
	* src/idbak2.cpp: add bit vector to capture the locations of
	values exactly equal to the low-precision target value.  This is
	necessary to make the index resolve all boundary bonditions
	involve low-precision values without needing candidate checks.
	The previous implementation can resolve conditions such as "A >=
	a" and "a <= A < b", but not "A = a", "A <= a", or "a <= A <= b".
	* win/Win.mak, win/MinGW.mak: update the dependencies in the make
	files
	* src/util.cpp: change the constructor of ibis::util::timer to
	only print a message if gVerbose level is no less than lvl+2
	* src/selectClause.h, src/selectClause.cpp: add function to verify
	some terms (instead of all terms)
	* src/mensa.cpp:587 verify only those terms that are used for
	retrieving values from the original data (which make it possible
	to use aliases defined earlier in the select clauses)
	* src/selectParser.yy: add special aggregator function
	"count(*)".  Note: since the keyword "unique" is not supported,
	all count() function calls are treated as "count(*)"!

2009-08-02 John Wu <John.Wu at ACM.org>
	* src/column.cpp: move the statement that increment idxcnt and
	decrement idxcnt to be under the protection of a read lock on the
	column to avoid possible confusion about the idxcnt in function
	unloadIndex.  This and the change from yesterday together address
	the issue of deadlock when the cleaner is invoked while activating
	new bitmap of the bitmap index.  Because the activate function
	holds a mutex lock which prevent the acquisition of mutex lock in
	functioin unload.

2009-08-01 John Wu <John.Wu at ACM.org>
	* src/column.cpp:4786 remove the mutex lock from column::unloadIndex

2009-07-31 John Wu <John.Wu at ACM.org>
	* src/parth*.cpp: in function adaptivexDBins, decrement the scaling
	factor after inversion to ensure it is small enough to never cause
	the indices computed to be out of bounds.  The out of bounds
	indices appared to be the root cause of the problem of the crashes
	reported by Andrew Olson.
	* src/parth*.cpp: replace all instances of ibis::query with
	ibis::countQuery (which is simpler than ibis::query class)

2009-07-30 John Wu <John.Wu at ACM.org>
	* src/qExpr.cpp: change the print statements in qExpr::simplify
	and qExpr::reorder to use the same verboseness level
	* src/query.cpp, src/countQuery.cpp: neglected to set the proper
	return values when comparing strings
	* src/parth*.cpp: explicitly pass the argument false to function
	query::evaluate

2009-07-29 John Wu <John.Wu at ACM.org>
	* src/parth*.cpp: add ibis::CATEGORY to cases for ibis::UINT.
	This allows categorical values to be used in histogram functions.
	Previously, only some of the cases for UINT has CATEGORY as well.
	The inconsistency was revealed after Andrew Olson raised the
	question about possibility of using categorical values in
	histograms.
	* win/MinGW.mak: change column type of t1/c from short to ushort
	to match the changes in tests/Makefile.am

2009-07-29 John Wu <John.Wu at ACM.org>
	* src/irelic.cpp: change estimateCost to attempt to use bits
	directly if offsets is not available
	* src/countQuery.cpp: update doScan and doEvaluate to correct
	error involving query conditions that return no hit (the same
	problems in query.cpp were fixed on 7/16), make doScan and
	doEvaluate consistently return the number of hits

2009-07-28 John Wu <John.Wu at ACM.org>
	* src/util.cpp: util::isortRIDs to util::sortRIDsi, fix leftover
	problems with function names in utilidor.cpp
	* src/index.cpp:7140 remove the if-block that preventing basis
	size 2 being used, add case to handle base size 2 for all
	components

2009-07-16 John Wu <John.Wu at ACM.org>
	* src/query.cpp: doEvaluate and doScan handled the LOGICAL_AND
	operator incorrectly, when no hit is found, it neglected to set
	the result bitvector, which causes other expressions to produce
	incorrect answers (apparently, this is the root cuase of the
	problem reported by Jochen Schlosser)
	* tests/scripts/query-count.list: add empty conditions to exercise
	the changes in query.cpp
	* src/qExpr.h, src/qExpr.cpp: change print function to only print
	one node, rename old print function (that recursively prints the
	whole express tree) to printFull, removed qExpr::printRange
	* src/category.cpp: call prepareMembers in category::selectUInts
	(without it, the program ibis occasionally crashes)
	* src/array_t.cpp: check for k being 0 in topk and bottomk,
	initialize the array ind before calling qsort in topk and bottomk
	(the zero value of k causes crashes in bottomk)
	* src/bundles.cpp: in versions of truncate, make sure keep > 0

2009-07-14 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp: in doSelect limit the number of characters from
	cond is placed in de (to reduce the length of the new table)
	* src/column.cpp: two versions of function selectValuesT
	negelected to close fdes
	* src/bord.h: ibis::bord::cursor::dumpIJ needs to cast char and
	unsigned char to integers before printing to ensure they are
	printed as integers

2009-07-10 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp, src/bord.cpp: change group by operation involving
	categorical values to use the integer representation instead of
	the strings (should be faster than using strings)
	* tests/Makefile.am: add test case to check-text to exercise group
	by on categorical values
	* src/bundle.cpp: add statements to check for nil pointers

2009-07-09 John Wu <John.Wu at ACM.org>
	* src/category.h, src/category.cpp: clean up the documentation
	about members of ibis::dictionary and consolidate the null strings
	into a single class variable ibis::dictionary::nullstring.
	* src/colValues.h: add colStrings
	* src/colValues.cpp: change all bubble sort code to use selection
	sort to minimize the data movement
	* src/bord.cpp: change bord::groupby to make use of the new
	colStrings for TEXT and CATEGORY.  This makes it possible to
	perform group by with string valued columns through ibis::table
	interface (Andrew Olson needed this feature)

2009-07-08 John Wu <John.Wu at ACM.org>
	* INSTALL: clean up the file
	* src/category.cpp: delay reading of dictionary and generating .sp
	file as much as possible, define macro FASTBIT_EAGER_INIT_TEXT if
	eager initialization is desired

2009-07-06 John Wu <John.Wu at ACM.org>
	* src/util.h: modify round_down and round_up to check for input
	value out of the range of output value (with the use of
	std::numeric_limits template) (to address an issue raised by
	Jochen Schlosser)
	* tests/Makefile.am: change the type of c from short to unsigned
	short in t0 and t1, add query boundaries involving negative
	numbers to catch the error reported by Jochen Schlosser
	* src/whereClause.h, src/whereClause.cpp: add function
	standardizeRange to deal with negative boundaries in range
	expressions involving unsigned integer columns
	* src/idirekte.cpp: update function locate to work better with
	ranges including negative boundaries
	* src/part.cpp: add code in template part::doScan and
	part::doCount to modify the bounds and operators in case the input
	boundaries are out of valid range of the data types, add
	specificalization for float and double for template part::doScan
	and part::doCount

2009-07-01 John Wu <John.Wu at ACM.org>
	* src/mensa.h: add ibis::liga as a simple container of externally
	managed data partitions, it provides the ibis::table API but does
	NOT manage the resources associated with the data partitions.

2009-06-30 John Wu <John.Wu at ACM.org>
	* examples/thula.cpp: expand the doxygen documentatation about the
	program
	* src/parti.cpp: modify part::purgeInactive to use the new
	function saveSelected
	* tests/Makefile.am: add test 4 to check-marksdb to exercise
	group-by functions, add test 4 and 5 to check-text to excercise
	the function to deactivate rows
	* examples/ibis.cpp: update doxygen documentation

2009-06-29 John Wu <John.Wu at ACM.org>
	* src/const.h: change macro DIRSEP to FASTBIT_DIRSEP
	* src/category.h, src/category.cpp: add functions
	text::saveSelected and text::writeStrings to wrie selected string
	values

2009-06-26 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp: change the constructor fileManager::roFile
	so that it is only usable by friends, change macro
	FILEMANAGER_UNLOAD_TIME to FASTBIT_UNLOAD_LIMIT, MIN_DOMAP_SIZE to
	FASTBIT_MIN_MAP_SIZE
	* src/i*.cpp: change the macro ALWAY_READ_BITVECTOR0 to
	FASTBIT_READ_BITVECTOR0 (the word always was misspelled anyway)
	* src/mensa.cpp: in doSelect collect data only from unique columns
	* src/bord.cpp: in the constructor of ibis::bord::part delete the
	buf of duplicate names (buffer associated with duplicate names are
	lost, a problem report by Shane Adams)

2009-06-25 John Wu <John.Wu at ACM.org>
	* src/array_t.cpp: change the constructor of ibis::array_t that
	takes storage& to take storage* (to match the other one that
	already accepts storage*, having one of them taking storage& and
	the other taking sotrage* is confusing to be sure)

2009-06-23 John Wu <John.Wu at ACM.org>
	* src/bitvector.cpp: in function subset, try to avoid access nil
	pointer (to address a problem reported by Jochen Schlosser)

2009-06-19 John Wu <John.Wu at ACM.org>
	* src/category.cpp:1185 add test for currentDataDir() to prevent
	strcmp from using nil pointer (a problem reported by Jochen
	Schlosser)
	* src/part.cpp:346 remove test on nEvent to generate m_name
	regardless of the value of nEvents
	* src/part.cpp: add check for nEvents being zero in functions that
	deactivates rows

2009-06-18 John Wu <John.Wu at ACM.org>
	* src/part.cpp: writeMetaData check the validity of activeDir
	before write it as alternative directory
	* examples/thula.cpp:607 allow the selection to be printed without
	-v option

2009-06-17 John Wu <John.Wu at ACM.org>
	* doc/dataLoading.html: add note about support for unsigned
	integers
	* src/array_t.h: update documentation about the class to reflect
	the change in name space (notice by Matthias Vallentin)
	* src/part.h: change nEvent from type size_t to uint32_t
	* src/column.cpp: in function append (that takes directory name as
	input), remove the dependencies on thePart->currentDataDir (a
	problem reported by Jochen Schlosser)

2009-06-16 John Wu <John.Wu at ACM.org>
	* src/category.cpp:1216 add check for state of the partition
	before truncating the data file and .sp file in
	ibis::text::startPositions (a problem noticed by Jochen Schlosser)
	* src/array_t.h: put array_t template into namespace ibis (a
	change requested by Matthias Vallentin)

2009-06-12 John Wu <John.Wu at ACM.org>
	* src/table.h: add optional argument to ibis::tablex::addColumn
	and ibis::tablex::write to specify indexing options, add function
	ibis::tablex::writeMetaData
	* src/part.cpp: remove the special case for creating new directory
	from the constructor that takes two directory names as arguments
	* src/ibis.h: update the acknowledgement section in the doxygen
	documentation
	* src/column.h, src/column.cpp: move the decision of whether to
	load index under a mutex lock in the constructor of indexLock and
	in function loadIndex.  This should prevent an thread from using a
	partially constructed index (being created by another thread)

2009-06-11 John Wu <John.Wu at ACM.org>
	* src/index.cpp:2549 change the test to use sampled histogram in
	more cases (in a case with 20 million unique values, the histogram
	data structure caused segmentation violations)

2009-06-10 John Wu <John.Wu at ACM.org>
	* src/part.cpp: print the error code if the query evaluation fails
	in ibis_part_threadedTestFun2
	* src/category.cpp: add timer to text::startPositions
	* src/column.cpp: add log statements to the constructors to pair
	up with the log statement in the destructor

2009-06-09 John Wu <John.Wu at ACM.org>
	* src/column.cpp: in column::getNullMask comparisons involving
	mask.size() need to taking into account of the state of data
	partition.  This is the root cause of the problem observed by
	Jochen Schlosser.  A better solution might be to create indexes
	without the use of null masks.
	* src/util.cpp: clean up the log message from util::removeDir,
	if the argument leaveDir is set, do not remove the subdirectories
	either (when used from ibis::part and ibis::query, only the files
	in the current current directories need to be removed, the
	subdirectories should be saved)
	* src/ixbylt.cpp: bylt::evaluate used c0 incorrectly when the
	query range is open to the right side
	* src/*.cpp: remove the integer constants passed to the
	constructor of ibis::util::logger class to make the printout more
	uniform
	* src/util.h, src/util.cpp: change util::uniqueNumber to
	util::serialNumber and use sharedInt32 instead of explicitly using
	a mutex lock

2009-06-08 John Wu <John.Wu at ACM.org>
	* src/column.cpp: warn about file size over 2GB in
	ibis::column::append, simplify the logic regarding the existing
	mask file
	* src/column.cpp update column::mask_ in column::append to address
	a problem reported by Jochen Schlosser
	* src/part.cpp: in function init, check parameter useBackupDir

2009-06-04 John Wu <John.Wu at ACM.org>
	* src/qExpr.cpp: constructors of qDiscreteRange negelcted to set
	the type of the expression
	* src/qExpr.h: change qRange to not set query expression type, add
	code to set query expression type in all constructors of
	ibis::qContinuousRange

2009-06-03 John Wu <John.Wu at ACM.org>
	* src/table.h: change return value of ibis::table::addPartition to
	return the number of partitions found on success (instead of
	returning 0)

2009-06-02 John Wu <John.Wu at ACM.org>
	* src/table.h: clarify the logic of tablex::reserveSpace
	* src/tafel.h, src/tafel.cpp: add function doReserve and
	reimplement reserveSpace by calling doReserve, make reserveSpace
	more robust, add documentation about the function

2009-06-01 John Wu <John.Wu at ACM.org>
	* tests/script/fastbit-config.in: add new file to report the
	compilation flags

2009-05-29 John Wu <John.Wu at ACM.org>
	* src/part.cpp, src/parti.cpp: examine the logic of assigning the
	initial state in the constructor of ibis::part to address a
	question raised by Jochen Schlosser
	* src/utilidor.cpp: add explicit template instantiations for
	sortKeys with array_t<ibis::rid_t> as payload (make it easier to
	perform joins outside of FastBit code)

2009-05-28 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp: print the names of files as they being
	removed by fileManager::flushFile and fileManager::flushDir when
	the verbose level is larger than 7

2009-05-27 John Wu <John.Wu at ACM.org>
	* src/column.cpp: in column::appendValues and
	column::appendStrings, add UnixClose to close the file and add
	statements to write the mask fo the column

2009-05-26 John Wu <John.Wu at ACM.org>
	* src/tafel.cpp: in both versions of tafel::appendRow, only
	increment mrows if all fields have been added, change normalize to
	compute the value of mrows, in appendRow that takes
	ibis::table::row, call normalize only if the number of columns is
	the same as the number of column of the current data partition
	(otherwise only work with the few columns indicated in the
	incoming data structure)
	* src/table.h: add function table::row::nColumns
	* src/tafel.cpp:717 add a line to capture the new mask found
	through name matching

2009-05-22 John Wu <John.Wu at ACM.org>
	* src/util.cpp: extend util::charTable to contain 65 characters
	instead of 64 just in case someone is using the util::charIndex as
	indices into util::charTable
	* src/tafel.h: change the definition of tafel::column from
	protected to public to make it possible to directly access the
	in-memory columns
	* src/column.h, src/column.cpp: add a new variant of function
	append with two functions appendValues and appendString to direct
	add values to the active data file

2009-05-21 John Wu <John.Wu at ACM.org>
	* src/array_t.cpp: replace all calls to util::logMessage with
	calls to LOGGER

2009-05-15 John Wu <John.Wu at ACM.org>
	* src/table.h, src/tafel.cpp: add ibis::tablex::readNamesAndTypes
	and ibis::tablex::parseNamesAndTypes, implement them in
	src/tafel.cpp, addressing an issue of column names not accepting
	underscore (a problem first reported by Nicolae Mihalache <mache
	at abcpages dot com>)
	* examples/ardea.cpp: add option -M to accept a metadata file name
	for metadata that includes a large number of columns (to
	accomodate the need to read metadata of wide tables)

2009-05-14 John Wu <John.Wu at ACM.org>
	* src/table.h, src/tafel.h: change tablex::nRows to tablex::mRows,
	tablex::nColumns to tablex::mColumns to avoid possible name
	conflict when table and tablex are used together
	* tests/readcsv.cpp:298 add check for buf == 0 after call to new
	* src/fileManager.h: add function resize to
	ibis::fileManager::buffer, add call to initialize file manager in
	function fileManager::byteFree
	* src/tafel.cpp: in tafel::readCSV increase the size of linebuf to
	accomodate data files with wide rows (a problem first reported by
	Nicolae Mihalache <mache at abcpages dot com>)

2009-05-13 John Wu <John.Wu at ACM.org>
	* src/tafel.cpp: add more print statements to tafel::write
	* configure.ac: rename src/config.h.in to
	src/fastbit-config.h.in (effectively renamed config.h to
	fastbit-config.h, something suggested by Hank Childs, but was
	neglected earlier)

2009-05-12 John Wu <John.Wu at ACM.org>
	* tests/Makefile.am: capture the return code of ibis and print it
	out in cases of error (in large-append-test)
	* src/irange.cpp:3206 add case for empty upper bound
	* all: marked current files as ibis1.0.9

2009-05-11 John Wu <John.Wu at ACM.org>
	* src/ixpack.cpp, src/ixpale.cpp, src/ixambit.cpp, src/zone.cpp:
	neglected to handle the case where cand0 >= cand1 (no hit); when
	both left operator and right operator are undefined, change return
	value of the function estimate to empty bitmpas instead of
	undefined values
	* src/ixpack.cpp: in estimate when the left operator is <= and
	right operator is <=, the right boundary is not handled correctly
	* src/ibin.cpp: tests bin1 > nobs should be bin1 >= nobs
	* src/part.h, src/part.cpp, src/parti.cpp: rename readTDC to
	readMetaData, writeTDC to writeMetaData, and updateTDC to
	updateMetaData

2009-05-09 John Wu <John.Wu at ACM.org>
	* src/ixpack.cpp, src/ixpale.cpp, src/ixambit.cpp, src/zone.cpp:
	fix more bugs in function estimate (involving operator cobinations
	that can not be accessed through the query parser)

2009-05-08 John Wu <John.Wu at ACM.org>
	* src/part.cpp: fixing cases involving x < a >= x or x <= a > x in
	doScan and doCount; add code to unload indexes and retry the
	evaluateRange call
	* src/countQuery.cpp: minor clean up of log messages
	* src/range.cpp: a couple of bin1 should have been bin0 in
	range::locate, a couple hit1 should be hit0
	* src/icentre.cpp: in entre::estimate cand1+1 >= bounds.size()
	should have been cand1 >= bounds.size() (the error causes
	incorrect answers when the query boundary is in the next to the
	last bin)
	* examples/ibis.cpp: add code in doQuery to exercise the
	countQuery class
	* src/ixpack.cpp: fixing bugs in pack::estimate

2009-05-07 John Wu <John.Wu at ACM.org>
	* configure.ac: uncomment AC_FUNC_VPRINTF, otherwise the log
	functions logMessage, logWarning and logError are crippled
	* src/part.cpp:5996 change the constant expression so that rid1
	will never be resized to an empty array
	* examples.cpp: minor adjustment the function clean_up and print
	out
	* src/ibin.cpp, src/irange.cpp, src/imesa.cpp: in function
	construct set the values of offsets
	* src/column.cpp: in searchSortedICC and searchSortedOOCC, call
	round_up for some of the comparison operators

2009-05-06 John Wu <John.Wu at ACM.org>
	* src/i*.cpp: remove (or comment out) calls to function write from
	all versions of concrete implementations of ibis::index::append
	* src/part.cpp: in verifyBackupDir, set backupDir to nil (0) if
	makeDir fails
	* src/ibin.cpp: handle the case where the existing index is not of
	the currect size in ibis::bin::append, change all implementations
	of ibis::index::append to check for the value of nrows against
	nold
	* configure.ac, src/config.h.in: use extra AC_OUTPUT_COMMANDS to
	rename PACKAGE_VERSION and friends to FASTBIT_VERSION etc.  This
	is to avoid possible conflict with other packages with the default
	names (a problem reported by Prabhat)
	* src/ibis.h: move call to util::setLogFileName ahead of
	gParameters().read
	* src/const.h: add a backup definition for FASTBIT_STRING
	(otherwise cannot use FASTBIT_STRING without checking)
	* src/util.cpp: change the initial message print to a log file to
	include FastBit version and bug report information
	* src/ibin.cpp: add new function construct to consolidate the
	construction of a binned index
	* src/index.cpp: in index::create add more print statement in case
	of abnormal indexes

2009-05-05 John Wu <John.Wu at ACM.org>
	* src/part.h, src/part.cpp: rename buildIndex, loadIndex, and
	unloadIndex to buildIndexes, loadIndexes, and unloadIndexes
	* INSTALL, win/README: add notes about the new macro
	WITHOUT_FASTBIT_CONFIG_H
	* src/const.h, src/capi.h: don't include config.h under
	VisualStudio on Win32
	* src/part.cpp: in part::init, try to preserve the backupDir read
	from metadata file; in function doScan remove calls to
	foldBoundaries and foldUnsignedBoundaries before calling the
	template doScan; the case for rng.rightOperator() == OP_EQ  did
	not check that the rounded boundary actually equal to the original
	query boundary
	* configure.ac:325 need to define WITHOUT_FASTBIT_CONFIG_H when
	trying to compile wherelexer.cc
	* src/idirekte.cpp: implement direkte::append
	* src/ibin.cpp ...: in all concrete versions of
	ibis::index::write, add calls to fileManager::flushFile after
	failure to open the index file

2009-05-04 John Wu <John.Wu at ACM.org>
	* src/ibin.cpp, src/irelic.cpp, src/idirekte.cpp: in estimateCost
	for qContinuousRange, take into account of the complement option
	* src/util.h:1072 in the round_up that outputs float, only invoke
	nextafter if the initial rounding produce a value that is less
	than the input value
	* src/idirekte.cpp: update function locate for all combinations
	that can be generated
	* src/qExpr.cpp: simplify qContinuousRange::print to more
	faithfully print the actually expression
	* src/qExpr.h: make leftBound and rightBound of qContinuousRange
	simply return lower and upper
	* src/capi.h, src/const.h, src/util.h: remove the macro
	HAVE_CONFIG_H, add WITHOUT_FASTBIT_CONFIG_H.  On systems that can
	not run the configure script, the user must define
	WITHOUT_FASTBIT_CONFIG_H (to address a problem reported by Hank
	Childs)

2009-05-03 John Wu <John.Wu at ACM.org>
	* src/part.cpp: correct template doScan and doCount (that makes
	use of std::binder1st and std::biner2nd) to make use of the new
	function round_up, simplify their comparisons by taking into
	account of conditions that might contain each other; change the
	answer to ill-formed range expressions to be 0; change
	part::selfTest to pick a random column for testRangeOperators
	instead of using the sorted one

2009-05-02 John Wu <John.Wu at ACM.org>
	* src/util.h: add templates ibis::util::round_down and
	ibis::util::round_up (with specializations)
	* configure.ac: add check for function nextafter, to be used in
	incrDouble, round_up and friends in util.h

2009-05-01 John Wu <John.Wu at ACM.org>
	* src/column.h, src/column.cpp: rename getRawData to
	getValuesArray

2009-04-30 John Wu <John.Wu at ACM.org>
	* src/parth2d.cpp, src/parth3d?.cpp: when getRawData fails try
	selectTypes again.  Because getRawData is not a virtual function,
	client code may not be able to access them correctly.  This cause
	problems in applications like HDF5_FastQuery (reported by Allen
	Sanderson)
	* src/part.h: make templated version of doScan static member
	functions to indicate they are not usable for inherening
	* src/column.h, src/column.cpp: rename existing templated
	selectValues to selectValuesT, add virtual function selectValues
	that uses void* to pass the values; change template getRawData to
	a virtual function with void* for the values.  These virtual
	functions are to be overwritten in derived classes to provide
	different ways of accessing the base data.

2009-04-29 John Wu <John.Wu at ACM.org>
	* src/ibin.cpp:5750 further refine the cost estimation to taking
	into account of how many edge bins are needed for candidate check
	* src/ibin.cpp, src/irelic.cpp: clean up in-line documentation

2009-04-28 John Wu <John.Wu at ACM.org>
	* src/ibin.cpp:5745 ibis::bin::estimateCost mistakenly compares
	cand1 against bits.size, more natural to use offsets.size();
	change the version of locate called to get a more accurate
	information about the query processing cost (a problem that was
	originally noticed by Prabhat and Allen Sanderson)

2009-04-24 John Wu <John.Wu at ACM.org>
	* src/tafel.cpp:1624 delete the line that changes ierr to 0 and -1
	* src/tafel.cpp:1055 in function write, add code to check for
	index specification in gParameters
	* tests/Makefile.am: make test failure message more consistent,
	they now all starts with 'Did NOT pass' such-and-such test
	* examples/tcapi.c: add explicit casting to match the types
	specified in the print format (otherwise prints wront value for
	64-bit integers on Mac under gcc 4.0.0)

2009-04-23 John Wu <John.Wu at ACM.org>
	* src/parti.cpp: prevent current versions of part::reorder from
	working on partitions with string values, they simply will not
	work.  Add code to deal with external RIDs if they are present.
	* INSTALL: add note (13) regarding the user of prefix and Java
	native interface
	* src/bundle.h, src/bundle.cpp: clean up in-line documentation,
	add getLong and getULong to ibis::query::result
	* src/whereClause.h, src/selectClause.h: clean up in-line
	documentation -- whereClause was not showing up in the doxygen
	documents
	* src/part.h, src/part.cpp: add selectBytes, selectUBytes,
	selectShort, selectUShort, and selectULong
	* src/query.h, src/query.cpp: add getQualifiedBytes,
	getQualifiedUBytes, getQualifiedShorts, getQualifiedUShorts,
	getQualifiedLongs, and getQualifiedULongs
	* src/table.h, src/tafel.cpp: change tablex::appendRow to return
	the number of values added, change tablex::appendRows to return
	the number of rows added

2009-04-22 John Wu <John.Wu at ACM.org>
	* src/query.h, src/query.cpp: add function getQualifiedStrings
	* src/part.h, src/part.cpp: add function selectStrings
	* src/utilidor.h: clean up errors in in-line documentation

2009-04-18 John Wu <John.Wu at ACM.org>
	* configure.ac: actually try to compile src/whereLexer.cc to
	determine whether to use win/FlexLexer.h or not

2009-04-17 John Wu <John.Wu at ACM.org>
	* src/table.h, src/tab.h, src/bord.h, src/join.h, src/joinin.h:
	change the return value type from point to reference to reduce the
	need to check the validity of the pointers (existing code did not
	check them anyway)
	* src/bord.cpp, src/mensa.cpp: in getColumnAsString move statement
	copying oss.str() to individual cases, previously this was done at
	the end, which causes all string values to returned as empty string

2009-04-16 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp:670 need to multiply page size to
	pi.PhysicalTotal to get bytes
	* src/tafel.cpp, src/tafel.h: add masks to functions locate,
	locateString, append, and appendString -- to ensure the masks are
	extended as the values are added through ibis::table::row
	* src/mensa.cpp: change the behavior of ibis::mensa::addPartition
	to examine the global configuration entries when the input
	directory name is not a valid string

2009-04-15 John Wu <John.Wu at ACM.org>
	* configure.ac: change the handling of debug and xopt options to
	preserve the existing CXXFLAGS specified by the user.  change
	version number to 1.0.7
	* src/tafel:1207 move the line that clears col.mask into the
	if-block for nil pointers (in ibis::tafel::capacity).  Previously,
	the mask is cleared for no reason at all.

2009-04-14 John Wu <John.Wu at ACM.org>
	* src/tafel.cpp: in tafel::normalize add statement to make sure
	col.mask is of the correct size
	* src/tafel.h: remove const from the template tafel::append and
	function tafel::appendString, the const keyword is preventing the
	modified values being propergating back to the callers
	* src/qExpr.cpp:125 the right-hand side should be tm1 instead of
	tm2 (tm2 has been deleted in the previous line) -- a bug reported
	by Hank Childs and Prabhat
	* src/qExpr.cpp:755 change the output statement to check whether
	or not the output pointer is nil

2009-04-10 John Wu <John.Wu at ACM.org>
	* src/bundle.cpp, src/part.cpp, src/parti.cpp, src/query.cpp;
	change the name of data file for the explicit RIDs from "rids" to
	"-rids".  Since no valid column name can start with a dash, this
	removes any possibility of name collision.
	* src/part.cpp, src/query.cpp: change getRIDs to output implicit
	RIDs if no explicit ones are available
	* src: add macro FASTBIT_SYNC_WRITE to control whether to make a
	fsync call before closing a file opened for write.  If it is
	defined and _POSIX_FSYNC is also defined, then fsync will be
	called
	* src/table.h, src/tafel.h, src/tafel.cpp: add function capacity
	to report the maximum number of rows that can be stored with the
	current memory allocated
	* src/array_t.h: add function capacity

2009-04-09 John Wu <John.Wu at ACM.org>
	* src/part.cpp:4784 change the message to more accurately reflect
	the fact ibis::part::buildIndex merely goes through each column,
	not necessarily builds any indexes
	* src/bitvector.cpp:3700 update the message printed from
	ibis::bitvector::reserve to indicate it is reserving the specified
	number of words not bytes
	* src/util.cpp:1272 add conditions to avoid copying the message
	string in an attempt to make the timer class light-wiehgt
	* src/column.cpp:8992 through some timing measurements on
	hutch.lbl.gov, decided on a new test for choosing between binary
	search and linear matching in ibis::column::searchSortedICD, add
	statement to reserve space for hits (but timing measurements do
	not show any advantage of doing it, keeping it anyway because it
	seem to make sense)

2009-04-07 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp:1714 need to multiply by sizeof(T) when
	recording the size of the buffer.  This error was causing the file
	manager to incorrectly counting the number of bytes in memory and
	causing the it to attempt to free memory that are not there.  Have
	confirmed with valgrind that there is actually no memory leak at
	this time.
	* src/util.h:58&65 Andrey Kolchanov report that on MacOS gcc 4
	does not yet support atomic operations.  In class util::counter,
	make use of macro HAVE_GCC_ATOMIC32 instead of relying on GCC
	version to avoid the problem reported by Andrey
	* src/util.cpp: re-enable printing of leading space in the
	constructor of ibis::util::logger class as indicated in the
	documentation of the function, remove extra parameters to most of
	the invocations of the constructor of logger

2009-04-06 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp: add two more try-catch blocks to make a
	total of eight layers as promised in the documentation of the
	constructor if ibis::fileManager::buffer
	* src/qExpr.h: add constructor for ibis::qDiscreteRange to make
	use of array_t<double>

2009-04-04 John Wu <John.Wu at ACM.org>
	* src/tafel.cpp: in tafel::write reusing the variable olddesc
	causes incorrect description to be printed at the end

2009-04-03 John Wu <John.Wu at ACM.org>
	* src/table.h, src/tafel.h: add reserveSpace to ibis::tablex.
	* src/tafel.cpp: add LOGGER statements before all statements that
	returns a negative number

2009-04-02 John Wu <John.Wu at ACM.org>
	* src, examples: address warnings raised by the gcc compiler
	* tests/Makefile.am: reorder the final output of appendTest0 from
	do-large-append (so the built-in tests will invoke the new
	functions on sorted data)
	* src/column.cpp: re-arrange code to recover from error
	searchSorted
	* src/column.h: make searchSorted virtual so that HDF5_FastQuery
	can redefine them

2009-04-01 John Wu <John.Wu at ACM.org>
	* configure.ac: change handling of --with-java option to only
	check for the javac if the JAVA directory (either specified
	through --with-java or environment variable JAVA_HOME) actually
	exists
	* tests/Makefile.am: add a test case in check-ibis to try the
	weighted histogram computations

2009-03-31 John Wu <John.Wu at ACM.org>
	* src/fileManager.h, src/fileManager.cpp: add functions
	adjustCacheSize and currentCacheSize at the request of Jochen
	Schlosser, update in-line documentation of some functions
	* src/part.h: add weighted versions of get1DBins, get2DBins, and
	get3DBins
	* src/parth3dw.cpp: add separate file for an implementation of
	get3DBins with weighting
	* src/column.cpp: avoid ibis::roster if currentDataDir() returns
	nil, a problem encountered in HDF5_FastQuery reported by Oliver
	Ruebel
	* examples/ibis.cpp: add a new print weighted command to test the
	new weighted histogram functions, add calls to ibis::util::clean
	to free vector<bitvector*> allocated with get1DBins, get2DBins,
	and get3DBins.
	* src/parth.cpp: get1DDistribution returns the number of rows
	selected instead of the number of bins

2009-03-30 John Wu <John.Wu at ACM.org>
	* src/part.h: start implementing functions to compute weighted
	histograms at the request of Oliver Ruebel

2009-03-27 John Wu <John.Wu at ACM.org>
	* src/qExpr.h: update the binary search procedure in
	qDiscreteRange::inRange to check the last values[m]
	* examples/ibis.cpp: in findMissingValues, count the values that
	match and report if query 1 found less instances than query 0,
	print all values if more than half will be printed
	* tests/Makefile.am: add a new test case to exercise the new test
	implemented in tableSelect of examples/ibis.cpp (with option -r)

2009-03-26 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: in the loop to handle reordering of data
	partitions, delete str at the end (instead of in the middle)
	* src/part.h, src/part.cpp: change m_desc from char* to
	std::string
	* src/parti.cpp: add note to m_desc to indicate the data has been
	reordered, add call to computeMinMax if the min/max are not set
	when deciding whether to use the column as a key for sorting (in
	ibis::part::reorder)
	* src/column.h, src/part.h: add call to strerror to explain errors
	from pthread functions
	* src/query.cpp:660 avoid print extremely long query expressions
	* src/column.cpp, src/part.cpp: change the print out of the column
	name only (no the list of values, which can be awfully long)
	* examples/ibis.cpp: add code to chech the values returned by qq0
	and qq1 in tableSelect (function findMissingValues and
	findMissingValuesT actually does the work)

2009-03-25 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp: reduce the threshold for invoking default
	maxBytes computation to MIN_DOMAP_SIZE from 10 MB, to allow for
	maxBytes to be very small so that we can test the out-of-core
	functions in column.cpp
	* src/fileManager.cpp: change the constructor of
	ibis::fileManager::buffer to check the amount of free memory
	before allocating anything, make sure no more than 1/4th of the
	free memory is given to a new buffer
	* src/column.cpp:5276 add statement to indicate the data is no
	longer sorted after an append operation

2009-03-24 John Wu <John.Wu at ACM.org>
	* src/column.cpp: add statements to read and write field named
	"sorted", add functions searchSorted, searchSortedIC,
	searchSortedOOC, isSorted, findLower and findUpper
	* src/parti.cpp: add calls to ibis::column::isSorted to indicated
	that some columns are completely sorted
	* src/bord.cpp: add code to update m_sorted when reordering
	columns
	* src/countQuery.h, src/countQuery.cpp: add setWhereClause that
	takes an ibis::qExpr object, add code to delete hits and cand after
	modifying the query expression or data partition
	* src/part.h, src/part.cpp: add function part::testRangeOperators
	* src/ibin.cpp, src/irelic.cpp: set return values to indicate an
	empty range in case of an ill-formed range expression
	* src/qExpr.h: add virtual function nItems to ibis::qExpr to count
	the number of items in a query expression tree
	* examples/ibis.cpp: expand the handling of reordering option to
	allow column names to be specified after a directory name
	* src/array_t.h, src/array_t.cpp: add function find_upper to find
	the upper bound (as in STL function upper_bound), the existing
	function find is similar to STL function lower_bound

2009-03-23 John Wu <John.Wu at ACM.org>
	* src/table.h: add function getColumnAsDoubles that returns the
	values in std::vector<double>
	* examples/ibis.cpp: add code in tableSelect to directly generate
	ibis::qDiscreteRange query expression (reuse the verify_rid flag
	-r)
	* src/column.h: add protected member m_sorted (default false)

2009-03-17 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp: change all calls to util::logMessage to
	LOGGER to avoid casting the integers

2009-03-16 John Wu <John.Wu at ACM.org>
	* tests/Makefile.am: add m4 files in tests/m4 to EXTRA_DIST

2009-03-11 John Wu <John.Wu at ACM.org>
	* src/ibis.h: add countQuery.h
	* src/utl.h, src/part.cpp: add ibis::util::clean for ibis::partList

2009-03-09 John Wu <John.Wu at ACM.org>
	* tests/Makefile.am: add check-marksdb to run through the three
	queries provided by David B. Marks <marksdb @ cox.net>
	* src/qExpr.h, src/qExpr.cpp: add
	ibis::math::preserveInputExpressions to make it possible to bypass
	optimization of arithmetic expressions

2009-03-08 John Wu <John.Wu at ACM.org>
	* src/Doxyfile: include directory java/gov/lbl/fastbit
	* java/README: add mention of FastBitStringWriter and
	FastBitStringReader
	* java/gov/lbl/fastbit/*.java: update in-line documentation

2009-03-07 John Wu <John.Wu at ACM.org>
	* tests/readcsv.cpp: add new function readALine to handle comment
	lines started with # and --, to match the comments accepted by
	ibis::tafel::readCSV

2009-03-06 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp:922 remove mit and reuse variable it,
	statements 924 and 925 mistakenly used it instead of mit and was
	causing problems (a problem reported by Andrey Kolchanov)
	* src/util.h: clean up the documentation about envLock
	* src/query.h: change readLock and writeLock to from protected to
	public
	* src/capi.cpp: make use of the ibis::query::writeLock instead of
	ibis::util::envLock when manipulating the content cached for each
	query
	* src/resource.cpp: in resource::add remove the statements that
	delete the group with the same name as a value being added
	* win/Win.mak, win/MinGW.mak: include the new file countQuery.cpp

2009-03-05 John Wu <John.Wu at ACM.org>
	* src/bitvector64.cpp:1070 same problem at Norbert found in
	bitvector.cpp

2009-03-05 Norbert Heusser <heusser at online.de>
	* src/bitvector.cpp:1353 add call to nosharing() before modifying
	m_vec

2009-03-04 John Wu <John.Wu at ACM.org>
	* configure.ac: add AC_LAN(C++) to make the default language to be
	C++, fix the problem with header file FlexLexer.h
	* INSTALL: add note 10 about java compilation problem
	* Makefile.am, src/Makefile.am, java/Makefile.am,
	tests/Makefile.am: use EXTRA_DIST to replace dist_data...
	* java/README: update to reflect the new files from Andrey
	* AUTHORS: update list of contributors to include Andrey

2009-03-04 Andrey Kolchanov <kolchanov at gmail.com>
	* java/build.xml, java/tests,
	java/gov/lbl/fastbit/FastBitStringReader.java,
	java/gov/lbl/fastbit/FastBitStringReaderException.java,
	java/gov/lbl/fastbit/FastBitStringWriter.java,
	java/gov/lbl/fastbit/FastBitStringWriterException.java:
	add java unit test function and string handling functions.  This
	set of files require Apache ant to build.  Additional dependencies
	are distributed under tests/lib as jar files.

2009-03-03 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp: add calls to countQuery::setSelectClause in
	mensa::doSelect to make use of the capability to handle aliases
	* src/whereClause.cpp: on line 123 and 210, tm->getType() should
	be tmp->termType()
	* src/qExpr.cpp: change compRange::print to avoid print unknown
	operators
	* src/qExpr.h: ibis::compRange::inRange() neglected to check for
	nil pointers
	* src/qExpr.cpp: ibis::bediener::reduce mishandles a number of
	different cases, ibis::stdFunction1::reduce neglect to set ret to
	nil where it should have set it to this

2009-03-02 John Wu <John.Wu at ACM.org>
	* src/part.h, src/parti.cpp: add two variants of addColumn to
	evaluate an arithmetic expression and produce a new column
	* src/column.h, src/column.cpp: add castAndWrite to support
	addColumn
	* src/whereClause.cpp: change _verify to take a selectClause as an
	argument and check for aliases in column names for simple
	expressions
	* src/countQuery.h, src/countQuery.cpp: add new class
	ibis::countQuery
	* src/mensa.cpp: change all references to ibis::query to
	ibis::countQuery

2009-02-18 John Wu <John.Wu at ACM.org>
        * src/index.cpp: in doxygen documentation for index::create
        update the parameter name to dfname

2009-02-17 John Wu <John.Wu at ACM.org>
	* src/column.cpp: add codes to evaluateRange to answer
	qDiscreteRange queries with sorted list of data if they are
	present
	* examples/ibis.cpp: add option '-sort column-name' to allow the
	user to sort selected columns of a data partition
	* src/part.cpp: prevent the use of categorical values in either
	queryTest or quickTest (both of which may invoke doScan
	which are not available on string valued columns)
	* src/part.cpp: recursiveQuery checks against nEvents, but should
	have used the number of ones in the column mask
	* src/part.h: getMask --> getNullMask, to be consistent with the
	function names elsewhere

2009-02-16 John Wu <John.Wu at ACM.org>
	* src/iroster.h, src/iroster.cpp: reorganize ibis::roster

2009-02-15 John Wu <John.Wu at ACM.org>
	* src/util.h, src/fileManager.h, etc: move util::buffer to
	fileManager::buffer and add code to track to its memory usage

2009-02-13 John Wu <John.Wu at ACM.org>
	* src/table.h, src/tafel.h, src/tafel.cpp, examples/ardea.cpp: add
	an optional argument to readCSV for user to specify the maximum
	number of rows expected from the input file, add user to specify
	the maximum number of rows on the command line of ardea (a
	suggestion from Norbert Heusser <heusser at online.de>)
	* src/category.cpp: add a buffer to store starting positions in
	text::startPosition to reduce the numbre of calls to fwrite
	* src/mensa.cpp: the constructor is cursor may divide by zero is
	the table contains only string-valued data, in this case, assume
	each value takes no more than 1024 bytes
	* src/category.cpp: add a buffer to store the starting positions
	in text::search to reduce the number of read operations, unroll
	the loop for matching strings, make the comparisons
	case-insensitive

2009-02-12 John Wu <John.Wu at ACM.org>
	* configure.ac: added space surrounding expression of the form
	"test a=b"
	* src/tafel.cpp: variable cnt needs to be set to zero for every
	line of input text in ibis::tafel::readCSV, change all default
	delimiter string from ", " to ","
	* src/util.cpp: add special cases in ibis::util::getString
	(3-argument version) to avoid calls to strchr

2009-02-10 John Wu <John.Wu at ACM.org>
	* src/qExpr.cpp: use an integer array to sort the incoming values
	instead of a std::set (at the suggestion of Alesandro Capucci)
	* examples/ibis.cpp, doc/ibisCommandLine.html: change the print
	out to indicate that tableSelect is producing another table as
	output and the "count(*)" will produce a table of one row and one
	column, update the documentation about the ibis command line to
	reflect this fact (not a new feature but a clarification of
	behavior)
	* src/category.cpp: the computation to carry the leftover bytes in
	function startPositions had an extra accumulation of offset, a
	problem first reported by Andrey Kolchanov

2009-02-06 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp: add calls to unload in mapFile and doRead
	after they fail for the first time (to address a problem reported
	by Alessandro Capucci)
	* tests/Makefile.am: remove - from test 3 of check-tcapi, the sh
	on a BSD machine does not like it

2009-02-05 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: add indications of total number of hits in
	addition to how many are printed in function tableSelect (to
	address a problem encountered by Alessandro Capucci)
	* configure.ac: if --enable-xopt is specified by nothing is
	specified for debug, use -O3, which is more widely supported than
	-O5

2009-02-04 John Wu <John.Wu at ACM.org>
	* src/column.cpp, src/category.cpp: updated documentations while
	looking for clues to the problem reported by Alessandro Capucci
	<alessandro at totalwire.it>

2009-02-03 John Wu <John.Wu at ACM.org>
	* src/table.h: move two inlined functions ibis::table::groupby and
	ibis::table::orderby to mensa.cpp to make the header file more
	self contained.  Those two function requires
	ibis::table::parseNames, which is already in mensa.cpp, change
	parseNames to be class function
	* src/whereLexer.ll: change a number sequence to require at least
	three numbers, change {WS}* after the first string in the
	definition of string sequence to be {SEP}+ -- to address a problem
	reported by David Marks <marksdb at cox.net>
	* src/whereParser.yy: add special cases for IN predicate with one-
	and two-number sequences on the right-hand side
	* tests/Makefile.am, win/MinGW.mak: change case 2 of check-ibis to
	test for a simplified version of problem reported to cause problem
	for David Mark
	* src/qExpr.cpp: in math::stdFunction1::reduce, add special case
	to absorb pairs of consecutive log and exp functions

2009-02-02 John Wu <John.Wu at ACM.org>
	* src/parth3d.cpp: add macro FASTBIT_EXPAND_ALL_TYPES to control
	whether the BYTE, UBYTE, SHORT, USHORT and ULONG are handled
	separately with different template instances.  If
	FASTBIT_EXPAND_ALL_TYPES is defined, all ten fixed-size column
	types are expanded to have their own instances of the template
	functions.  However, with three levels of expansion, it creates
	thousands of instances of the template function and takes a very
	long time to compile.  If the macro is not defined, the default
	behavior, only five template instances are created at each level.
	Overall, this should reduce the number of template instances by a
	factor eight.  Should improve the compile time without sacrifice
	too much run-time performance.
	* src/parth3da.cpp, src/parth3db.cpp: split the two get3DBins
	functions from src/parth3d.cpp to reduce compilation time
	* tests/Makefile.am: remove 2>&1, it somehow cause errors on
	cygwin during 'make check'
	* configure.ac: move the block for handling --enable-debug and
	--enable-xopt to the beginning of the custome code in configure.ac
	to set the initial value of CFLAGS, let the default CFLAGS pass
	through when neither debug nor xopt is set

2009-02-01 John Wu <John.Wu at ACM.org>
	* tests/Makefile.am: add check-tcapi test 3 to confirm the output
	from text::selectLongs, add tcapi-3 to the list dist_data_DATA

2009-01-30 John Wu <John.Wu at ACM.org>
	* src/capi.cpp:632 add ibis::TEXT and ibis::CATEGORY as acceptable
	column types for fastbit_get_qualified_longs (bug found by Andrey
	Kolchanov)
	* java/milky.java, examples/tcapi.c: add a case for retrieving
	values as 64-bit integers
	* configure.ac: change the code used for testing atomic function,
	change how the CFLAGS is carried through the configure script

2009-01-29 John Wu <John.Wu at ACM.org>
	* src/index.h: add the 4th argument to index::create to determine
	whether to load an index in its entirety, previously, this option
	is available through a undocumented global variable (a feature
	requested by Jochen Schlosser)
	* src/column.h, src/part.h: add the 2nd argument to the function
	loadIndex to make use of the new argument in ibis::index::create
	* src/resource.h: update documentation to a couple of functions
	* doc/index.html, doc/rara.html: refer to the new html file
	rara.html in index.html, change < and > to &lt; and &gt; in
	rara.html

2009-01-28 John Wu <John.Wu at ACM.org>
	* src/FastBit.java: update internal documentation about the
	functions.
	* src/util.h: add checks on WINVER to avoid invokding 64-bit
	atomic functions on non-64-bit machines under windows (in
	ibis::util::sharedInt64)
	* src/mensa.h, mensa.cpp: change curPart to be an integer
	* src/util.h, src/mensa.cpp, src/capi.cpp, src/part.cpp,
	src/query.cpp: change ibis::partList into a std::vector, rename
	the old associative array into partAssoc -- only use it within the
	scope of individual functions.  A unsuccessfull attempt to figure
	out why win/trydll.cpp fails to clean up the variable tlist --
	probably the same old problem with dll export.

2009-01-22 John Wu <John.Wu at ACM.org>
	* src/rara.cpp: add a small test program named after the smallest
	ibis
	* doc/rara.html: add annotation for the small example rara.cpp
	* src/util.h: remove const qualifier from the return type of
	operator() for sharedInt32 and sharedInt64, change the definition
	of HAVE_GCC_ATOMIC[32|64] to trust the definition from config.h

2009-01-21 John Wu <John.Wu at ACM.org>
	* win/trydll.cpp: update the call to constructor of
	util::quietLock and util::counter to the new argument lists
	* src/index.cpp: restore the use of ibis::relic when the index
	specification is "relic" -- existing code attempts to use
	ibis::direkte in some cases when "relic" is requested
	* src/irelic.cpp: in ibis::relic::read check for valid type codes
	explicitly
	* src/ibis.h: add conditional code to increase the verbose level
	if DEBUG or _DEBUG is defined
	* java/README.txt: update instructions related to the new package
	name gov.lbl.fastbit

2009-01-20 John Wu <John.Wu at ACM.org>
	* src/util.h: use the new macros defined in src/config.h
	(HAVE_GCC_ATOMIC32 and HAVE_GCC_ATOMIC64) for help
	determining the presence of atomic operations
	* src/column.h: change member variable idxcnt from uint32_t to
	ibis::util::sharedInt32 to provide more consistent tracking of
	index usage
	* src/part.h: add get1DBins and get2DBins that return
	std::vector<ibis::bitvector*> based on the experience of Oliver
	who observed that using the null pointers instead of allocating
	empty bitmaps can reduce the execution of his program by about
	half.  Note that Oliver was using get3DBins which is much more
	likely to produce empty bins than get2DBins and get1DBins,
	therefore the benefit of returning null pointers might be less.

2009-01-19 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp: update the messages printed out from
	fileManager::getFile that actually does the reading, to enable the
	printing of the address of the allocated memory
	* src/util.h: add conditions to prevent the use of
	__sync_add_and_fetch and friends on 8-byte integers under GCC
	4.1.x (need to find a better way to detect when to use this GCC
	extension)
	* configure.ac: add two sections to figure out whether
	__sync_add_and_fetch is supported, regenerate src/config.h.in with
	autoheader

2009-01-18 John Wu <John.Wu at ACM.org>
	* src/category.h, src/category.cpp: add ibis::text::selectLongs to
	extract the starting positions of the selected strings (so that
	the caller may read the string values directly, a hack for Andrey
	Kolchanov)
	* src/fileManager.cpp: simplify the print logic in
	storage::enlarge, ensure all memory allocations are recorded

2009-01-16 John Wu <John.Wu at ACM.org>
	* src/util.h: change ibis::util::counter to use GCC atomic
	extension as well
	* src/util.h: remove the unused member variable mesg from
	ibis::util::counter, add code to use interlocked variables in
	ibis::util::counter
	* src/util.h: change sharedInt template to two versions for
	uint32_t and uint64_t to take advantage of atomic functions
	available on windows under visual studio 9
	* src/fileManger.h, src/fileManager.cpp: remove countMutex,
	change totalBytes to be ibis::util::sharedInt64, change
	storage::nref from unsigned to ibis::util::sharedInt32
	* win/MinGW.mak: add case 10 to check-ibis

2009-01-15 John Wu <John.Wu at ACM.org>
	* src/util.h: add ibis::util::sharedInt template to make use of
	GCC extension for atomic operations on integers

2009-01-14 John Wu <John.Wu at ACM.org>
	* src/resource.h: separate the default constructor from the
	constructor that takes a string argument based on a suggestion
	from Niklas Bulitta.  Note that the function ibis::gParameter()
	only uses the default constructor.  Update the documentation of
	the functions in ibis::resource.
	* tests/Makefile.am: add test case 10 to check-ibis to exercise
	the new built-in tests for multi-threaded query evaluations

2009-01-13 John Wu <John.Wu at ACM.org>
	* src/part.h: start to implement a set of function that use a
	thread pool to answer different queries --
	ibis::part::buildQueryList and ibis::part::checkQueryList
	* src/part.cpp: rename ibis_part_startTests to
	ibis_part_threadedTestFun1, add ibis_part_threadedTestFun2 to
	process the list of queries generated by buildQueryList

2009-01-09 John Wu <John.Wu at ACM.org>
	* java/FastBit.java: change package name to be gov.lbl.fastbit,
	add FastBitJNI group to doxygen documentation
	* src/Doxyfile: add java/FastBit.java and the example files in
	examples to the list of source files
	* src/query.cpp:6584 add OPEN_FILEMODE as the 3rd argument to
	UnixOpen function call (an error spotted by Niklas Bulitta)
	* src/query.cpp:1712 add local static variable myhostid to cache
	the host ID instead of making the system call every time
	(suggested by Niklas Bulitta)
	* src/parth3d.cpp: add a variantion of get3DBins that returns
	bitmaps in container std::vector<ibis::bitvector*>.  Based on the
	timing measurements from Oliver, keeping empty bitmaps as nil
	pointers might be able to reduce the memory usage reduce overall
	execution time of get3DBins, especially if the majority of the
	bins are empty.
	* examples/ibis.cpp: add code in print3DDistributiion to test the
	new get3DBins that returns std::vector<ibis::bitvector*>

2009-01-08 John Wu <John.Wu at ACM.org>
	* win/MinGW.mak: add check-ibis
	* java/FastBit.java, java/FastBit.c: following a suggestion from
	Andrey Kolchanov <kolchanov at gmail.com> and placed JNI code in a
	package named gov.lbl.sdm

2009-01-07 John Wu <John.Wu at ACM.org>
	* win/MinGW.mak, win/Win.mak: update these make files for the two
	new source files
	* win/*.vcproj: include parth2d.cpp and parth3d.cpp in the
	VisualStudio project files

2009-01-06 John Wu <John.Wu at ACM.org>
	* src/parth2d.cpp, src/parth3d.cpp, src/parth.pp: split parth.cpp
	into three file to reduce the time needed for compilation
	* src, examples: change copyright year to include 2009

2009-01-05 John Wu <John.Wu at ACM.org>
	* src/util.h, src/util.cpp: add ibis::util::compactValue2 to
	compute the most compact binary value in a given range
	* examples/ibis.cpp: compute stride values in print2DDistribution
	and print3DDistribution using compact binary values to make the
	arithmetic computation less affected by rounding.  This is mostly
	to avoid visual mismatches, for example, the value 0.1 printed on
	screen is actually slightly larger than the precise value of 0.1
	inside the computer.  Given begin=0 and stride=0.1, one may expect
	the value 1.0 to be in bin 10, but it actually ends up in bin 9.
	The apparent unexpected placement of values can be to diagnose.

2009-01-02 John Wu <John.Wu at ACM.org>
	* src/array_t.cpp: in constructors assign m_begin to 0 in the
	initialization lists, assign values to m_begin in the constructor
	body after checking the values of actual
	* src/bitvector.cpp:393 add call to m_vec.nosharing() to
	ibis::bitvector::setBit (when a std::vector<ibis::bitvector> is
	resized, it creates multiple copies of a dummy bitvector)
	* src/parth.cpp: line 3011, vals2 should have been vals3, lines
	2987 and 2974, end2 should have been end3!
	* src/bitvector.cpp: count bitmaps as in decompressed state only
	if the m_vec contain some (> 0) bits -- this avoids the invocation
	of functions xx_c0 that assume the raw pointers can be used
	directly (in case of an empty m_vec, the raw pointer can not be
	used because it might be nil)
	* win/ibis.vcproj: add . to the include directories for the
	Release build

2008-12-26 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: rename the existing print2DDistribution and
	print3DDistribution with ones that uses (begin, end, stride) to
	specify fixed bins -- to exercise the new get2DBins and get3DBins

2008-12-24 John Wu <John.Wu at ACM.org>
	* src/bitvector.cpp:4093 add statement to delete tmp, add call to
	compress and copy the resulting bit vector which typically reduces
	the memory usage
	* src/bitvector.cpp:4116 reorganize the triple-nested loop to
	reduce the number of temporary variables generated, add call to
	compress, and copy the result to reduce memory footprint held by
	the result bit vectors
	* src/parth.cpp in adaptiveIntsDetailed and adaptiveFloatsDetailed
	add function calls to compress the bit vectors generated from
	sumBits

2008-12-23 John Wu <John.Wu at ACM.org>
	* src/part.h: add get1DBins, get2DBins and get3DBins that takes
	(begin, end, stride) triples to define exact bin boundaries (a
	feature requested by Prabhat and Oliver Ruebel)

2008-12-18 John Wu <John.Wu at ACM.org>
	* src/mensa.h, src/mensa.cpp, src/bord.cpp: add function dumpNames
	* examples/ibis.cpp: add outputnamestoo to capture the request to
	also output the column names in the output file
	* doc/ibisCommandLine.html: update the description of option
	-output to indicate the new variant -output-with-header
	* tests/Makefile.am: capitalize the word NOT to make failure
	messages stand out a little bit more
	* src/selectClause.h:72 add (required) return statement

2008-12-17 John Wu <John.Wu at ACM.org>
	* src/table.h, src/tab.h, src/bord.h: add function dumpNames to
	print a one-line header for CSV output

2008-12-9 John Wu <John.Wu at ACM.org>
	* src/ixbylt.cpp, src/ixfuge.cpp, src/ixfuzz.cpp: the function
	coarsen contains an incorrect test, the condition (ncoarse < 5 ||
	ncoarse <= nobs) should be (ncoarse < 5 || ncoarse >= nobs)
	* src: minor tinkering with the print-out (while debugging an
	application)

2008-12-4 John Wu <John.Wu at ACM.org>
	* win/Win.mak, win/MinGW.mak: update makefiles for Visual Studio's
	nmake and GNU make under MinGW/MinSYS
	* src/util.cpp: add conditional comiplation macro for MinGW32 in
	ibis::util::userName()

2008-12-1 John Wu <John.Wu at ACM.org>
	* README, win/README, tests/README: update the instructions
	following an inquiry from a new user

2008-11-28 John Wu <John.Wu at ACM.org>
	* src/category.cpp:201 incremented it by (newentry-1) instead of
	newentry
	* tests/readcsv.cpp: change header files to satisfy g++-4 under
	cygwin

2008-11-25 John Wu <John.Wu at ACM.org>
	* src/ibin.cpp:3850 make the lower bound larger to create more
	bins for larger values in log-scale -- this affects the case of
	indexing integer values as floating-point values and the minimum
	value is exactly 0, in which case the majority of the bin
	boundaries are less than 1 and useless
	* src/column.cpp:4696 add a statement in evaluateRange to clear
	the existing content of result variable (low), later statements
	depend on the size of this variable to determine what to do
	* configure.ac: update to autoconf 2.63
	* src/fileManager.cpp: in function unload, clean up the usage of
	variable sum, simplify the logic for determining what objects to
	remove.  The previous usage of sum is incorrect in the loop
	to free candiates.
	* src/fileManager.cpp: add call to sysctl on BSD flavored machines
	to find out the physical memory size
	* tests: completed more-check successfully on portnoy (FreeBSD),
	davinci(linux), data2 (linux), starsky(Darwin), and bit (cygwin)

2008-11-24 John Wu <John.Wu at ACM.org>
	* src/parth.cpp:3091 change "i > 1" to "i > 0" in
	ibis::part::get1DDistribution to fix an error in histogram
	computation found by Niklas Bulitta
	* src/parth.cpp:3102 change test to produce a tighter upper bound
	for the last bin boundary
	* src/part.cpp: add write lock to computeMinMax and buildIndex
	* examples/ibis.cpp:679 change ibis::gVerbose > 0 to
	ibis::gVerbose >= 0, to print selected values without requiring -v
	option
	* src/ifade.cpp, src/isapid.cpp, src/isbiad.cpp, src/islice.cpp:
	add cases to handle 6 more different types of integer values --
	fixes an error observed by Niklas Bulitta
	* tests/scripts/matchCounts.pl:45 change fgrep to egrep to catch
	a larger variety of error messages
	* tests/scripts/matchCounts.pl:38 convert all non-alphanumeric
	characters in query condition to underscore so that the backup
	file names may be acceptable on windows (under cygwin)
	* src/utilidor.cpp:1281 add definition for nelm (used in DEBUG
	code)
	* src/part.cpp:4535 removed invalid DEBUG code
	* src/whereLexer.ll:129 change STRSEQ to contain at least three
	strings (to avoid trouble with one- and two-argument functions),
	this also means that the string form of the 'IN' operator must
	have at least three strings on the right-hand side

2008-11-20 John Wu <John.Wu at ACM.org>
	* examples/ardea.cpp:696 separate out the default branch in
	parseNamesTypes to print a warning message (suggested by Niklas
	Bulitta)

2008-11-12 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp:1666 change == to !=, write output file if it
	is NOT /dev/null
	* tests/Makefile.am:57,59,61 modify tests to accommodate the new
	output format used by ibis.cpp (output from function tableSelect)

2008-11-10 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: add calls to get2DBins and get3DBins in
	print2DDistribution and print3DDistribution as sanity check for
	these functions, add call to get1DBins in printColumn (Caution:
	due the different number of internal bins used, the function that
	retrieve the counts only, getxDDistributions, may not
	produce exactly the same output as those compute the bit vectors,
	getxDBins)
	* src/mensa.h: add default constructor to ibis::mensa
	* example/ibis.cpp: add function tableSelect to process queries
	using the select function of ibis::table interface (which can
	handle arithmetic expressions in the select clauses and combines
	answers from different data partitions)

2008-11-09 John Wu <John.Wu at ACM.org>
	* src/part.h, src/parth.cpp: add get1DBins, get2DBins, and
	get3DBins and supporting functions

2008-11-07 John Wu <John.Wu at ACM.org>
	* src/parth.cpp: move histogram functions from part.cpp to
	parth.cpp
	* src/index.h: swap two pairs of names, addBins and addBits,
	sumBins and sumBits in ibis::index; move functions addBits and
	sumBits into public scope
	* src/part.h, src/parth.cpp: add adaptiveIntsDetailed and
	adaptiveFloatsDetailed, change all adaptive binning templates to
	return long
	* src/util.h, src/bitvector.cpp: add two versions of function
	ibis::util::intersect, rename ibis::outProduct to be
	ibis::util::outerProduct

2008-11-06 John Wu <John.Wu at ACM.org>
	* src/part.cpp: add an element of 0 to bnds[123] to simplify the
	loops in ibis::part::adaptive3DBins, delete val2 in
	get2DDistribution, round up bin boundaries for integers in
	get2DDistribution and get3DDistribution, fix errors in
	get3DDistribution, make sure the bin boundaries does not round
	down to values that are included in the bin to its left (this
	could happen because the bin numbers are computed using the
	differences which could be smaller, when these differences are
	added back, the rounding may lead to smaller bin boundaries)
	* tests/Makefile.am: add test case check-ibis 9 to try out the 3D
	histogramming function

2008-11-05 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: add statements to print out the return code
	in three functions that computes joint distributions
	* win: change the version numbers in the VisualStudio project
	files lower so it can work with the 2003 version
	* examples/ibis.cpp:505 missing col3 in the calling sequence of
	get3DDistribution

2008-11-03 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp:482 add print3DDistribution to exercise new
	functions in ibis::part
	* src/part.cpp:12186&12195 add statements to initialize counts
	array

2008-10-31 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp:2637 add check for the content of indexing
	option before changing the existing indexing option.  When the
	user supplied indexing option is different from what is in the
	data partition, remove the existing index files so that a fresh
	set of indexes are built.
	* src/part.h, src/part.cpp: add adpative binning version of
	get3DDistribution

2008-10-23 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp: add statement to skip extra spaces and delimiters
	in ibis::table::parseNames
	* src/mensa.cpp: implement ibis::mensa::doSelect
	* src/part.cpp:16043 change ibis::part::barrel::read to use 8
	fixed-size integers instead of just "int" and "unsigned int"
	* src/qExpr.cpp:31 operator_name array missed "%" (for remainder)
	* tests/Makefile.am: add two test case under check-thula to
	exercise the new arithmetic expression handling in funct
	ibis::table::select

2008-10-22 John Wu <John.Wu at ACM.org>
	* src: unify the display of time duration to be "%g sec(CPU), %g
	sec(elapsed)"
	* examples/thula.cpp: modify it to use the new select function
	with arithmetic expressions
	* Makefile.am:12 add java/FastBit.java and java/milky.java for
	source tar distribution (an omission reported by Niklas Bulitta
	<officeman at freenet.de>)

2008-10-21 John Wu <John.Wu at ACM.org>
	* src/query.h: rename setTable to setPartition
	* src/query.cpp: change word "table" to "data partition" or "partition"
	* src/capi.h: adjust the LOGGER statements to make them line up
	nicer
	* src/menda.h: add doSelect to handle the non-trivial cases of
	selection

2008-10-20 John Wu <John.Wu at ACM.org>
	* src: add selectClause.cpp, selectClause.h, selectLexer.cc,
	selectLexer.h, selectLexer.ll, selectParser.cc, selectParser.hh,
	and selectParser.yy
	* configure.ac: add statements to check for the presence of
	FlexLexer.h

2008-10-02 John Wu <John.Wu at ACM.org>
	* src: move ibis::query::verifyPredicate to
	ibis::whereClause::verify, move ibis::query::addJoinConstraints to
	ibis::whereClause::amplify

2008-09-29 John Wu <John.Wu at ACM.org>
	* src: start using a new set of query parser for where clause: add
	whereClause.cpp, whereLexer.h; rename predicate.h -->
	whereClause.h, predicate.l --> whereLexer.ll predicate.y -->
	whereParser.yy, predicate.yy.cpp --> whereLexer.cc predicate.tab.h
	--> whereParser.hh, predicate.tab.cpp --> whereParser.cc

2008-09-29 John Wu <John.Wu at ACM.org>
	* src/qExpr.h, src/qExpr.cpp: move ibis::compRange::term and
	derived classes out of ibis::compRange and into ibis::math, change
	ibis::compRange::barrel to be ibis::math::barrel.

2008-09-26 John Wu <John.Wu at ACM.org>
	* src/qExpr.h, src/qExpr.cpp: add a new constructor of qAnyAny
	that takes a double value as the second argument, add proper
	prototype for operator<< that takes ibis::qExpr on the right-hand
	side, add detection of coma delimiter for unquoted strings in a
	sequence of strings in the constructor of qMultiString

2008-09-24 John Wu <John.Wu at ACM.org>
	* src/table.h, src/tab.h, src/bord.h, src/mensa.h: add an optional
	argument to ibis::table::dump that prints the first few rows of a
	table at the suggestion of David Kantowitz.

2008-09-22 David Kantowitz <dkantowitz at thinktradellc.com>
	* src/bord.h, src/bord.cpp: add derived version of getString to
	ibis::bord::column

2008-09-22 John Wu <John.Wu at ACM.org>
	* src/util.h, src/util.cpp, src/utilidor.h, src/utlidor.cpp: move
	the sorting function related to RIDSets to utilidor.h/cpp to limit
	the dependencies of util.h

2008-09-19 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp:2275 add check to make sure the column type is not
	text or category, an error spotted by David Kantowitz <dkantowitz
	at thinktradellc dot com>
	* src/mensa.cpp:2504&2516 buffer[j].cval used as a pointer to
	std::vector<std::string>, but should be a pointer to ibis::column
	(more specifically ibis::text or ibis::category)

2008-09-17 John Wu <John.Wu at ACM.org>
	* src/part.cpp:11365 check whether the empty bins exist before
	adding new bin boundaries
	* win/*.vcproj: change _USRDLL to CXX_USE_DLL

2008-09-15 John Wu <John.Wu at ACM.org>
	* win: Update visual studio project files for the new Visual
	Studio 2008

2008-08-22 John Wu <John.Wu at ACM.org>
	* src/part.cpp: in adaptive2DBins, change the upper bound on the
	number of bins from 1000 to 2048 to tests used by Prabhat to run
	without surprises.  If a user asks for more than 2048 bins in each
	dimension, they will be reduced to limit the memory required for
	computing the fine bins
	* tests/Makefile.am: update test functions to exercise
	two-dimensional histogram functions, update expected output

2008-08-20 John Wu <John.Wu at ACM.org>
	* src/part.cpp: change ibis::part::adaptiveBins into two functions
	adaptiveInts and adaptiveFloats
	* src/part.cpp: implement two new get2DDistribution for computing
	2D histograms (both conditional and unconditional) based on the
	template function adaptive2DBins.  The new implementation avoids
	the binary look up used in the previous implementation.

2008-08-19 John Wu <John.Wu at ACM.org>
	* src/part.cpp: add get1DDistribution to compute conditional
	histograms with adaptive bins (supported with template function
	ibis::part::adaptiveBins)

2008-08-18 John Wu <John.Wu at ACM.org>
	* src/part.cpp: mark the functions that returns bins with open
	ends as deprecated

2008-08-15 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp: cursor::dumpSome performed extra call to
	fillBuffers
	* doc/index.html, doc/dataLoading.html: add references to sample
	data

2008-08-14 John Wu <John.Wu at ACM.org>
	* src/table.h and friends: add function dump that only print the
	first few rows (to allow ardea.cpp to only print a few rows
	without reading all rows into memory)
	* src/mensa.h, src/mensa.cpp: change ibis::mensa::cursor to read a
	small number of rows into memory at a time (instead of always read
	a whole partition into memory as a time)
	* src/utilidor.cpp:1103 disable global optimization for
	ibis::util::sortStrings_partition when using MS VisualStudio

2008-08-13 John Wu <John.Wu at ACM.org>
	* examples/ardea.cpp:788 change "> 0" to "== 0" (intended to
	print only small tables, but existing condition got it wrong)

2008-08-12 John Wu <John.Wu at ACM.org>
	* src/utilidor.cpp:5 include typeinfo (NOTE: gcc 3.3.3 complains
	about the explicit instantiation of the function templates
	ibis::util::sortKeys)

2008-08-11 John Wu <John.Wu at ACM.org>
	* src/qExpr.cpp:2123 correct the loop that eliminates duplicate
	values (an error first encountered by Prabhat)
	* src: add doxygen groups FastBitIBIS, FastBitMain, and FastBitCAPI

2008-08-01 John Wu <John.Wu at ACM.org>
	* src/part.cpp: clean up the in-line documentation about various
	functions related to the computation of histograms.
	* src/part.cpp: change get2DDistributionD to get2DDistributionU
	* src/part.cpp: add get2DDistributionA and adapative2DBins to
	implement adapative binning with base data for get2DDistribution
	(without any condition)

2008-07-30 John Wu <John.Wu at ACM.org>
	* src/const.h:211-251 change the conditional compilation to more
	precisely manage the definitions of exact-width integer types --
	addressing a compatibility issue with VisIt encountered by Gunther
	Weber

2008-07-22 John Wu <John.Wu at ACM.org>
	* src, examples: remove some unused variables and functions

2008-07-18 John Wu <John.Wu at ACM.org>
	* src/ifase.cpp, src/isapid.cpp, src/isbiad.cpp, src/islice.cpp:
	add a local block to limit the scope of variable hst (histogram)
	to take advantage of the automatical deallocation.  Jochen has
	report a small memory leak in ibis::fade::construct2, which could
	be related to this

2008-07-01 John Wu <John.Wu at ACM.org>
	* src/mensa.cpp, src/bord.h: change precisions of ASCII
	representation of floats and doubles to 8 and 18 respectively
	(default is 6)
	* examples/ardea.cpp, examples/thula.cpp: change the output
	precisions of floats and doubles to match src/mensa.cpp
	* examples/ardea.cpp: change it to write data after reading each
	CSV file

2008-06-24 John Wu <John.Wu at ACM.org>
	* examples/thula.cpp: add option -x for exporting content of tables

2008-06-18 John Wu <John.Wu at ACM.org>
	* utilidor.cpp: add ibis::util::sort_heap to implement heap sort
	as the backup function for sort_quick (quick sort function), most
	the prototype information for most of the helper function for
	sorting into utilidor.cpp to hide them from the user

2008-06-17 John Wu <John.Wu at ACM.org>
	* array_t.h, array_t.cpp: add hsort (heap sort) and change qsort
	to make use of hsort at deep recursion level, set the maximum
	recursion depth to 20 in qsort
	* column.cpp:4674 add call to check the cost of using an index
	before actually use it

2008-06-06 John Wu <John.Wu at ACM.org>
	* utilidor.h, utilido.cpp, join.h, joinin.h, joinin.cpp: add files
	that performs radix sort and in-memory equi-join from the branch
	ibis-branch-080429
	* src/Makefile.am:5 change versioninfo to version-info
	* tests/Makefile.am:44 change option -j to -y to match with the
	new ibis.cpp
	* src/ixfuge.cpp, src/ixfuzz.cpp, and src/ixbylt.cpp: add code to
	ensure the number of coarse bins is not more than the number of
	distinct values (bins)
	* Makefile.am, tests/Makefile.am: change quick-check to check, and
	check to more-check, so the default check does a minimal amount of
	testing as not to surprise the user with the excessive long run
	time on some platfoms

2008-06-05 John Wu <John.Wu at ACM.org>
	* src/part.cpp: lines 1341 and 1342 are swapped (a bug reported by
	Xufei Qian of SDSC)

2008-06-04 John Wu <John.Wu at ACM.org>
	* src/query.cpp: change ibis::query::evaluate and
	ibis::query::computeHits to accept empty where clause when the
	select clause is specified
	* example/ibis.cpp: accept query string without a where clause if
	it has a select clause (request from Ross Bates)

2008-05-29 John Wu <John.Wu at ACM.org>
	* src/colValues.h: add function nosharing to ibis::colValues.
	This addresses a problem reported by Ross Bates.  When all records
	are selected, the previous code attempts to sort an array that was
	based on a read-only memory map.
	* src/bundle.cpp: add calls to ibis::colValues::nosharing before
	sorting the bundles

2008-05-27 John Wu <John.Wu at ACM.org>
	* src/util.cpp:882: add the case of using getpwuid back to
	function ibis::util::userName.  Ross Bates just pointed out that
	the function getlogin requires an actual login session (as
	indicated by the presence of a utmp entry or a TTY).  The function
	getlogin fails with a segfault if it is not able to determine the
	TTY or utmp entry.

2008-05-22 John Wu <John.Wu at ACM.org>
	* src/ibbylt.cpp, src/ixfuzz.cpp, src/ixfuge.cpp: change the
	default value computation for ncoarse to use the one with smaller
	objective function value (rather than rounding the analytical
	expression).  This produces a more stable default value especially
	when the number of coarse bins is small.

2008-05-15 John Wu <John.Wu at ACM.org>
	* src/ixbylt.cpp, src/ixfuge.cpp, src/ixfuzz.cpp: change the
	default number of coarse bins (ncoarse) to make use of the coarse
	level index size, previous default values assume uniform random
	data, the new default values only assume the coarse level will be
	uncompressible, which is more general
	* tests/Makefile.am: change quick-chek to make sure the TESTDIR is
	cleared first, change the word 'failed' to 'did not pass' to make
	the message longer and stand out more

2008-05-15 John Wu <John.Wu at ACM.org>
	* src/ixbylt.cpp: add code to read option ncoarse in index
	specification, change default ncoarse to 31 based on the
	heuristics of neutral space-time trade-off
	* src/ixfuge.cpp:715, src/ixfuzz.cpp:135, change default ncoarse
	to 44 based on the heuristics of neutral space-time trade-off
	* src/ixpack.cpp: change the default number of coarse bins to 31

2008-04-30 John Wu <John.Wu at ACM.org>
	* src/joinin.cpp: complete initial implementation of ibis::joinIN
	* examples/ibis.cpp: change the operation delete row to use -yank,
	add -join to test the class ibis::joinIN
	* src/Makefile.am: add entries for the new files, utilidor.cpp,
	joinin.cpp, utilidor.h, joinin.h and join.h

2008-04-29 John Wu <John.Wu at ACM.org>
	* src/utilidor.h, src/utilidor.cpp: separate the sorting functions
	in namespace ibis::util from joinin.cpp and array_t.cpp.  Timing
	measurements show that the radix sort is the most efficient if
	there are more than a few thousand elements in the array to be
	sorted.  Change ibis::util::sort to ibis::util::sortall because it
	sorts all arrays passed to it.  Rename the newer sorting function
	to be ibis::util::sortkeys because they only sort according to the
	arrays keys.
	* *: create new tag on trunk (ibis-base-080429) and a new branch
	ibis-branch-080429, discard the branch b093pre-addjoin
	* src/utilidor.cpp: implement ibis::util::sortMerge
	* src/joinin.cpp: implement ibis::joinIN::evaluate

2008-04-27 John Wu <John.Wu at ACM.org>
	* src/joinin.cpp: add radix sort functions

2008-04-28 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp:2240 add code to match the SQL patterns in
	data partition names (a feature that was promised in
	ibisCommandLine.html but was lost somehow)
	* src/query.cpp: add function ibis::util::nameList::add
	* src/mensa.h: add function select2
	* src/util.cpp: change ibis::util::strMatch to be case insensitive
	* examples/thula.cpp: add option -f requested by Jon Strabala

2008-04-26 John Wu <John.Wu at ACM.org>
	* src/part.h: change ibis::util::tablesFrom??? to return the
	number of new partition they create
	* src/table.h: add function addPartition
	* src/mensa.cpp: add function addPartiton
	* src/query.cpp:199 add statements to delete dslock in
	ibis::query::setTable

2008-04-16 John Wu <John.Wu at ACM.org>
	* tests/Makefile.am: add test case 3 to check-text to exercise the
	operator IN

2008-04-15 John Wu <John.Wu at ACM.org>
	* src/bitvector.cpp: replace calls to append individual bits with
	appendFill in function erase
	* src/util.cpp: change conditional compilation instruction for
	using getlogin_r in userName
	* src/bitvector.cpp:2129 remove extra conditions in the if statement
	* src/bitvector.h: in copy_runs and copy_runsn, change the code to
	not use it.nWords in cases where it.isFill is not true
	* src/bitvector64.h: change copy_runs and copy_runsn to no use
	it.nWords when it.isFill is 0
	* src/ifade.cpp, src/irelic.cpp, src/isapid.cpp, src/isbiad.cpp,
	src/islice.cpp: locate(vals[i]) should be locate(varr[i]) in
	functions that process ibis::qDiscreteRange (an error first
	reported by Prabhat)

2008-04-11 John Wu <John.Wu at ACM.org>
	* src/bitvector.h: add function empty

2008-04-10 John Wu <John.Wu at ACM.org>
	* src/irelic.cpp: update a number of implementation if
	read(ibis::fileManager::storage*) to remove the statements that
	deletes str -- this should not have been done

2008-04-04 John Wu <John.Wu at ACM.org>
	* src/table.h, src/tafel.h, src/tafel.cpp: add function clearData
	* src/qExpr.cpp:2111 add check to see if the array is sorted
	before calling the sorting function

2008-04-02 John Wu <John.Wu at ACM.org>
	* src/index.cpp:3358 need to resize bdry before assignments
	* src/qExpr.cpp:1367 check expr->left and expr->right

2008-04-01 John Wu <John.Wu at ACM.org>
	* src/util.cpp: change userName to use getlogin_r as the primary
	method
	* src/category.cpp: change the starting positions of strings from
	type long to type int64_t, make it possible to remove explicit
	instantiation of array_t<long>, which may conflict with other
	explicit instantiations

2008-03-31 John Wu <John.Wu at ACM.org>
	* src/fileManager.cpp: add new lines between some consecutive
	printing statements
	* examples/ibis.cpp: treat multiple printing options specified on
	command line independently, previously they are combined into one
	operation
	* src/part.cpp: in get2DDistributionD, refine the computation of
	stride1 and stride2 for integer values

2008-03-30 John Wu <John.Wu at ACM.org>
	* src/index.cpp:3700 add test to ensure avg is not assigned 0
	becasuse it is used in divisions later
	* src/util.cpp:973 change && to || in the conditions

2008-03-26 John Wu <John.Wu at ACM.org>
	* src/column.h: add keyword virtual to ibis::column::getActual???
	to allow FastQuery to override them
	* src/part.cpp: add setprecision(18) to the queries conditions
	genereated by various getxDDistribution functions.  A problem
	first observed by Prabhat.
	* src/index.cpp: change decisions to use the priority queue to
	put the number of bitmaps through the function square instead of
	log.  This improves the performance in a project with Prabhat.

2008-03-24 John Wu <John.Wu at ACM.org>
	* src/util.h: add ibis::util::timer class to print out timing
	information in a fixed format, try the first case in
	ibis::bin::binOrderT
	* src/Doxyfile:1008 add FASTBIT_CXX_DLLSPEC to PREDEFINED, change
	EXTRACT_ALL back to NO

2008-03-23 John Wu <John.Wu at ACM.org>
	* src/part.cpp: remove the call to function std::floor before
	calling static_cast<uint32>
	* src/array_t.cpp:248 check for empty array before continuing
	* src/array_t.cpp:275 add check for empty array and array of
	size 1

2008-03-22 John Wu <John.Wu at ACM.org>
	* src/qExpr.cpp: add more cases to ibis::qExpr::simplify, to
	enable merging of simple range conditions right next to each other

2008-03-21 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: update the use of LOGGER macro to match the
	new definition -- fix error in test cases check-ibis 7 and 8
	* tests/Makefile.am: change check-text to redirect normal output
	from ibis to /dev/null so as to not cluter the output
	* src/index.h: change most of the pure virtual functions in
	ibis::index to have a default implementation so as to minimize the
	required functions to be implemented by a derived class
	* src/part.h:312 add an optional argument to get2DDistribution to
	let the caller choose whether to use the indexes or base data,
	requested by Prabhat
	* src/index.h: change functions read and write to return int
	instead of void
	* src/qExpr.h: rewrite the function reduce to absorb consecutive
	pairs of cos and acos, sin and asin, tan and atan.

2008-03-20 John Wu <John.Wu at ACM.org>
	* src/column.cpp:3899 modify the decision on when to use unix read
	operationis to invoke them if only a few seeks are needed.  This
	should reduce the time needed for operations that only require a
	small number of values from a large dataset.  Previous decision
	relies more in the file mapping mechanism.
	* src/column.cpp: update functions selectTypes to use the new
	selectValues function
	* src/irelic.cpp:556 move the assignment of nrows to the beginning
	of the function to ensure all subsequence function can access the
	the correct value
	* src/ibin.cpp:852,903,2574 add assignment of nrows, without them
	the function ibis::index::optionalUnpack will make the wrong
	decision in some cases (a buf encountered by Prabhat)
	* doc/indexSpec.html: change < and > to &lt; and &gt; in sample
	index specifications
	* src/part.cpp: introduce more rnadomness to the test queries by
	using ibis::util::compactValues in generating intermediate query
	boundaries

2008-03-19 John Wu <John.Wu at ACM.org>
	* util.h:170 change LOGGER macro to take a logical expression
	instead of an integer, this make the dependency on ibis::gVerbose
	explicit

2008-03-18 John Wu <John.Wu at ACM.org>
	* src/part.h, src/part.cpp: add explicit template instantiation
	of ibis::part::equalWeightBins for float and double, attempting to
	reduce the time and memory needed to generate equal-weight bins
	* src/array_t.h, src/array_t.cpp: add a new sorting function
	ibis::util::sort to sort two arrays together
	* src/part.cpp: add calls to ibis::util::sort to sort values
	before counting 2D bins (attempting to improve efficiency for
	get2DDistribution)

2008-03-18 Matthias Vallentin <vallentin at icsi.berkeley.edu>
	* src/column.cpp:15 include <typeinfo>

2008-03-17 John Wu <John.Wu at ACM.org>
	* src/query.cpp:4168 limit the number of values to be printed
	* win/tcapi.vcproj: add macro _USRDLL, make sure all Debug versions
	of the projects compile code with full buffer check
	* const.h: redefine FASTBIT_DLLSPEC to FASTBIT_CXX_DLLSPEC, change
	DLL library to only export C API -- did not fix the problem with tcapi

2008-03-16 John Wu <John.Wu at ACM.org>
	* src/part.cpp:3618 initialize ierr to 0 (fix a run-time error
	reported by VisualStudio)
	* src/const.h:274 make sure PTHREAD_RWLOCK_INITIALIZER is not
	defined before defining it on Mac (problem reported by Matthias
	Vallentin)
	* src/util.h:14 check for the inclusion of stdlib.h for all known
	unix type of systems (problem reported by Matthias Vallentin)

2008-03-14 John Wu <John.Wu at ACM.org>
	* tests/Makefile.am: update the definition of test case 7 and 8
	for check-ibis to correct failure of these test cases, remove
	match-counts from large-tests (unnecessary because it is already
	run under the normal check)
	* win/ibis.sln: enable assembly debugging of DLL project in Debug
	mode

2008-03-13 John Wu <John.Wu at ACM.org>
	* src/qExpr.h:302 change the construct of qDiscreteRange that
	takes an array of doubles to sort the incoming values and remove
	duplicates
	* win/ibis.sln: change visual studio solutioni file to build dll
	and trydll by default in both Debug and Release mode
	* win/java.vcproj: failed to compile because of missing
	DLL_EXPORTS macro (problem reported by Mark Sordo)
	* src/query.h:286 remove static private member variable purgeFiles
	* src/util.h: remove static private memeber variable delimiters
	from ibis::selected and ibis::nameList, replace it with
	ibis::util::delimiters
	* src/query.cpp: change ibis::nameList and ibis::selected to use
	ibis::util::delimiters
	* src/part.cpp: adjust the printing statements in various
	histograming functions to make them produce timing information
	when ibis::gVerbose is larger than 0
	* src/part.cpp: add a query involving arithmetic expression in
	ibis::part::quickTest, to check for a problem encountered while
	running the JNI test program
	* tests/scripts/query-count.list: changed four expressions to use
	some arithmatic functions

2008-03-12 John Wu <John.Wu at ACM.org>
	* src/part.cpp: replace the calls to bitwise AND operator with the
	new count function in get2DDistributionI
	* src/query.cpp: do not generate the query string from an
	explicitly set query expression, add code to check for null
	condition string in printing statements, change SET_PREDICATE
	condition to base on whether member variable is a valid pointer.
	This is to accommodate the situation where Prabhat and Oliver sets
	a range condition with thousands of values of are requested in one
	query expression.
	* src/bitvector.cpp: lines 856 and 860 swapped, similarly, lines
	660 and 664 in src/bitvector64.cpp are also swapped.  This errors
	causes the variable nbits to be computed incorrectly, which can in
	turn cause other problems later.  This was the cause of a problem
	noticed by Prabhat.
	* src/query.cpp, src/column.h, src/part.h: replace @pre with @code
	and @endcode pairs
	* src/query.cpp:2878 remove the statement, it assumes the wrong
	return value

2008-03-11 John Wu <John.Wu at ACM.org>
	* src/part.h, src/part.cpp: add a new variation of
	get2DDistribution that computes equal-weight bins for a 2D
	histogram with specified number of bins as requested by Prabhat
	and Oliver
	* examples/ibis.cpp: modify print function to exercise the new
	get2DDistribution function
	* src/bitvector.h, src/bitvector.cpp: add function to count the
	number of bits that are 1 for two bitvectors.  This function can
	be used to by-pass the need to first compute a bitwise logical AND
	operation and reduce the time needed to compute histogram through
	bitmap indexes

2008-03-10 John Wu <John.Wu at ACM.org>
	* src/Doxyfile: change EXTRACT_ALL to YES, removed invalid command
	endpre from column.h, part.h, and query.cpp

2008-03-09 John Wu <John.Wu at ACM.org>
	* src/imesa.cpp:26 move variable b2 outside of the try-block so it
	can be used in the catch-block to clean up the bitvectors it held
	* src/isbiad.cpp: add try-catch-block to free array beq in both
	sbiad::construct1 and sbiad::construct2, this avoids memory leaks
	in case of exceptions

2008-03-08 John Wu <John.Wu at ACM.org>
	* src/index.cpp, src/ixbylt.cpp, src/ixfuzz.cpp, src/ixzona.cpp,
	src/ixfuge.cpp: add logging function calls to print out the
	progress information to help debugging
	* src/ixbylt.cpp, src/ixfuzz.cpp, src/ixzona.cpp, src/ixfuge.cpp:
	the two argument version of activateCoarse contain if-test on
	bits[i] == 0, but they should have been cbits[i] == 0.  This
	causes the two-level bitmap indexes to compute wrong answers in
	some cases, especially in large selt tests where bits[i] is more
	likely to have been used before.  In which case, cbits[i] will not
	be activated.  On the other hand, if bits[i] was never used
	(remaining 0), then it is possible for cbits[i] to be activated
	multiple times.  Each time during the activation, it also acquires
	a read lock on the file, however, it is only destroyed once which
	release the lock on the file once.  Therefore, it is possible for
	read locks on the index file to be left intact after the program
	completes.  This causes the clean up function in the file manager
	to fail to acquire a write lock and hung forever.

2008-03-07 John Wu <John.Wu at ACM.org>
	* src/part.cpp: change get2DDistributionI and coarsenBins to
	bypass the ibis::query layer to directly use the index object for
	query evaluations, add a try-catch block in get2DDistribution to
	clean up after the array of pointers to bitvectors
	* src/index.cpp: add more functions to print progress messages (to
	help with debugging the deadlock at the clean up stage, bug 8)
	* src/ixbylt.cpp, src/ixfuzz.cpp, src/ixzona.cpp, src/ixfuge.cpp:
	change remaining unsigned types to uint32_t in variables written
	to or read from files

2008-03-06 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: add a function (getJointDistribution) to
	excercise the new get2DDistribition
	* src/part.cpp: add calls to timing functions and logging
	functions in ibis::part::get2DDistributionI and get2DDistributionD

2008-03-05 John Wu <John.Wu at ACM.org>
	* src/column.h, src/column.cpp: change dataFileName and
	nullMaskName to return the file names in std::string instead of
	raw char*
	* src/column.h, src/column.cpp: add function indexSize
	* src/part.h, src/part.cpp: add function get1DDistribution and
	get2DDistribution with support functions to compute the histograms
	with the specified number of bins by using either the indexes or
	the base data depending on which are smaller (Requested by Probhat
	and Oliver)

2008-03-04 John Wu <John.Wu at ACM.org>
	* src/column.cpp: change ibis::column::loadIndex to modify the
	in-memory version index specification for the column to prevent it
	from trying to build an index again in the same run.  The
	configuration parameter "disableIndexOnFailure" affects whether
	the new index specification is written down to the metadata file
	-part.txt.
	* Makefile.am, tests/Makefile.am: reorganize the top-level targets
	for checking the correctness of FastBit into three levels of
	thoroughness: quick-check, check, and full-check.  Note:
	full-check replaces the earlier target check-all.

2008-03-03 John Wu <John.Wu at ACM.org>
	* src/bitvector.cpp:261 throw ibis::bad_alloc exception instead of
	just printing a warning message in case of memory allocation
	failure
	* src/array.h:107 add function incore to tell caller whether the
	content of the array is in memory
	* src/bitvector:159 add check in ibis::bitvector::compress to not
	attempt to compress bitvector not in memory.  Because the file
	associated with the array was opened read-only, modifying it will
	cause segmentation fault.
	* src/tafel.cpp: modify appendRow and readCSV to allow the caller
	to completely override the default delimiters (in response to
	question from Devin McNamara)
	* examples/ardea.cpp: add option -b to accept user to pass in a
	set of breaks (or more commonly known as delimiters) for the text
	file/lines to be parsed
	* src/ibin.h: add destructor to ibis::bak::grain and
	ibis::bak2::grain
	* src/util.h: delete getBuffer, add ibis::util::buffer, replace
	all calls to getBuffer to a buffer object.  This should provide
	better buffer management than using raw pointer.
	* src/mensa.h:271 explicitly cast col to use ibis::text::getString
	(same problem as reported by Ross Bates <rbates@gmail.com>)
	* src/idirekte.cpp: use mask to limit the number of elements
	examined in function ibis::direkte::construct
	* src/tafel.cpp: add check for '/' in ibis::tafel::write to remove
	the possbility of having a data partition name starting with '/'
	* tests/Makefile.am: add target test-text to check for categorical
	values to always check for the problem reported by Ross

2008-03-02 John Wu <John.Wu at ACM.org>
	* src/colValues.h: combines the cases for ibis::CATEGORY and
	ibis::text, remove the previous code for ibis::CATEGORY that
	returns null string (problem reported by Ross Bates
	<rbates@gmail.com>)
	* src/column.h:109 remove getString that returns char*, no longer
	used
	* src/category.h: add ibis::category::getString
	* tests/Makefile.am: add -z option to ibis commands with -b option
	* src/column.cpp:4375 check that idx is a valid pointer before
	using it  (a problem revealed with make check-all, which involves
	tests cases of relatively large datasets but a very restrictive
	memory upper bound)

2008-02-29 John Wu <John.Wu at ACM.org>
	* src/part.cpp: fix count2DBins and count3DBins had logical
	problems

2008-02-22 John Wu <John.Wu at ACM.org>
	* src/Doxyfile:1008 enable PREDEFINED macro expansion to make sure
	FASTBIT_DLLSPEC is blank so that doxygen can process the file
	correctly
	* src/bitvector.cpp: update the documentation of bitwise logical
	operations.

2008-02-21 John Wu <John.Wu at ACM.org>
	* src/part.cpp:4639 remove calls to function flushDir, then
	require a mutex lock on the file manager can cause deadlock
	* src/column.cpp: in evaluateRange, limit the scope of indexLock
	to reduce the chance of deadlock (when memory is running low)
	* src/column.h: add softWriteLock class to try to acquire lock
	when possible -- used in ibis::column::unloadIndex.  While working
	with an index (i.e., holding a read lock), it may be necessary to
	free some memory, which can invoke the unloadIndex function.
	Changing to a soft write lock would allow the invocation to
	complete and avoid deadlock.

2008-02-20 John Wu <John.Wu at ACM.org>
	* src/ifade.cpp:69&74 correct the offset set calculations, was
	only counting two leading integers.  This causes crashes when
	multi-level range and interval encodings are used without binning
	* src/part.cpp:5869 wrong formula for variable j -- this is
	probably the real cause of the problem observed by Jochen on Feb
	18
	* src/part.cpp: in queryTest and quickTest, call unloadIndex if
	query::evaluate returns an error
	* src/ibin.cpp: modify ibis::bin constructors to consistently fill
	the content of array offsets, ibis::fuge depends on this

2008-02-19 John Wu <John.Wu at ACM.org>
	* Makefile.am, tests/Makefile.am: change target all-tests to
	check-all and have it include both small and large tests
	* src/column.h: remove mutex lock from ibis::column::indexLock
	class, having it causes deadlocks when multiple threads tries to
	access the same index.

2008-02-18 John Wu <John.Wu at ACM.org>
	* src/column.cpp: add try-catch blocks in the error-handling code
	of ibis::column::evaluateRange (attempt to address problems
	observed by Jochen on Feb 18)
	* tests/Makefile.am: add test cases in large-sanity-check to limit
	the memory usage during build-in tests

2008-02-17 John Wu <John.Wu at ACM.org>
	* src/part.cpp: add try-catch block in selectInts, selectUInts,
	selectLongs, selectFloats, and selectDoubles to address the
	seg fault reported by Jochen on Feb 16.
	* src/query.cpp: update the use of variable newlock to make them
	more consistent across functions

2008-02-14 John Wu <John.Wu at ACM.org>
	* src/part.h, src/part.cpp: change <size_t> to <uint32_t> for
	get[1|2|3]DDistribution and supporting functions (requested by
	Prabhat)
	* src/bord.cpp, src/mensa.cpp: update to accomodate the changes to
	get[1|2|3]DDistribution

2008-02-14 John Wu <John.Wu at ACM.org>
	* src/part.cpp: change doScan and doCompare to return long
	* src/part.cpp:2890&2911 change calls to doIntCompare to
	doCompare<int64_t> and doCompare<uint64_t>
	* src/part.h, src/part.cpp: replace comparison functions for
	specific element types with the template functions
	* src/part.cpp:10486&10695: arguments constraints and name were in
	wrong order (problem first reported by Mr. Prabhat)
	* src/column.h: add virtual keyword to selectBytes and friends
	* src/part.cpp: check the return values of selectBytes and friends
	in getDistribution and varients
	* tests/test0.csv, tests/test1.csv: add decimal points to induce
	readcsv.cpp to interpret some columns as double.  This introduces
	one more type of data tested by the automatic test program
	* examples/ibis.cpp:223 swap cname and cond
	* tests/hist0, tests/hist1: add two files for testing
	histogramming functions
	* tests/Makefile.am: add two test cases under check-ibis to test
	histograming functions

2008-02-12 John Wu <John.Wu at ACM.org>
	* src/part.cpp:2815 add return value -4 when elementSize() is not
	a positive number
	* src/category.cpp, src/column.cpp, src/ibin.cpp, src/icegale.cpp,
	src/ifade.cpp, src/imesa.cpp, src/irange.cpp, src/ixambit.cpp,
	src/ixpack.cpp, src/ixpale.cpp, src/part.cpp: capture the return
	value of call to UnixSeek in an attempt to prevent a segementation
	fault encounted by Jochen who removes the base data files

2008-02-06 John Wu <John.Wu at ACM.org>
	* src/ibin.cpp: change all decisions regarding when to use
	single-valued bins to use than when there are number of distinct
	values is no more than 3/2 of specified bins.

2008-02-04 John Wu <John.Wu at ACM.org>
	* src/qExpr.cpp:1314-1318 comment out the section that converts a
	discrete range into a set of continuous ranges
	* src/index.h:192 add function evaluate for ibis::qDiscreteRange
	* src/part.h, src/column.h, src/part.cpp, src/column.cpp: add
	function to evaluate qDiscreteRange
	* tests/scripts/query-count.list:28&29 modified queries to use
	long lists
	* src/ibin.cpp:3467 col->type() == ibis::DOUBLE should be
	col->type != ibis::DOUBLE; update the block to produce at least
	one bin boundary per inner loop

2008-01-25 John Wu <John.Wu at ACM.org>
	* src/idirekte.cpp:482&483 add conditions to prevent casting
	negative floarting-point numbers to unsigned integers
	* tests/scripts/query-count.list: modify some of the 0 query
	boundaries to be negative numbers to exercise the above fix

2008-01-23 John Wu <John.Wu at ACM.org>
	* src/ibin.cpp:3929 add fudge factor of 3/2 to allow 50% more bins
	than specified when it can put each value in its own bin.  A user
	was specifying nbins=72 for a variable with 73 distinct values,
	and was confused about why FastBit put two values in the same
	bin.  This should avoid that type of situation.
	* src/index.cpp:534&841 add additional condition to make sure when
	ibis::index::create invokes ibis::direkte, the actual minimum is
	not a negative number.  In a case where the user specified
	minimum=0, but the actual minimum is -1, FastBit crashes when
	building an index

2008-01-16 John Wu <John.Wu at ACM.org>
	* src/column.cpp:4412 remove the line that assigns ierr from low.cnt()

2008-01-16 Jochen Schlosser <schlosser at zbh.uni-hamburg.de>
	* src/part.cpp:2791 add 'delete [] file;' before return statement,
	fix memory leak.  The problem is that the pointer returned by
	dataFileName is not deleted before exiting the function.  The same
	problem appears in a number of different places in src/part.cpp,
	src/parti.cpp and src/party.cpp.

2008-01-15 John Wu <John.Wu at ACM.org>
	* src/column.cpp: in column::evaluateRange, add better detection
	for the need of invoking doScan, add print statements
	* src/array_c.cpp: add statements to check for nil pointers in all
	constructors
	* src/fileManager.cpp: add statements to prevent printStatus from
	dereferencing nil pointers

2008-01-14 John Wu <John.Wu at ACM.org>
	* src/query.cpp: the return values of a few calls to
	ibis::part::doScan did not get passed back to the caller

2008-01-08 John Wu <John.Wu at ACM.org>
	* src/column.cpp: comment out most of the calls to purgeIndexFiles
	* src/part.cpp: add checks for the existence of raw data file before
	attempting to scan the values
	* src/query.h and src/query.cpp: add functioins to accept new
	forms of query conditions, allow return values to propergate from
	ibis::part and ibis::column functions to ibis::query::evaluate
	* examples/ibis.cpp: add code to check the return values of
	ibis::query::estimate and ibis::query::evaluate

2007-12-22 John Wu <John.Wu at ACM.org>
	* util.h: add explicit O_BINARY in the macros for file modes,
	without this option, the files are opened in text-mode under MinGW
	following the default on MS Windows systems (there are already
	explicit calls to _setmode under MS Visual Studio environment).
	* util.cpp:104 add execute bit to the mode for the directory
	created by ibis::util::makeDir, a recent change has messed this
	one up

2007-12-20 John Wu <John.Wu at ACM.org>
	* add FASTBIT_DLLSPEC to table.h, remove FASTBIT_DLLSPEC from
	explicit instantiation of array_t
	* update win/Win.mak and win/MinGW.mak to add dependcies for
	trydll.cpp

2007-12-14 John Wu <John.Wu at ACM.org>
	* add documentation to ibis::qContinuousRange

2007-12-14 John Wu <John.Wu at ACM.org>
	* change all DLLSPEC to FASTBIT_DLLSPEC
	* add win/MinGW.mak to compile under MinGW/MSYS with GNU g++

2007-12-12 John Wu <John.Wu at ACM.org>
	* add DLLSPEC to classes part, part::info, quey, query::result,
	all members of ibis::bundle hierarchy and many more
	* add win/trydll.cpp to test the new DLL library

2007-12-11 John Wu <John.Wu at ACM.org>
	* src/part.cpp:908 update the names used in readMeshShape to match
	those in readTDC
	* src/ibis.h: correct typos in the doxygen documentation

2007-12-10 John Wu <John.Wu at ACM.org>
	* src/capi.h:209 partitioin -> partition
	* examples/tcapi.h:56 missed dir (to match %s in fprintf)

2007-12-6 John Wu <John.Wu at ACM.org>
	* change all LOGGER(ibis::gVerbose) to LOGGER(0)
	* const.h:252 & 254 -- add definition of DLLSPEC
	* capi.h:46-54 -- add macro DLLSPEC because it does not include const.h

2007-10-29 John Wu <John.Wu at ACM.org>
	* src/index.cpp:539&846: switch > to <

2007-10-25 John Wu <John.Wu at ACM.org>
	* src/meshQuery.*: change getHitsAsRanges to getHitsAsBlocks

2007-10-24 John Wu <John.Wu at ACM.org>
	* src/capi.h and src/capi.cpp: add two functions to accept new
	data records.
	* examples/tcapi.c: add test case for the two new functions in C
	API
	* java: add new functions to allow a java program to input data to
	Fastbit, add a small test section to milky.cpp to be executed when
	no arguments are provided
	* src/tafel.cpp:740 add a line to assign value to tdesc
	* src/capi.cpp:84 add a block to check for the size of the data
	partition found

2007-10-18 John Wu <John.Wu at ACM.org>
	* src/bitvector.h:814&844, add check for nw > 0 *
	src/bitvector64.h:724&754, add check for nw > 0.  These two fix a
	problem caused by a particular word that causes
	ibis::bitvector::copy_runs to pass beyond the end of the array
	m_vec.  This can happen when the word beyond the last element of
	the m_vec is equivalent to a 0-length fill.  Out of 4 billion
	possible values in a 32-bit word just beyond the end of the array
	in a bitvector, 2 of them can do this and they are somehow used by
	the GNU C++ compiler on the intel-based Mac probably for some
	internal marking.

2007-10-17 John Wu <John.Wu at ACM.org>
	* src/tafel.cpp:901 add statement to prevent FastBit from
	attempting to build indexes for arbitrary strings (ibis::TEXT).
	To build an index for such type of column, FastBit requires
	something called a term-document list (matrix), which most users
	are unlikely to have.  This removes the warning messages when
	running examples/ardea.cpp without any arguments.

2007-10-16 John Wu <John.Wu at ACM.org>
	* java/Makefile.am: add the initial version of automake file
	* tests/scripts/matchCounts.pl: add additional check for error messages

2007-10-14 John Wu <John.Wu at ACM.org>
	* java/milky.java: add a test program that mirrors examples/tcapi.c

2007-10-13 John Wu <John.Wu at ACM.org>
	* capi.h, capi.cpp: update the C API in preparation for java
	interface

2007-10-11 John Wu <John.Wu at ACM.org>
	* src/resoruce.cpp: change all calls to logMessage to use LOGGER
	macro
	* src/predicate.l, src/predicate.y, src/qExpr.h: add operator %

2007-10-07 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp -- add reverseDeletion and option -k to exercise
	the function ibis::part::reactivate (change doDelete to doDeletion)
	* tests/Makefile.am -- add a small test case for -j and -k options
	of ibis, correct the test cases for check-tcapi
	* src/index.cpp -- in function create, add calls to compute the
	actual min and max when deciding what index to build for default
	options
	* src/array_t.cpp:187 -- add check for isFileMap, otherwise, some
	functions may attempt to modify files open in read-only mode
	* src/array_t.cpp: -- add checks for uninitialized m_begin
	* renamed all dataTable() to partition(), theTable to thePart

2007-10-07 Matthias Vallentin <vallentin at icsi.berkeley.edu>
	* src/parti.cpp:1261 -- change deactivate to reactivate

2007-10-07 John Wu <John.Wu at ACM.org>
	* src/tafel.cpp: line 912 -- add call to flushDir to remove stale
	references to files.  This may be related to a crash experienced
	by Matthias Vallentin, but I am not able reproduce the crash on
	a MacOS accessible to me.  Add a call to flushDir in
	ibis::part::append1 (in parti.cpp) to address the same problem.
	* tests/Makefile.am: add a second run of ardea to generate 200
	rows of test data for checking the three test programs.  In the
	previous version of the code, running ardea a second time would
	cause errors.

2007-10-05 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: add command line option -l for user to
	specify a file to log error messages

2007-10-04 John Wu <John.Wu at ACM.org>
	* src/util.h, ...: add functions ibis::util::getLogFile and
	ibis::util::setLogFile, add class ibis::util::logger, replace all
	explicit use of std::cout, std::cerr, and std::clog with calls to
	ibis::util::logger

2007-09-24 John Wu <John.Wu at ACM.org>
	* ixfuge.cpp: add this file to implement ibis::fuge class
	for interval-equality encoding with binning

2007-09-17 John Wu <John.Wu at ACM.org>
	* examples/ibis.cpp: add option -j to deactivate rows (reuse -z as
	secondary option to actually expunge the inactive rows)

2007-09-13 John Wu <John.Wu at ACM.org>
	* src/i*.cpp: change most references to col->dataTable->nRows() to
	nrows stored in the index class.  This change is required to make
	it possible to use index built earlier for a partition with a
	smaller number of rows.

2007-08-30 John Wu <John.Wu at ACM.org>
	* ibis::part: add five new functions to allow existing rows to be
	marked inactive or removed

2007-08-29 John Wu <John.Wu at ACM.org>
	* src/column.cpp: add code to make use of indexes built form
	smaller number of rows than currently available

2007-08-23 Matthias Vallentin <vallentin at icsi.berkeley.edu>
	* examples/ardea.cpp:53-54 fix wrong flags in usage example

2007-08-23 John Wu <John.Wu at ACM.org>
	* src/capi.h: add conditional macros to include config.h
	* tests/readcsv.cpp: add conditional macro __APPLE__ for compiling
	on Apple MacOS
	* tests/Makefile.am: change ++ to expr expression for
	compatibility with bourne shell

2007-08-22 John Wu <John.Wu at ACM.org>
	* src/bundle.cpp: in ibis::bundles::sort add special case for
	nPlain() == 0
	* src/mensa.cpp: change ibis::nameList to ibis::selected to
	correct problems with select clauses containing functions
	* examples/thula.cpp: terminate doQuery when the select clause
	contains functions (as indicated by the presence of '(')

2007-08-11 John Wu <John.Wu at ACM.org>
	* tests/Makefile.am: add case number in print out and count the
	number of successful test cases in match-counts

2007-08-10 John Wu <John.Wu at ACM.org>
	* array_t.cpp: change the variables used to store differences
	between two pointers to type size_t or off_t instead of uint32_t
	or int32_t

	* category.cpp: to avoid problems with bad data files, swap
	arguements 2 and 3, truncate large files that have extra records
	(keeping only the first nRows), check number of records in
	function fillIndex when working with a stable copy of the current
	data

	* tests/Makefile.am: add more operations to run for target check

	* doc/quickstart.html: currect typoes and formating mistakes

	* examples/ibis.cpp:2191 add test to prevent the call to indexSpec
	when the user did not specify an indexing option.  Without this
	check, it removes the existing indexing specification when nothing
	is specified.  Change all table to partition in the comments.

2007-08-09 John Wu <John.Wu at ACM.org>
	* tests/Makefile.am: add test case check-ardea to check for the
	problem found by Mark

	* query.cpp: add code to accept count(*) as select clause

	* ibis.cpp: allow multiple threads being used on MS windows; set
	the default number of threads to the number of processors online
	(minus one if more than than two processors are on line)

2007-08-09 Mark Sordo <msordo at yahoo-inc.com>
	* tafel.cpp:746 add tname != 0 to if test

2007-07-27 John Wu <John.Wu at ACM.org>
	* copied files into this new directory structure, start building a
	new set of autoconf/automake scripts.

	* designate the current version a0.7.
