2016-02-28 John Wu <John dot Wu at ACM dot org>
	* NEWS: update for the new release 2.0.3

2016-01-31 John Wu <John dot Wu at ACM dot org>
	* src/util.h: rename ibis::util::cleanDatasets to ibis::util::emptyCache
	* src/part.cpp, src/query.cpp, src/filter.cpp: add calls to
	ibis::util::emptyCache (previously, cleanDatasets)

2016-01-29 John Wu <John dot Wu at ACM dot org>
	* src/util.cpp: in util::readDouble check the length of the string
	before comparing against the constants
	* src/part.cpp: throw exception rather than return a negative
	error code after failing to allocate memory
	* src/query.h, src/query.cpp: add function storeErrorMesg,
	intending to record error message composed with ibis::util::logger
	* src/util.h: add member functions str and c_str to
	bis::util::logger class

2016-01-28 John Wu <John dot Wu at ACM dot org>
	* examples/thula.cpp: add statements to print out the command line
	arguments to aid debugging of trouble reported by check-sq2
	* src/fileManager.cpp, src/bundle.cpp: change all message prefix
	"Error" to "Warning"
	* src/bundle.cpp: in bundles::sort check every column for the
	minimum number of rows

2016-01-27 John Wu <John dot Wu at ACM dot org>
	* win/FlexLexer.h: use the new version from macPorts for flex 3.0
	* src/fromParser.yy, src/selectParser.yy, src/whereParser.yy:
	require bison version 2.7 and newer, use define api.namespace (the
	default flex and bison coming with Mac OS X is too old, the
	versions from macPorts have deprecated the previous macros used)
	* tests/readcsv.cpp: return -1 from readALine instead of 0

2016-01-26 John Wu <John dot Wu at ACM dot org>
	* contrib/fbmerge/fbmerge.cpp: include <unistd.h> for getopt
	* tests/Makefile.am: add flag -w to diff commands to ignore white
	spaces in comparisons
	* tests/readcsv.cpp: represent long integers as double or string
	based on the number of digits (characters) used, previous version
	was relative to sizeof(int)
	* src/*: update copyright year
	* tests/readcsv.cpp: attempt to skip line of spaces in readALine

2016-01-25 John Wu <John dot Wu at ACM dot org>
	* src/util.h: remove throw statement from destructor of writeLock
	* runconfig: update command to be used on MinGW (with correctly
	installed gcc+autoconf+pthread)
	* src/column.cpp, src/qExpr.cpp: do not attempt to use realtime
	clock functions on windows platform (following the examples in
	util.cpp)
	* src/qExpr.cpp: in function math::toUnixTime::eval, replace
	timegm with a more call to mktime
	* src/fileManager.cpp: add conditional macro to limit the use of
	getrlimit to unix systems

2016-01-23 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp:253 add writeLock per suggestion from Steven Enns
	<saenns at a9 dot com>

2015-11-07 John Wu <John dot Wu at ACM dot org>
	* examples/tiapi.c:281 change constant from 7 to 8 in the
	expression to compute the number of expected values

2015-11-06 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: change std::binder1st and std::binder2nd to
	std::bind1st and std::bind2nd

2015-11-05 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp, src/column.cpp: invoke
	ibis::fileManager::instance() to ensure the fileManager is
	initialized

2015-11-04 John Wu <John dot Wu at ACM dot org>
	* src/iapi.cpp: add documentation to clarify the operation of
	fastbit_iapi_extend_array

2015-10-30 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: comment out the code block in
	ibis::text::startPositions that fill .sp file when the data file
	is not present.  This is not necessarily a useful thing to do as
	pointed out by Steve Enns
	* src/dictionary.cpp: update doxygen documentation to clarify the
	merge function
	* src/mensa.cpp: in function ibis::mensa::mergeCategories, add
	calls to ibis::dictionary::sort to make sure the new dictionary
	used is sorted

2015-10-22 John Wu <John dot Wu at ACM dot org>
	* configure.ac: rearrange the test for java directory on mac to
	accommodate the recent changes in OS X 10.11

2015-10-01 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: in function column::purgeIndexFile comment out
	the code that delete .dic and .int files, this will allow the
	dictionaries supplied by users to be kept and will address the
	problem reported by Jon Strabala on 9/10
	* src/category.cpp: add code to adjust mask and write the new mask
	to the corresponding mask file in text::startPositions, to add the
	problem reported by masks with text values by Jon Strabala on 9/1
	* part.h, part.cpp, bord.cpp, tafel.cpp: rename part::writeString
	to be part::writeStrings, change its 1st argument to be a
	filename, use fwrite to write the string to take advantage of the
	system buffering.  This should address the performance problem
	observed by Jon Strabala (reported on 8/22)

2015-09-29 John Wu <John dot Wu at ACM dot org>
	* src/*.h, src/*.cpp: rename stringList to stringArray, typeList
	to typeArray, bufferList to bufferArray, to make it clear these
	types are using ibis::array_t
	* src/table.h: add type stringVector to create a new version of
	ibis::table::parseNames
	* src/fileManager.cpp: in getFile, surround tmp->enlarge call with
	try-catch blocks to enable retry to allocate memory (but only
	retry once)
	* src/fileManager.cpp: in function fileManager::flushDir, correct
	the error in the computation of offset (renamed to len1)
	* examples/ibis.cpp: move dirs to be a global variable, invoke
	flushDir in function clean_up

2015-09-28 John Wu <John dot Wu at ACM dot org>
	* src/fileManager.h: comment out the code for softWriteLock, it is
	not used
	* src/fileManager.cpp: make sure there is enough space to read the
	expected content before calling doRead, in an attempt to avoid
	deadlock ibis::fileManager::mutex
	* examples/ibis.cpp, examples/thula.cpp: replace the use of
	ibis::table::stringList with std::vector<const char*> for local
	variables -- these local variables were tiggering the invocation
	of fileManager::instance() before the parameters for the file
	manager is known

2015-09-12 John Wu <John dot Wu at ACM dot org>
	* src/fileManager.h, src/fileManager.cpp: add function
	getMaxOpenMmapFiles and getMaxMmapBytes per suggestion of Jon
	Stabala

2015-09-12 John Wu <John dot Wu at ACM dot org>
	* examples/ibis.cpp: change the number of test queries to be
	determined by -t option instead of a product of number of threads
	and the testing option, i.e., -t 100 will always generate 100
	random queries.  It will try to make sure each thread has two
	queries to process, so when the number of threads is large, it
	will still inscrease the number of random queries generated.
	* test/Makefile.am: change check-sq0 and check-sq1 to use multiple
	threads to speed up the test execution.  On a MacBook Pro,
	check-sq0 runs in 90 seconds.
	* examples/ibis.cpp: change all invocations of buildIndexes to use
	global variables indexingOptioins and build_index to control the
	type of index built and the number of threads used

2015-09-02 John Wu <John dot Wu at ACM dot org>
	* src/fileManger.cpp:634 move tests on OPEN_MAX and STREAM_MAX as
	fallback option of sysconf(_SC_OPEN_MAX), which should give the
	correct number of file descriptors available at runtime, the other
	macros contains static file descriptor limits predefined by POSIX
	standards (to address a problem observed by Jon Stabala)

2015-08-28 John Wu <John dot Wu at ACM dot org>
	* examples/ibis.cpp: minor reordering of states that read
	configuration files supplied from the command line

2015-08-23 John Wu <John dot Wu at ACM dot org>
	* src/utilidor.cpp: protect all calls to strcmp to prevent sending
	null pointer to it (strcmp(A, B) > 0 ==> (A != 0 && (B == 0 ||
	strcmp(A, B) > 0)), strcmp(A, B) >= 0 ==> ((A != 0 && (B == 0 ||
	strcmp(A, B) >= 0)) || (A == 0 && B == 0))
	* tests/Makefile.am: adapted changes from Jon Strabala to
	tests/Makefile.in to tests/Makefile.am to address problems with
	more strict sh script syntax under solaris derivatives (works on
	Mac OS X 10.10.5, will ask Jon to try the new Makefile.am)

2015-08-19 John Wu <John dot Wu at ACM dot org>
	* src/ibis.h: update the in-line documentation of
	ibis::index::INDEX_TYPE

2015-06-20 John Wu <John dot Wu at ACM dot org>
	* src/query.cpp, src/qExpr.cpp: fix problem associated with
	estimation of query processing costs, a problem behind the use
	case reported by Petr Velan on 5/7/2015

2015-06-14 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: add timer to all versions of index::activate at
	verboseness level 4

2015-05-08 John Wu <John dot Wu at ACM dot org>
	* examples/thula.cpp: update operator "distinct" to
	"countdistinct"

2015-05-01 John Wu <John dot Wu at ACM dot org>
	* src/util.h: change the read functions of sharedInt32 and
	sharedInt64 to invoke the mutex lock when atomic is not supported
	(per request of Jilong Wang)
	* src/util.h, configure.ac: add conditional macro for std::atomic,
	use std::atomic in sharedInt32 and sharedInt64 when
	HAVE_ATOMIC_TEMPLATE

2015-04-30 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: in function getColumn, the column name of the form
	'__xx' is interpreted as decimal numbers, but the function
	selectClause::fillNames that generated these names are producing
	hexadecimal numbers

2015-03-31 Petr Velan <petr dot velan at cesnet dot cz>
	* src/util.cpp: move the include <pwd.h> statement to after util.h
	is included because HAVE_GETPWUID is defined in util.h (which
	eventually get it from src/fastbit-config.h)

2015-03-30 John Wu <John dot Wu at ACM dot org>
	* configure.ac: add -DWITHOUT_FASTBIT_CONFIG_H when attempting to
	compile util.cpp for testing the compiler flags needed for popen
	and pclose

2015-03-25 John Wu <John dot Wu at ACM dot org>
	* src/const.h: on MINGW, stricmp should be _stricmp
	* src/util.cpp: add conditional compilation for pwd.h on MinGW

2015-03-24 John Wu <John dot Wu at ACM dot org>
	* runconfig: add special flags for compiling on cygwin and mingw

2015-03-21 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: countPages return at least one when the mask is
	not empty (this could happen when all the elements are on the same
	page)

2015-03-18 John Wu <John dot Wu at ACM dot org>
	* win: convert *.vcproj to *.vcxproj, update ibis.sln, rename the
	old file as ibis-vc8.sln

2015-03-11 John Wu <John dot Wu at ACM dot org>
	* src/iapi.cpp: add print statements to public functions

2015-03-04 John Wu <John dot Wu at ACM dot org>
	* src/colValues.cpp: review all sorting functions to check for the
	condition identified by Divya

2015-03-04 Divya Chandrasekar <chadivya at a9 dot com>
	* src/colValues.cpp: add statement to sort the second half of the
	list of strings

2015-03-02 John Wu <John dot Wu at ACM dot org>
	* example/tiapi.c:476 logical error, "nv=n;" should have been
	"nv=n+n;"
	* src/iapi.h: add functions
	fastbit_iapi_register_selection_as_bit_array and
	fastbit_iapi_extend_bit_array_with_selection

2015-02-28 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.h:781 nbits should have been active.nbits

2015-02-26 John Wu <John dot Wu at ACM dot org>
	* bitvector.cpp:602 ns should be nb - this causes bad bug in the
	indexes

2015-02-25 Justin Swanhart <greenlion at gmail dot com>
	* src/tafel.cpp: patch writeData to correctly print the number of
	rows handles
	* src/ibis.cpp: change reorder function to walk through all
	subdirectories

2015-02-24 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: prevent column::append to work with index only
	column, in copy constructor, copy index as well as data values
	* examples/tiapi.c: move the code that makes a3 index only in
	queryarray2 to after the doubling of data

2015-02-22 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: update bord::column::append to handle column type
	BIT following the new storage scheme

2015-02-21 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp:19568 "cols[i] == 0" should be "cols[i] != 0"
	* src/bord.cpp: change back the representation of BIT to separate
	the content of buffer from mask_ -- to address the problem of a BIT

2015-02-20 John Wu <John dot Wu at ACM dot org>
	* src/iapi.cpp: modify functions that frees an array to reduce the
	size of the global std::vector used to keep track of all arrays

2015-02-17 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: update to work with type BIT in the constructors
	of ibis::bord::column

2015-02-10 John Wu <John dot Wu at ACM dot org>
	* src/table.h, src/column.cpp: remove the unused global variable
	TYPECODE (avoid the need to update it for the addition of BIT
	type)
	* src/bitvector.h, src/bitvector64.h: add function appendByte
	* src/bord.cpp: change ibis::bord::column to use mask_ for columns
	with 0/1 values (i.e., bit values)
	* src/iapi.h, src/iapi.cpp: add function fastbit_iapi_extend_array

2015-02-09 John Wu <John dot Wu at ACM dot org>
	* src/capi.h, src/bord.h, src/bord.cpp: add type ibis::BIT

2015-02-06 John Wu <John dot Wu at ACM dot org>
	* src/capi.h, src/capi.cpp: add function fastbit_read_clock to
	report the current time in seconds

2015-02-05 John Wu <John dot Wu at ACM dot org>
	* runconfig: change the default path of FastBit install directory
	to not include fastbit
	* tests/scripts/fastbit-config.in: move notes into usage

2015-01-31 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: Chen's change is equivalent to
	text::readStrings, rename the original selectStrings to
	text::readStrings2 and the original text::readStrings to
	text::readStrings1, add new implementation of selectStrings in
	terms of readStrings1 and readStrings2

2015-01-30 Chen HANG <hangchen at diditaxi dot com dot cn>
	* src/category.cpp: change text::selectStrings to read values from
	.sp file instead of using a file map.  This improves performance
	when one or two entries are read from a text file

2015-01-28 John Wu <John dot Wu at ACM dot org>
	* src/table.h, src/mensa.cpp: add functions
	ibis::table::isValidName and ibis::table::consecrateName

2015-01-26 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: check for the integers read back from metadata
	file in function readMetaData

2015-01-25 John Wu <John dot Wu at ACM dot org>
	* src/iapi.cpp: correct the misuses of the declarations of
	mutexLock

2015-01-23 John Wu <John dot Wu at ACM dot org>
	* src/column.h, src/iapi.h: add notes about the names of the
	columns

2015-01-04 John Wu <John dot Wu at ACM dot org>
	* java/Makefile.am: change include_HEADERS to pkginclude_HEADERS to
	allow installing in standard system directory
	* tests/scripts/fastbit-config.in: add notes about including
	FastBit header files as <fastbit/ibis.h> instead of <ibis.h>

2014-01-04 Martin Hauke <mardnh at gmx.de>
	* src/Makefile.am: change include_HEADERS to pkginclude_HEADERS to
	allow installing in standard system directory

2014-12-28 John Wu <John dot Wu at ACM dot org>
	* tests/acmpub.v.a, tests/acmpub.v.b: modify the test dictionary
	to exercise the new feature in dictionary class
	* src/bord.cpp: update the use of dictionaries to allow 0 as a
	regular code word

2014-12-27 John Wu <John dot Wu at ACM dot org>
	* src/ikeywords.cpp: update functions to reflect the change in
	dictionary

2014-12-26 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.h, src/dictionary.cpp: modify the dictionary code
	to allow users to pass in an arbitrary combination of integers and
	strings, change the integer code for null values from 0 to -1
	(0xFFFFFFFFU in 32-bit unsigned integer format)

2014-12-16 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.cpp: change do_cnt() to use local variable to
	count the number of set bits so as to avoid the thread-safety
	issue, define FASTBIT_LAZY_INIT to be 1 (i.e., go back to lazy
	initialization in bitvectors, reversing the change makde on
	2014/08/06)

2014-12-15 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.cpp: in do_cnt() add code blocks to reduce the
	future cost of counting a bitvector of all 0s
	* src/query.cpp: in doEvaluate remove the test on ht.cnt() to
	avoid a problem reported by Steven Enns

2014-12-14 John Wu <John dot Wu at ACM dot org>
	* configure.ac: add test for presence of strptime
	* src/whereParser.yy: add conditional macro HAVE_STRPTIME to check
	for the presence of strptime before using it.  If strptime is not
	available, TO_UNIXTIME_LOCAL and TO_UNIXTIME_GMT will cause
	exceptions

2014-12-11 John Wu <John dot Wu at ACM dot org>
	* INSTALL: update to reflect the recent failed tests with intel,
	PGI and pathscale compilers on hopper.nersc.gov.  These compilers
	do not have support for either unique_ptr or unordered_map.

2014-12-07 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp:5641,5703 remove the check of noffsets > nkeys,
	to allow binned index with a single bitmap to be accepted (to
	address a problem reported by Junmin Gu)

2014-12-06 John Wu <John dot Wu at ACM dot org>
	* examples/tiapi.c: add fillarray2 and queryarray2 to exercise the
	case of indexing values that are all the same in an attempt to
	address the problem reported by Junmin Gu

2014-11-26 John Wu <John dot Wu at ACM dot org>
	* examples/ardea.cpp: invoke tablex::setASCIIDictionary to make
	use of the user supplied dictionary file
	* tests/Makefile.am: add test cases 13, 14 and 15 to exercise the
	text data with external ASCII dictionaries

2014-11-24 John Wu <John dot Wu at ACM dot org>
	* doc/footer.html: fix path to cowboy1a.gif
	* examples/thula.cpp: remove -q option, add explanation of -x
	option, per suggestion from Jon Strabala
	* examples/ibis.cpp: streamline output option to ensure the
	existing content of the output file is cleared before running any
	queries, this option leaves the output file empty when query
	operations encounter any error (suggested by Jon Strabala)

2014-11-19 John Wu <John dot Wu at ACM dot org>
	* tests/Makefile.am: add test cases based on input from Jon
	Strabala

2014-11-10 Jon Strabala <jon dot strabala at quantumsi dot com>
	* src/whereParser.yy: addressing the issue with tm_mday being left
	as 0 by the conversion functions

2014-11-07 John Wu <John dot Wu at ACM dot org>
	* COPYING: replace the license with the 3-clause BSD
	* configure.ac: mark the current soruce code as 2.0.0

2014-11-03 John Wu <John dot Wu at ACM dot org>
	* src/ifade.cpp, src/ixpack.cpp, src/ixpale.cpp, src/ixzone.cpp:
	add statement to log conditions leading to error code -13 to
	debug a problem reported by Fasika Daksa
	* src/whereParser.yy:1195 initialize tm_isdst to -1 to tell mktime
	to figure out whether DST is in effect (a solution found by Jon
	Strabala)
	* test/Makefile.am: add test case check-js2 based on examples from
	Jon Strabala

2014-11-01 John Wu <John dot Wu at ACM dot org>
	* src/whereParser.yy: update TO_UNIXTIME_LOCAL and TO_UNIXTIME_GMT
	based on suggestion from Jon Strabala
	* src/table.h, src/tafel.h, src/tafel.cpp: add functions
	getASCIIDictionary and setASCIIDictionary

2014-10-29 John Wu <John dot Wu at ACM dot org>
	* src/whereLexer.ll, src/whereParser.yy: change TO_UNIXTIME_LOCAL
	and TO_UNIXTIME_GMT to be the inverse of FROM_UNIXTIME_LOCAL and
	FROM_UNIXTIME_GMT
	* src/dictioinary.h, src/dictionary.cpp: rename print to toASCII
	and add function fromASCII to read the output of toASCII

2014-10-28 John Wu <John dot Wu at ACM dot org>
	* src/qExpr.h: assign the left child in the copy constructors of
	customFunction1 and stringFunction1 to avoid the problem seg fault
	reported by Jon Strabala when using TO_UNIXTIME_LOCAL

2014-10-25 John Wu <John dot Wu at ACM dot org>
	* src/qExpr.h, src/qExpr.cpp: add stringFunction1
	* src/selectParser.yy: change FORMAT_UNIXTIME_LOCAL and
	FORMAT_UNIXTIME_GMT to use the new stringFunction1 instead of
	treating them directives for printing only.  This change should
	make these function functions behave like existing functions and
	address the consistency issues raised by Jon Strabala.
	* src/part.h, src/part.cpp: add new vresion of function calculate
	to evaluate the string value functions

2014-10-24 John Wu <John dot Wu at ACM dot org>
	* src/*.cpp: change varaibles receiving return values of UnixWrite
	from int to off_t per suggestion of Zheng Yan from Harvard
	* src/colValues.cpp: sorting functions could leave the 2nd element
	of the array in the incorrect order (a problem reported by Petr
	Velan)

2014-10-23 John Wu <John dot Wu at ACM dot org>
	* src/selectParser.yy, src/selectLexer.ll: turn
	FORMAT_UNIXTIME_LOCAL and FORMAT_UNIXTIME_GMT into fixed tokens to
	avoid conflicts with two-argument functions
	* Makefile.am: put back bin_SCRIPTS line to install fastbit-config
	script (a problem pointed out by Gunther Weber)

2014-10-22 John Wu <John dot Wu at ACM dot org>
	* src/selectParser.yy: add warning message about ignoring
	formating directive on unix time stamps (following suggestion from
	Jon Strabala)

2014-10-21 John Wu <John dot Wu at ACM dot org>
	* src/qExpr.h, src/qExpr.cpp, src/whereLexer.ll,
	src/whereParser.yy: add an initial implementation of functions in
	where clause: from_unixtime_local, from_unixtime_gmt,
	to_unixtime_local, to_unixtime_gmt (based on discussion with Jon
	Strabala at QuantumSI dot com)
	* src/whereClause.h: add explanation of the four time handling
	functions.

2014-10-20 John Wu <John dot Wu at ACM dot org>
	* src/qExpr.h, src/qExpr.cpp, src/column.h, src/column.cpp: rename
	format_unixtime to unixTimeScribe
	* src/colValues.h, src/colValues.cpp: add struct
	ibis::colValues::format_unixtime to allow a column integer or
	floating-point values to be printed out as unix time stamps

2014-10-18 John Wu <John dot Wu at ACM dot org>
	* doc/ibisCommandLine.html: update document to reflect the currect
	ibis code
	* tests/scripts/star2002.sh: add script to the list of files
	distributed (the previous dataset used to produce the sample
	output in doc/ibisCommandLine.html was not captured and can not
	reproduced)
	* doc/*.html: change all html page to use https instead of http to
	avoid complains about mixed content
	* examples/ibis.cpp: add option -m to allow mesh queries to by
	pass tableSelect (pass make check)

2014-10-17 John Wu <John dot Wu at ACM dot org>
	* examples/ibis.cpp: add global variable independent_parts to
	indicate whether to process each data partition separately.  By
	default use tableSelect to treat all data partitions as a single
	data table, which should produce consistent results for the test
	cases from Jon Strabala

2014-10-16 John Wu <John dot Wu at ACM dot org>
	* src/util.h, src/dictionary.h: move the specialization of
	std::hash from util.h to dictionary.h to limit the files that
	needs to include header file hash_map

2014-10-13 John Wu <John dot Wu at ACM dot org>
	* configure.ac: extend the checking of std::unordered_map to avoid
	problem of unset variable
	* src/dictionary.h: add option to use __gnu_cxx::hash_map instead
	of std::unordered_map to accommodate order compilers

2014-10-05 John Wu <John dot Wu at ACM dot org>
	* src/selectClause.cpp:534 nexted to output numbers in hex format
	(which creates inconsistent internal names for referring to
	expressions without aliases)

2014-10-02 John Wu <John dot Wu at ACM dot org>
	* src/iapi.cpp:1742 remove bound == 0 (an error discovered by
	Junmin Gu)

2014-09-20 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: when activate a set of bitvectors between i and
	j, the offsets for buf was computed incorrectly, which leads to
	wrong bitvectors being reconstructed

2014-09-17 John Wu <John dot Wu at ACM dot org>
	* src/index.h: add a new variant of index::bitmapReader::read that
	takes array_t<uint32_t>
	* src/bitvector.h: add new constructor of bitvector that uses a
	part of an array_t object
	* src/index.cpp: use array_t<uint32_t> with index::bitmapReader so
	that temporary storage could be reference counted, to address the
	problem reported by Jerome Soumagne

2014-09-11 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: in function attachIndex, set the mask to all 1s
	if the existing mask is empty
	* src/bord.cpp: in constructor of bord from a list of columns, ask
	each column for the number of rows
	* src/bord.h: add function ibis::bord::column::getDataflag and
	ibis::bord::column::setDataflag

2014-09-10 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: in constructor of bord, check the validify of
	pointer buf before using (to address a problem reported by Jerome
	Soumagne)

2014-09-03 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: in ibis::text::stringSearch, adjust the LOGGER
	statements to prevent the end of file being recognied as an error
	(a problem reported by Marek mdmarek at gmail.com)
	* src/util.h: add ibis::util::flock to wrap around posix function
	flock, invoke util::flock to make sure an exclusive lock on the
	index is acquired before attempting to write the actual content of
	an index.  This is intended to address the problem reported by
	Petr Velan.

2014-09-02 John Wu <John dot Wu at ACM dot org>
	* src/tafel.cpp: clarify the inline documentation on type handling
	in parseNamesAndTypes

2014-08-21 John Wu <John dot Wu at ACM dot org>
	* configure.ac:587 add case for darwin per suggestion from mdmarek
	at gmail.com

2014-08-12 John Wu <John dot Wu at ACM dot org>
	* src/tafel.cpp:3991 specify the size of the substring to compare
	prefix "unsigned" (a problem reported by Li Jun
	<lijunli2598@gmail.com>), add code to deal with arbitrary number
	of spaces after "unsigned"

2014-08-06 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.cpp, src/bitvector64.cpp: change constructor to
	compute the sizes of bitvector and bitvector64 during construction
	to avoid thread-safety issue with do_cnt, a problem reported by
	Dominique Prunier

2014-08-02 John Wu <John dot Wu at ACM dot org>
	* src/fastbit-config.h.in: add HAVE_SNPRINTF, change all uses of
	snprintf to check HAVE_SNPRINTF

2014-07-29 John Wu <John dot Wu at ACM dot org>
	* src/capi.cpp: in fastbit_part_list::find, return a nil pointer
	if the existing data partition is not readable.  This
	re-examination was prompted by an error report from Mike Carter.
	* src/dictionary.cpp: Mike Carter indentified a case of support
	for unordered_map without member function reserve, remove the call
	to reserve in readKeys0

2014-07-28 John Wu <John dot Wu at ACM dot org>
	* src/util.h, src/part.cpp: add function ibis::util::cleanDatasets
	* src/query.cpp: in case of query evaluation failure, attempt to
	clean all datasets (by calling ibis::util::cleanDatasets) before
	try again

2014-07-27 John Wu <John dot Wu at ACM dot org>
	* src/part.h: add function clear to clear the existing content of
	a data partition if it is not in use (based on softWriteLock)
	* src/capi.cpp: change fastbit_part_list::clear to be a public
	function that invokes ibis::part::clear to remove the content
	before deleting the object
	* src/category.cpp: move mutex lock to cover the entire body of
	function category::prepareMembers

2014-07-26 John Wu <John dot Wu at ACM dot org>
	* src/parti.cpp: in function updateData, call emptyCache after the
	time stamp has been checked to avoid unnecessary changes and to
	protect the call with the write lock
	* src/capi.cpp: rearrange the mutex lock to better protect the
	shared/global variable _capi_tlist and _capi_tablex in capi.cpp --
	this addresses an issue of repeated creation and deletion of
	gov.lbl.fastbit.FastBit eventually leading to a seg fault because
	of the race condition between the garbage collector removing
	_capi_tlist and the other functions trying to use the same pointer
	* java/Makefile.am: add rules to create and install fastbitjni.jar
	into the library directory

2014-07-24 John Wu <John dot Wu at ACM dot org>
	* configure.ac: add subdirectory darwin to the list of include
	directories to combat problem of jni_md.h

2014-07-23 John Wu <John dot Wu at ACM dot org>
	* examples/tiapi.c:48 move declaration of variable j outside of
	the for loop to conform to C compiler requirement

2014-07-22 John Wu <John dot Wu at ACM dot org>
	* src/column.h, src/column.cpp: remove the check for nil data file
	name from column::selectValues because the underlying
	implementation actually deal with the case correctly previously,
	the recent changes were incorrect

2014-07-20 John Wu <John dot Wu at ACM dot org>
	* src/column.h, src/column.cpp: add member variable dataflag

2014-07-18 John Wu <John dot Wu at ACM dot org>
	* examples/tiapi.c: update to work with index only data column

2014-07-17 John Wu <John dot Wu at ACM dot org>
	* src/bord.h, src/bord.cpp: add new constructor to
	ibis::bord::column to accept data through FastBitReadExtArray
	* src/column.h: rename writeIndex to indexWrite, rename
	serialSizes to indexSerialSizes

2014-07-16 John Wu <John dot Wu at ACM dot org>
	* src/const.h: rename FastBitReadIntArray to FastBitReadBitmaps

2014-07-15 John Wu <John dot Wu at ACM dot org>
	* src/const.h: add FastBitReadExtArray as the generic function
	propotype for reading external data

2014-07-07 John Wu <John dot Wu at ACM dot org>
	* src/iapi.h: clearify the fact that the bitmap keys and offsets
	are used by FastBit data structures and therefore can not be freed
	by the caller until fastbit_iapi_free_all is called -- fixing a
	logical error in tiapi.c related to freeing keys and offsets
	prematurely

2014-06-29 John Wu <John dot Wu at ACM dot org>
	* src/ibin.h, src/irelic.h: add column object to the new
	constructors for ibis::bin and ibis::relic in order to set nrows
	* src/column.cpp: update attachIndex to use the new construtors
	* src/index.cpp: in the copy constructor, need to copy each
	bitvector in bits

2014-06-28 John Wu <John dot Wu at ACM dot org>
	* src/index.h: add virtual function dup to ibis::index class
	hierarchy, add copy constructors
	* src/column.cpp: in the copy constructor of ibis::column, invoke
	ibis::index::dup to copy the index when present
	* src/column.h: add function ibis::column::nRows()
	* src/index.cpp: add statements to set nrows in initBitmaps

2014-06-27 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: rename bheadle to breader, update versions of
	activate to make use breader for recreating the bitvectors
	* src/column.h, src/column.cpp: add function attachIndex for
	associating and index with a column
	* src/iapi.h, src/iapi.cpp: add fastbit_selection_osr to replace
	fastbit_selection_create, add fastbit_iapi_attach_index to
	associate an index with an array
	* src/ibin.cpp:6016 check for nobs==1 to prevent array out of
	bounds problems
	* src/iapi.cpp: revise implementation of
	fastbit_iapi_deconstruct_index to explicit copy the values from
	array_t objects to the output buffers
	* src/iapi.cpp:1491 _4 was in the wrong place
	* src/fileManager.h, src/array_t.h: add function release to give
	the space to user as a raw pointer.
	* src/iapi.h: remove the size information from
	fastbit_iapi_build_index, change fastbit_iapi_deconstruct_index to
	allocate the required memory
	* example/tiapi.c: modify the example to use the callback function
	FastBitReadIntArray to avoid passing all bitmaps to construct the
	index

2014-06-26 John Wu <John dot Wu at ACM dot org>
	* src/iapi.h, src/iapi.cpp: add functions to deal with indexes
	* example/ibis.cpp: increase gVerbose when using
	ibis::bundle::print to generate output to files (to keep the
	regression suite running error free)
	* src/const.h: add function type FastBitReadIntArray
	* src/index.h: add class ibis::index::bitmapReader based on
	FastBitReadIntArray, add a new version of initBitmaps that accept
	FastBitReadIntArray (and initializes a bitmapReader object)
	* src/irelic.h, src/ibin.h: add constructors that makes use of the
	new initBitmaps
	* src/column.cpp: modify loadIndex to not quit when thePart is nil
	* src/irelic.cpp, src/ibin.cpp: modify the construct to work with
	in-memory data, as opposed to requiring explicit invocation of the
	special construction function

2014-06-25 John Wu <John dot Wu at ACM dot org>
	* src/index.h: add function serialSizes to capture the sizes of
	the three arrays to be generated by the function write.  This is
	necessary for the IAPI to give users a chance to allocate the
	correct sizes for the output buffers

2014-06-19 John Wu <John dot Wu at ACM dot org>
	* src/bundles.cpp: limit the number of rows printed from
	bundles::print - in an attempt to understand the out-of-memory
	fault reported by Alan Kemp <alan at irisns.com>
	* src/bord.cpp: limit the number of rows printed from bord::merge
	* src/bordm.cpp: add in-line documentation to bord::limit and
	bord::column::limit, change column::limit to invoke nosharing only
	if the content has been modified

2014-06-17 John Wu <John dot Wu at ACM dot org>
	* src/bundle.cpp:1466 rewrite the conditional test to capture the
	case where the name cn do not match c->name() -- to address a
	problem reported by Hendrik Heinemann <hendrik.heinemann at
	questback.com>

2014-06-15 John Wu <John dot Wu at ACM dot org>
	* src/bundles.cpp:1500 move the LOGGER statement before push_back

2014-05-22 John Wu <John dot Wu at ACM dot org>
	* autoconfig.ac: remove the prefix 'ibis' from the version number
	based on a recommendation from lscott@kiemaadvisors.com

2014-05-16 Zhongbo Tian <windreamer at gmail dot com>
	* src/mensa.cpp: fix the order of bound check in
	ibis::mensa::cursor::fetch

2014-05-15 John Wu <John dot Wu at ACM dot org>
	* src/mensa.cpp: correct the problems with getColumnAsTTTs (a
	problem identified by Zhongbo Tian
	* src/bord.cpp: switch std::copy to memcpy when the types match in
	getColumnAsTTTs
	* src/selectClause.cpp:197 remove the comparison involving aggr_
	to address a problem reported by Bernd Jaenichen

2014-05-14 John Wu <John dot Wu at ACM dot org>
	* src/countQuery.cpp:425, src/query.cpp:2732 (high.sloppyCount() >
	0) should be (low.sloppyCount() > 0) (an error discovered by a
	test case from Junmin Gu)

2014-05-11 John Wu <John dot Wu at ACM dot org>
	* src/ibin.cpp: modify bin::print to always print the last bin

2014-05-10 John Wu <John dot Wu at ACM dot org>
	* src/index.h: move printHeader to be a public static member
	function
	* src/ibin.cpp: check whether col is nil before use
	* src/column.h: move template functions for computing min and max
	to be static member functions

2014-05-09 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: change index::create to separate out the portion
	about reading an existing index, allow c=0 in this case

2014-04-29 John Wu <John dot Wu at ACM dot org>
	* src/ibin.cpp: in bin::parsePrec, change the default precision to
	2 digits; in constructors of ibis::bin, change index spec of nil
	pointer, empty string, "automatic" or "default" to invoke
	mapGranule, which effectively means <binning precision=2/>

2014-04-14 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: regenerate empty bitmaps when reading from a file
	(the changes on 4/10 neglected some branches of the activate functions)

2014-04-11 John Wu <John dot Wu at ACM dot org>
	* src/array_t.cpp: in function reserve, add call to memset to put
	0 in the newly allocated memory
	* configure.ac: add --with-debug=d to control -DDEBUG option in
	Makefiles (per discussion with Alex Romosan)

2014-04-10 John Wu <John dot Wu at ACM dot org>
	* examples/tiapi.c: add initialization for nmax and msglvl
	* src/index.cpp: regenerate an in-memory bitvector (of all 0s)
	when the index file does not record anything for the bitvector

2014-04-10 Zhongbo Tian <windreamer at gmail dot com>
	* src/bord.cpp: add code to handle string valued column
	(in-memory) without a dictionary
	* src/mensa.cpp: remove call to getValuesArray on string-valued
	columns

2014-04-08 John Wu <John dot Wu at ACM dot org>
	* src/iapi.h, src/iapi.cpp: rename the public functions of IAPI to
	be more consistent, fix a couple of obvious bugs in iapi.cpp

2014-04-07 John Wu <John dot Wu at ACM dot org>
	* runconfig: add entry for edison, determined that intel CC can
	not support std::unique_ptr, have to use GNU CC

2014-03-30 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: reverse the change on 3/24, did not spot that
	fname was deleted once already, the new statement creates a double
	deletion problem

2014-03-24 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp:1259 add statement to delete fname (all existing
	indexing classes allocate space for it through
	ibis::util::strnewdup)

2014-03-19 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.cpp: add timer to ibis::dictionary::write to
	mirror the timer in ibis::dictionary::read

2014-03-17 Sean McNamara <Sean.McNamara at Webtrends dot com>
	* configure.ac: fix problem with AC_MSG_ERROR, add test to try
	c++0x when c++11 is not available

2014-03-13 John Wu <John dot Wu at ACM dot org>
	* src/idirekte.cpp:117 set all bits of bits[popu] to 1s, to avoid
	invoking ibis::column::getNullMask which needs a mutex lock.
	Addressing the mutex lock problem reported by Sean McNamara

2014-03-13 John Wu <John dot Wu at ACM dot org>
	* selectClause.h: minor changes to address warnings from doxygen

2014-03-07 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.cpp:421 ith string in the alphabetic order should
	be recorded as string ik in raw_

2014-03-04 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.h: add ibis::bitvector::pit

2014-02-21 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp:214 neglected to set amask

2014-02-20 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: modify versions of column::searchSorted to make
	use of the function getValuesArray to work with in-memory data
	* src/iroster.cpp: in roster::icSort make use of
	column::getValuesArray when column::dataFileName can not generate
	a valid file name
	* src/qExpr.cpp: change versions of function overlap to return
	true when the two arguments do not form a valid range (the ranges
	may be invalid when the lower and upper bounds of a column has not
	been set)

2014-02-19 John Wu <John dot Wu at ACM dot org>
	* src/iapi.h, src/iapi.cpp: add functions to work with coordinates
	* src/bord.cpp: make a copy of columns from the user provided list
	of columns, becaue the destructor of ibis::part delete the columns
	it knows about
	* examples/tiapi.c: add tester for IAPI

2014-02-18 John Wu <John dot Wu at ACM dot org>
	* src/bord.h: add member variable shape to ibis::bord::column, add
	a new constructor

2014-02-17 John Wu <John dot Wu at ACM dot org>
	* src/iapi.h, src/iapi.cpp: add a new in-memory API that
	constructs query expressions through function calls (without a
	parser of strings)

2014-02-16 John Wu <John dot Wu at ACM dot org>
	* src/bord.h, src/bord.cpp: add constructor to take a list of
	columns as input

2014-02-12 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: check argument 1 (col) in the constructor of
	ibis::column::indexLock, do nothing when col == 0 (this allows a
	nil column object to be used to create an index lock, however,
	that index lock will do nothing)

2014-02-11 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp, src/idirekte.cpp: check for col being nil

2014-02-10 John Wu <John dot Wu at ACM dot org>
	* src/selectClause.cpp:397 change <= to <, the equal sign allows
	a selection expression without an aggregator to be declared as
	being separable, which violates the intention of the function
	(this addresses the problem reported by Sean McNamara on 2/7/2014)

2014-02-06 John Wu <John dot Wu at ACM dot org>
	* src/column.h, src/column.cpp: add function fullname to deal with
	the printing of column names
	* src/irelic.cpp, src/ibin.cpp: allow the read function and some
	constructors to proceed with null col value
	* src/column.h: change column::mutexLock to allow the first
	argument of the constructor to be nil
	* src/index.cpp: change versions of function activate to allow the
	member variable col to be nil

2014-02-05 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.cpp: clean up the function mergeBuffers

2014-02-04 John Wu <John dot Wu at ACM dot org>
	* configure.ac: change uint32_t to unsigned in the sample test for
	c++11 flag
	* src/dictionary.h, src/dictionary.cpp: add function mergeBuffers
	and make use of mergeBuffers in function write to reduce I/O time

2014-02-03 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.h: add function dictionary::print
	* src/dictionary.cpp: function readKeys0 has an off-by-1 problem
	that causes it to read the previous version of dictionary
	incorrectly (with integer 1 left undefined, found in debugging a
	test case reported by Alex Romosan)

2014-02-02 John Wu <John dot Wu at ACM dot org>
	* configure.ac: modify the block that try to compile src/util.cpp
	to use a single statement on std::unordered_map (to minimize
	dependencies in util.h, a problem reported by Alex Romosan)

2014-01-27 John Wu <John dot Wu at ACM dot org>
	* tests/scripts/fastbit-config.in: add option --cxxextra to
	display the extra option required to compile C++ code

2014-01-24 John Wu <John dot Wu at ACM dot org>
	* configure.ac: add statements to check if --std=c++11 is needed
	(to remove the need to pass extra flags from command line)
	* src/index.cpp: allow .idx filename to be used directly without
	modification (promised in the inline documentation, but not
	implemented)
	* src/tests/scripts/fastbit-config: add option -cxxflags
	* src/dictionary.h, src/dictionary.cpp: change the offsets to be
	64-bit long in dictionary files, introduce new version tag for the
	dictionary files, add support for reading previous versions of
	dictionary files

2014-01-22 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.h: a new implementation based on
	std::unordered_map with murmurhash for strings

2014-01-21 John Wu <John dot Wu at ACM dot org>
	* src/utilidor.cpp:1598 keys[i] should be ktmp, otherwise the
	arrays are not sorted (a serious flaw)

2014-01-20 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.h, src/dictionary.cpp: implement the dictionary
	based on unordered_map (which requires -std=c++11)
	* src/utilidor.cpp: rename sortStrings_quick to sortStrings, and
	make the function visible outside of utilidor.cpp (to be used on
	dictionary.cpp:554 in the function dictionary::sort)

2014-01-19 John Wu <John dot Wu at ACM dot org>
	* src/*.h, src/*.cpp, examples/*.cpp: replace include file
	string.h with cstring, replace auto_ptr with unqiue_ptr

2014-01-17 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.h, src/dictionary.cpp: add function appendOrdered
	to work with strings that are already sorted

2014-01-11 John Wu <John dot Wu at ACM dot org>
	* src/ibin.cpp:4863 modify the last bin boundary if it is less
	than or equal to the nominal upper bound
	* src/part.cpp: print the queries out from buildQueryList when the
	verboseness level is 5 or more
	* src/column.cpp:5767 add statement to assign value to ierr before
	returning (fix the problem revealed by make full-check)

2014-01-10 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp:876 only checked the 1st character of the index
	specificiation, add code to skip all leading blank spaces

2014-01-08 John Wu <John dot Wu at ACM dot org>
	* src/tafel.cpp:2450 change the type of tmp from uint32_t to
	size_t to accomodate large memory buffers

2014-01-07 John Wu <John dot Wu at ACM dot org>
	* src/tafel.h, src/tafel.cpp: rename reserveSpace to reserveBuffer
	* tests/jrf.cpp: use double to capture the return value of
	fileManager::currentCacheSize, previous version of using 32-bit
	integers which overflows on a machine with more than 4GB of memory

2013-12-28 John Wu <John dot Wu at ACM dot org>
	* src/resource.h, src/resource.cpp: modify function resource::read
	to return an error code instead of printing out warning messages
	because the mechanism for printing message could invoke to
	function ibis::gParameter which causes recursive calls to a static
	constructor in ibis::gParameter
	* src/resource.cpp: in the default constructor and
	ibis::gParameters, avoid attempt to read the default configuration
	files.  Instead, change the documentation to require the user to
	explicitly call ibis::resource::read or ibis::init to incorporate
	use-provided configuration parameters

2013-12-27 John Wu <John dot Wu at ACM dot org>
	* src/resource.h: change the default constructor to invoke
	function read as promised in the class documentation

2013-12-09 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: in function loadIndex change
	disableIndexOnFailure to retryIndexOnFailure, i.e., the change the
	default option to not retry index building
	* src/column.cpp: change searchSortedICC and searchSortedICD to
	use ibis::util::find instead of the simple binary search function,
	allow each id to be matches with multiple rows

2013-12-04 John Wu <John dot Wu at ACM dot org>
	* src/whereClause.cpp: in verifyExpr convert the string value of a
	qString expression to a number if the column named is of a numeric
	type
	* src/utilidor.h, src/utilidor.cpp: add a variation of function
	find that take a starting position, use array values to project
	the expected position instead of using the straightforward binary
	search (have to be separate from the template ibis::array_t
	because there are types of array_t that can not support addition,
	subtraction or casting to double)
	* src/iroster.cpp: change icSearch to use the new ibis::util::find
	instead of simple loops

2013-12-03 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: in evaluateRange check the cost before
	converting a discrete range to a continuous range
	* src/category.cpp: allow null strings as arguments to
	stringSearch

2013-12-02 John Wu <John dot Wu at ACM dot org>
	* src/iroster.cpp: in icSearch and oocSearch add one more attempt
	to read the .ind file into memory

2013-11-27 John Wu <John dot Wu at ACM dot org>
	* src/column.h: add functions hasIndex and hasRoster
	* src/column.cpp: check the existence of ibis::roster before
	attempting to use it
	* src/column.cpp: adjust the estimated cost for qDiscreteRange
	assuming numbers are uniformly distributed
	* src/category.cpp: add timers to stringSearch and keywordSearch

2013-11-26 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: streamline the evaluation options in evaluating
	qDiscreteRange, add a cost evaluation before using ibis::roster
	* tests/readcsv.cpp: remove the character / from the data set name

2013-11-25 John Wu <John dot Wu at ACM dot org>
	* src/query.h, src/query.cpp: add member function
	query::addConditions
	* src/whereClause.h, src/whereClause.cpp: add functions
	whereClause::addExpr and whereClause::addConditions
	* tests/readcsv.cpp: add code to parse infinity and NaN as doubles
	* src/fileManager.cpp: check RLIM_DATA when setting the maxBytes
	(to avoid the problem on systems with low per user limit)

2013-11-18 John Wu <John dot Wu at ACM dot org>
	* doc/quickstart.html: update the number of hits for query "a = b
	and c < 10" to be 9 instead of 10 (an error spotted by Neils
	Johnson <nielsjohnson at gmail.com>)

2013-11-15 John Wu <John dot Wu at ACM dot org>
	* src/column.h, src/column.cpp: add extra check for ordering of
	the values in actualMinMax

2013-11-14 John Wu <John dot Wu at ACM dot org>
	* src/parti.cpp:289 add block to check for the case of sorted
	input data
	* src/column.cpp: replace numeric_limits<T>::min() with an
	equivalent of numeric_limits<T>::lowest()

2013-10-31 John Wu <John dot Wu at ACM dot org>
	* src/tafel.cpp: add function writeData to perform the actual
	write operations, change the original write to manage the calls to
	writeData
	* examples/ardea.cpp: add option -p to allow the users to specify
	a maximum size for data partitions

2013-10-30 John Wu <John dot Wu at ACM dot org>
	* src/part.h, src/part.cpp: add argument voffset to the arguments
	of writeColumn and friends, change their return value to be the
	numbe of elements written

2013-10-29 John Wu <John dot Wu at ACM dot org>
	* src/table.h: rename tablex::capacity to tablex::bufferCapacity,
	add variables maxpart and access functions

2013-10-25 John Wu <John dot Wu at ACM dot org>
	* src/part.h, src/part.cpp: move ibis::part::cleaner::operator()
	to part.cpp, add a warning message

2013-10-21 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.h:833 neglected to flip the bits
	* src/column.cpp: print warning about trywrlock failure only when
	gVerbose > 2

2013-10-15 John Wu <John dot Wu at ACM dot org>
	* src/array_t.cpp: array_t<T>::deepCopy has an incorrect test for
	the validity of the incoming array (which causes the error
	reported by Wang JiLong <wang.jilong at huawei.com>, original
	email message is at
	<https://hpcrdm.lbl.gov/pipermail/fastbit-users/2013-October/001810.html>)

2013-10-14 John Wu <John dot Wu at ACM dot org>
	* src/qExpr.h, src/qExpr.cpp, src/whereParser.yy: add support for
	keyword EXISTS to test the presence of a named column

2013-10-11 John Wu <John dot Wu at ACM dot org>
	* examples/tcapi.c: allocate rids through malloc explicitly

2013-10-09 John Wu <John dot Wu at ACM dot org>
	* src/query.h, src/query.cpp: change the term "attribute" to
	"column" in the in-line documentation

2013-10-06 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.h: update the inline documentation for functions
	of bitvector::iterator and bitvector::const_iterator

2013-09-26 John Wu <John dot Wu at ACM dot org>
	* src/quaere.h: update the inline documentation of some functions
	* src/query.h, src/query.cpp: remove mentioning of operations in
	the select clauses because they are not well supported, redirect
	users to use ibis::quaere

2013-09-08 John Wu <John dot Wu at ACM dot org>
	* configure.ac: add test for /usr/bin/java when --with-java option
	is not specified
	* runconfig: add case for sith, update case for titan to use GNU
	compilers

2013-08-28 John Wu <John dot Wu at ACM dot org>
	* src/part.h, src/query.cpp: rename ibis::part::hasRIDs to
	ibis::part::explicitRIDs

2013-08-21 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: add print statement to ibis::index::clear (need
	to refrain from call pure virtual functions)
	* src/util.cpp: in constructor of timer class, move the new
	statement inside the code body

2013-08-20 John Wu <John dot Wu at ACM dot org>
	* src/column.h, src/column.cpp: add fucntion writeIndex
	* src/index.h, src/irelic.h, src/irelic.cpp, src/ibin.h,
	src/ibin.cpp, idirekte.h, idirekte.cpp, ikeywords.h,
	ikeywords.cpp: add function write that produce three arrays in
	memory
	* java/FastBit.c: add #include <stdlib.h>

2013-07-24 John Wu <John dot Wu at ACM dot org>
	* src/query.cpp, src/quaere.cpp: convert select * into a concrete
	list of names based on the current data partition (per request of
	Amihay Gonen)

2013-07-10 John Wu <John dot Wu at ACM dot org>
	* src/ikeywords.h: update the documentation about indexing
	set-valued columns
	* src/selectParser.yy: change keyword "distinct" to "countd" to
	avoid the confusion with the standard SQL keyword distinct
	* tests/Makefile.am: change distinct to countd in tests

2013-06-20 John Wu <John dot Wu at ACM dot org>
	* src/ibin.cpp:4491 retry fopen with the file assumed to be in the
	current data directory of the data partition (to avoid assuming
	full path)
	* src/irelic.cpp: initialize offset64 in the special case
	constructors
	* src/ixfuzz.cpp:769 add test for both offset64 and offset32 being
	empty (per suggestion of Per Christian Engberg)
	* src/whereClause.cpp, src/selectClause.cpp: add macro
	FASTBIT_HALT_ON_PARSER_ERROR to satisfy the request from Steven
	Enns

2013-06-19 John Wu <John dot Wu at ACM dot org>
	* src/ibin.cpp:6504 add conditional compilation macro
	FASTBIT_ESTIMATION_IGNORE_COST to allow estimation to always
	continue with the equality binned index

2013-06-15 John Wu <John dot Wu at ACM dot org>
	* src/ibin.cpp:3529-3530 free the granule object to address the
	memory leak problem reported by Amihay Gonen

2013-06-14 John Wu <John dot Wu at ACM dot org>
	* src/util.cpp:2132 replace fprintf with fwrite (in hope to avoid
	deadlock during closing of the logger object on windows, not sure
	what exactly was going on, but have seen it stuck in fprintf)
	* src/category.cpp:1473 initialize nold to 0 to avoid problem with
	incorrect values later
	* src/ibin.cpp: in bin::convertGranules add code to delete the bit
	vectors that are not copied to bits - they were lost in the
	previous version

2013-06-13 John Wu <John dot Wu at ACM dot org>
	* src/parti.cpp: in function append1 move the section of code that
	clears the existing list of columns to be after the call of
	appendToBackup (to provide an opportunity for appendToBackup to
	produce a combined list of columns, a problem reported by Mark
	Hansen mark at digitalbrandmine.com)
	* src/column.cpp:5448 assign tmp to 0 after delete statement (to
	prevent it being used again)
	* src/category.cpp: in function startPositions, add code to deal
	with empty data file

2013-06-12 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: change call to logWarning in actualMinMax to use
	LOGGER

2013-06-07 John Wu <John dot Wu at ACM dot org>
	* doc/ibisCommandLine.html: update the description of the select
	clause

2013-06-02 John Wu <John dot Wu at ACM dot org>
	* java/gov/lbl/fastbit/FastBitStringWriter.java: in addRow change
	getAndAdd to addAndGet to get the new offset instead of the old
	* src/capi.cpp: in function fastbit_part_list::find invoke
	part::updateData to make sure the information about the data
	partition is up-to-date (to address a problem reported by Bailu
	Ding)
	* src/query.cpp:1849 change uid to user to allow the default user
	name to be used for creating new query token

2013-06-01 John Wu <John dot Wu at ACM dot org>
	* java/gov/lbl/fastbit/FastBitStringWriter.java: add code to deal
	with the initial value of the offset to be written to .sp file
	(a problem reported by Bailu Ding)

2013-05-30 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: some versions of bord::column::evaluateRange
	negected to check if an index is available

2013-05-28 John Wu <John dot Wu at ACM dot org>
	* src/countQuery.cpp, src/query.cpp: refine the retturn value from
	LOGICAL_OR (previous version hides error from the right-operand)
	* src/whereClause.h: add doxygen documentation about experessions
	for pattern searches and keyword searches

2013-05-27 John Wu <John dot Wu at ACM dot org>
	* src/countQuery.cpp, src/query.cpp: the cases for LOGICAL_OR
	returns the wrong flag, an error pointed out by Steven Enns
	<saenns at a9.com>
	* tests/Makefile.am: modify check-ibis case 2 to exercise the
	combination of operators used by Steven

2013-05-25 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp:1195 add code to update the min and max of a
	collumn

2013-05-08 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: add timers to ibis::index::create to print the
	time used to create and write the index (per request of Qian Sun)

2013-05-08 John Wu <John dot Wu at ACM dot org>
	* src/bitvector64.h, src/bitvector64.cpp: add function getBit
	* src/query.h, src/query.cpp: add functions getCandidateVector and
	getCandidateRows (per request of Nan Zhou <nanzhou1987 at
	hotmail.com>)
	* src/bitvector.h, src/bitvector64.h: modify copy_runs and
	copy_runsn to skip zero-length fills

2013-05-07 John Wu <John dot Wu at ACM dot org>
	* src/bitvector64.cpp: add extra checks in bitwise logical
	operations to deal with 0-length fills (a problem reported by
	Srikanth Sundarrajan <srikanth.sundarrajan at inmobi.com>)

2013-05-06 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.h, src/bitvector.cpp: add function getBit at the
	request of Suprio Ray <suprio at cs.toronto.edu>

2013-04-09 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: add function text::readStrings to deal with
	the case where the content of .sp file can not be read into memory

2013-04-08 John Wu <John dot Wu at ACM dot org>
	* src/colValues.cpp, src/selectParser.yy: add call to fabs when
	computing variance and standard deviation to avoid numerical
	problems (per discussion with Alexandre Maurel)
	* tests/Makefile.am: update really-small to exercise the modified
	versions of standard deviation
	* src/fileManager.cpp: remove the restrict on memory usage based
	ULONG_MAX (when ULONG is a 32-bit int, this unnecessarily limits
	the memory use to 3GB)

2013-04-04 John Wu <John dot Wu at ACM dot org>
	* src/fileManager.cpp: change the verboseness level to 2 for
	printing fileManager construction and destruction message

2013-04-03 John Wu <John dot Wu at ACM dot org>
	* examples/tcapi.c: add code to use fastbit_get_result_row_ids
	* java/FastBit.c:
	Java_gov_lbl_fastbit_FastBit_get_1result_1row_1ids mistakenly
	passed jintArray as uint32_t* to fastbit_get_result_row_ids

2013-04-01 John Wu <John dot Wu at ACM dot org>
	* java/gov/lbl/fastbitFastBit.java, java/FastBit.h,
	java/FastBit.c: add function fastbit_get_result_row_ids

2013-03-31 John Wu <John dot Wu at ACM dot org>
	* src/capi.h, src/capi.cpp: add function
	fastbit_get_result_row_ids

2013-03-28 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: update documentation of ibis::bord::groupbya to
	clarify the operations carried out

2013-03-27 John Wu <John dot Wu at ACM dot org>
	* runconfig: update the handling of generic NERSC host with GCC
	compilers
	* ChangeLog: marked as version ibis1.3.6 to support a new public
	release of FastQuery

2013-03-22 John Wu <John dot Wu at ACM dot org>
	* src/part.h, src/mensa.h, src/mensa.cpp: add function
	dropPartition as the reverse of addPartition per request of Lin
	Qiao

2013-03-21 John Wu <John dot Wu at ACM dot org>
	* src/index.h, src/index.cpp: move sizeInBytes from index.h to
	index.cpp, add code to update offset64 as needed (to address the
	case where the bitmaps are in memory but the offset arrays are not
	initialized)

2013-03-20 John Wu <John dot Wu at ACM dot org>
	* src/index.h:470 add check for fname != 0 based on feedback from
	Jong Choi

2013-03-17 John Wu <John dot Wu at ACM dot org>
	* examples/ibis.cpp: add note about not accepting any group-by
	clause (in response to question from Amihay Gonen)

2013-03-13 John Wu <John dot Wu at ACM dot org>
	* INSTALL: restore the lost file from SVN revision 604

2013-03-06 John Wu <John dot Wu at ACM dot org>
	* examples/ardea.cpp, src/table.h: add comment about end of line
	character based on the input from Stanislav Seltser <sseltser at
	soroki.com>

2013-02-08 Patrik Nisen <patrik at nisen dot name>
	* src/bord.cpp:11149 add block to convert internal integer
	representation of categories back as strings for output

2013-02-07 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: in function loadIndex, allow
	thePart->currentDataDir() to be nil (for in memory data)

2013-02-05 John Wu <John dot Wu at ACM dot org>
	* src/ikeywords.cpp:411 neglected to multiply 2048 in the size
	computation (a problem reported by Julian Suszko <suszko @ a9.com>

2013-01-10 John Wu <John dot Wu at ACM dot org>
	* src/*, examples/*: update copyright year to 2013
	* src/index.h: add function getSerialSize as a protected member
	function since it already exist in all the derived classes
	* examples/ibis.cpp: add a default where clause "1=1" when the
	user does not provide one

2012-12-19 John Wu <John dot Wu at ACM dot org>
	* src/filter.h, src/filter.cpp: add a new constructor to work with
	previously saved query results (as a bitvector) in response to a
	request from Patrik Nisen

2012-12-08 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: introduce variable evt to evaluateRange and
	estimateRange to simplifying logging statements

2012-12-07 Patrik Nisen <patrik at nisen dot name>
	* src/bord.cpp: ibis::bord::cursor::fillRow used incorrect names
	for unsigned integers

2012-12-07 John Wu <John dot Wu at ACM dot org>
	* src/i*.cpp: allow getValuesArray to be used when generating new
	indexes
	* src/table.h, src/part.h: remove the default arguments from the
	versions of buildIndexes, they can be easily confused in
	ibis::bord
	* src/part.cpp: change most of getRawData to getValuesArray to
	accomodate in-memmory data partition

2012-12-06 John Wu <John dot Wu at ACM dot org>
	* src/i*.cpp: check for empty file name returned from
	indexFileName in function write
	* src/column.cpp: allow actualMinMax to make use of arrays
	returned by column::getValuesArray
	* src/index.cpp: allow getValuesArray to be used when a file name
	can not be determined

2012-11-29 John Wu <John dot Wu at ACM dot org>
	* src/ibin.h, src/irelic.h: move the two functions name construct
	to be public so that the users may directly build a binned with
	in-memory data without inheriting these classes.

2012-11-28 John Wu <John dot Wu at ACM dot org>
	* src/twister.h: add macro FASTBIT_USE_DEV_URANDOM to control the
	use of system generated seed for the random number generator
	MersenneTwister.  The use of /dev/random causes the initializer to
	block on compute node linux and other low entropy environments,
	which introduces unpredictable delays (a problem raised by Preeti
	Gupta)
	* src/part.cpp: change _ibis_part_urand to a function to allow the
	initialization of the random number generator to be possibly
	delayed (the decision of when the intialization actually happens
	is determined by the compiler)
	* src/horometer.h, src/twister.h, src/fileManager.cpp: use
	CLOCK_MONOTONIC instead of CLOCK_REALTIME to avoid possible clock
	jumps

2012-11-21 John Wu <John dot Wu at ACM dot org>
	* examples/ardea.cpp: add timer to main to report the total
	elapsed time within main, minor adjustment to print out about the
	input parameters to make it clear that no output to disk with the
	option -d is not specified

2012-11-15 John Wu <John dot Wu at ACM dot org>
	* configure.ac: mark the current source code as ibis1.3.4

2012-11-13 John Wu <John dot Wu at ACM dot org>
	* src/util.cpp:619,686 split the test for delimiter from the test
	for null terminators in readInt and readUInt to address a problem
	reported by Michael Beauregard
	* src/twister.h:55 record the return value from fread to avoid
	complaints from GCC compilers

2012-11-11 John Wu <John dot Wu at ACM dot org>
	* src/meshQuery.cpp:6572 jy1 should have been jy0

2012-11-08 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.h, src/bitvector.cpp: add function
	bitvector::operator<
	* src/bitvector.cpp:895 move casting operator inside the
	parenthesis to correct a problem with converting -1 to a large
	positive number (which leads to a very long delay in the function
	bitvector::erase)

2012-11-02 John Wu <John dot Wu at ACM dot org>
	* src: replace compiler macros linux with __linux__, sun with
	__sun, and unix with __unix__ to conform to the C standard
	requirement on machine specific predefined macros (based on a
	report from Hari Krishnan)
	* src/capi.h, examples/tcapi.c, java/FastBit.c: change C++
	comments to C-style comments (to compile with gcc -ansi)

2012-10-29 John Wu <John dot Wu at ACM dot org>
	* src/bord.h: expand functions copyValue, column::equal_to,
	column::less_than and column::append to handle string values (to
	address a problem raised by Andrew Olson)

2012-10-28 John Wu <John dot Wu at ACM dot org>
	* configure.ac: use /usr/libexec/java_home to determine the home
	directory of java when it is present (to enable the option
	--with-java to locate the latest version of java through
	java_home)
	* tests/scripts/fastbit-config.in: add PTHREAD_CFLAGS to CFLAGS

2012-10-27 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: in category::prepareMembers, read the
	dictionary first before doing anything else

2012-10-26 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: category::selectStrings to work with columns
	with only a single string value (to address a problem reported by
	Andrew Olson)
	* src/bordm.cpp:4648 change k21.type() to be k12.type()

2012-10-22 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: investigating why FastQuery complains about
	missing versions of estimateCost
	* runconfig: modify the command for hopper to use PGI compilers
	(in order to work with ADIOS software)

2012-10-19 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: in a couple of versions of evaluateRange, the
	mask is neglected when using sorted values (a problem pointed out
	by Andrew Olson)
	* src/idirekte.cpp: update the constructor to make use of the
	column mask, instead of assuming all values are the same

2012-10-17 John Wu <John dot Wu at ACM dot org>
	* src/qExpr.h, src/qExpr.cpp: change the templated constructor of
	qIntHod and qUIntHod to fixed type to avoid the explicit
	instantiation, these constructors are not actually used and
	therefore the templated versions are not generated in the FastBit
	library (a problem noticed by Andrew Olson)
	* src/array_t.cpp: avoid using member variable actual in the
	constructor to avoid problem with it being 0
	* src/mensa.cpp: change function buildIndex to use
	column::loadIndex and column::unloadIndex instead of directly
	calling index::create (to address a problem related to building
	index for ibis::category object reported by Gaurav Agrawal)

2012-10-11 John Wu <John dot Wu at ACM dot org>
	* src/ixbylt.cpp: update functions estimateCost and evaluate to
	clarify the uses of ncoarse (number of coarse bitmaps) and the
	testing for coffset32 and coffset64 (to address the warnings
	revealed by make large-sanity-check)

2012-10-08 John Wu <John dot Wu at ACM dot org>
	* src/ixbylt.cpp:1235 update testing on c0

2012-10-05 John Wu <John dot Wu at ACM dot org>
	* src/whereClause.cpp:266 check to make sure the term from the
	select clause does not have any aggregation operator

2012-10-04 John Wu <John dot Wu at ACM dot org>
	* src/twister.h: change the constructor of MersenneTwister to use
	/dev/random when it is available
	* src/part.cpp: move urand out of individual functions and into a
	file scope global variable to avoid repeated initialization of the
	variable

2012-10-03 John Wu <John dot Wu at ACM dot org>
	* src/selectClause.cpp: in needsEval chnage the test to simply try
	all the internal lower-level names (don't look at the term type).
	This removes the warning message from 'make check'

2012-10-02 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: fix stringSearch functions to work with different
	versions of in-memory data (to address a problem reported by
	Michael Chong)
	* src/bord.cpp: allow a dictionary to be computed for in-memory
	data when selectUInts is invoked
	* src/bord.cpp: in column::limit make sure the underlying buffer
	is not shared (to address a problem in aggregation across
	multiple data partitions noticed by Petr Velan)

2012-10-01 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: in ibis::bord::groupby call
	selectClause::needsEval to determine if additional evaluation is
	needed to result the base expressions of the select clause
	* src/bord.cpp, src/column.cpp: column::getDoubles promises to
	work with all numerical value types, but have neglected the 8-byte
	integers (a problem noted by Gaurav Agarwal)
	* tests/Makefile.am: change column c from ushort to ulong to
	exercise the operations on 8-byte integers

2012-09-27 John Wu <John dot Wu at ACM dot org>
	* src/selectClause.cpp: the function addAgregado neglected to free
	the object expr when it is not used for anything (a problem
	reported by Michael Beauregard)
	* src/selectClause.cpp: add function needsEval

2012-09-25 John Wu <John dot Wu at ACM dot org>
	* tests/scripts/fastbit-config.in:  change INCLUDES to AM_CPPFLAGS
	as recommended by automake 1.12.4

2012-09-24 John Wu <John dot Wu at ACM dot org>
	* configure.ac: modify the detection of FlexLexer.h to follow the
	path of flex command (to accomodate change in Mac OS X 10.8)

2012-09-20 John Wu <John dot Wu at ACM dot org>
	* src/array_t.h: reorganize the tests in array_t::push_back to
	avoid losing track of the old actual storage object (a problem
	reported by Petr Velan and Michael Beauregard)
	* configure.ac: change INCLUDES to AM_CPPFLAGS as recommended by
	automake 1.12.4

2012-09-19 John Wu <John dot Wu at ACM dot org>
	* src/parti.cpp: clean up the documentation about variations of
	the function reorder
	* examples/thula.cpp: add a special case for ordering the data
	table itself through the option -o (when -w and -t are not
	present) (to investigate a complaint from Petr Velan)

2012-09-18 John Wu <John dot Wu at ACM dot org>
	* src/fileManager.h: add function unrecordFile
	* src/idirekte.cpp: change direkte::write to use the more refined
	logic to handle file maps
	* examples/Makefile.am: add clean-local to remove .dSYM
	directories

2012-09-17 John Wu <John dot Wu at ACM dot org>
	* src/ibin.cpp: update bin::write to match the other variants of
	the function write
	* examples/tcapi.c: move declarations to the beginning of code
	blocks to address the complaints from Visual Studio
	* win/*.vcproj, win/*.mak: update project files to invlude
	blob.cpp, bordm.cpp and iskive.cpp, change Debug build of the
	solution to use Debug option of each VC project
	* src/category.cpp: add call to prepareMembers inside
	category::getDictioanry (to address a problem reported by Andrew
	Olson)

2012-09-16 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: read dictionary again after recreating the
	columns from meta tags
	* src/i*.cpp: in the function write, all the indexes to be written
	to the file with the same names as long as the file is not mapped
	(address the problems with merging dictionaries of categorical
	values reported by Andrew Olson)

2012-09-15 John Wu <John dot Wu at ACM dot org>
	* src/parti.cpp: allow meta tags in ibis::part::reorder (passes
	test case 13 of check-ibis after adding the meta tags to test data
	sets in t2)

2012-09-14 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: stringSearch function involving multiple
	strings use strcmp/stricmp incorrectly, which caused the problem
	reported by Michael Chong
	* tests/Makefile.am: modify the test case 1 of check-text to use a
	list of 10 strings on column b (a text column) to repeat the test
	case used by Michael Chong
	* src/category.cpp: in function category::prepareMembers, add a
	if-block in case of losing index for a meta tag column

2012-09-13 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: change setDictionary and prepareMembers to
	make sure idx is no nil
	* src/part.cpp:1606 comment out the block - by merging the
	dictionaries for categorical values, getNumKeys can return values
	larger than 1

2012-09-11 John Wu <John dot Wu at ACM dot org>
	* src/util.cpp: change back the tests for leading and trailing
	spaces to use the function isspace instead of isgraph based on the
	suggestion from Gaurav Agarwal
	* src/colValue.cpp: in function ibis::colValues::create generate
	ibis::colStrings for columns of type CATEGORY (instead of generate
	ibis::colUInts)
	* src/bundles.cpp:1474 get the actual null mask instead of using
	all 1s
	* src/bord.cpp:5998 missing 'else' at the beginning of the line
	(which causes extra values to be inserted to the result table)

2012-09-10 John Wu <John dot Wu at ACM dot org>
	* src/array_t.cpp: consolidate deletion of actual into the
	function freeMemory

2012-09-07 John Wu <John dot Wu at ACM dot org>
	* doc/dataLoading.html, examples/ardea.cpp: update documentation
	about the options of inputing meta tags and long list of column
	names and types (in response to questions from Andrew Olson)
	* examples/ibis.cpp: add call to bitvectorToCoordinates to help
	debug a problem with FastQuery

2012-09-05 John Wu <John dot Wu at ACM dot org>
	* src/array_t.h, src/array_t.cpp: change the test on actual
	because it might be nil when the caller specifies an extenal piece
	of storage
	* src/idirekte.cpp: constructor0 neglected to take into account of
	the null mask and causes large integers to be treated as normal
	values (which in turn causes the exception related to array_t size
	reported by Michael Beauregard)

2012-09-04 John Wu <John dot Wu at ACM dot org>
	* src/islice.cpp: slice::constructT reverses the order of the bits
	to match the order used in iskive.cpp (in order to correctly reuse
	the functions such as evalGE and evalEQ)
	* src/array_t.h: reorganize the tests in function push_back to
	avoid the possibility of a producing a negative value for nexist
	(potentially the problem reported by Michael Beauregard about an
	exception complaining about array_t must have less than 2^31
	elements)

2012-09-03 John Wu <John dot Wu at ACM dot org>
	* src/parti.cpp: part::reorderBitmap neglected to use iorder,
	'make check' passes with the null value in test0.csv - reordering
	functions can work with null masks now
	* src/part.cpp:372 expand the test on readonly condition (previous
	version causes an exception)

2012-09-02 John Wu <John dot Wu at ACM dot org>
	* src/parti.cpp: update part::reorder to avoid calling
	purgeInactive when the data partition is declared readonly, add
	function reorderBitmap to work with the null mask during
	reordering

2012-09-01 John Wu <John dot Wu at ACM dot org>
	* tests/test0.csv: remove the last value for the second column to
	make it a NULL value
	* tests/Makefile.am: update the reading of test0 to use ardea so
	as to interpret the missing entry as NULL value
	* src/util.cpp: readDouble skip the delimiter in early return
	branch

2012-08-31 John Wu <John dot Wu at ACM dot org>
	* src/icmoins.cpp: in function convert, remove leftover statements
	that assigns bits to nil pointers
	* src/fileManager.h, src/fileManager.cpp: comment out all
	statements related to rwlock in an attempt to simplify the logic
	about access control (to address the deadlock problem reported by
	Petr Velan)
	* src/ixpack.cpp, src/ixfuge.cpp: change test of (nobs <= 1) in
	the function write to be (nobs <= 0) to allow indexes with a
	single bitmap
	* src/parth*.cpp: retrieve null masks before counting the values
	(a problem reported by Andrew Olson)
	* src/qExpr.cpp: add one more variant of
	ibis::math::barrel::recordVariable to work with qExpr
	* src/whereClause.h, src/whereClause.cpp, src/query.cpp: add
	function whereClause::getNullMask, add call to
	whereClause::getNullMask in query::computeHits to address an issue
	reported by Michael Beauregard
	* src/part.h: make ibis::part::getNullMask consistent with other
	getNullMask functions, add part::getMaskRef to return a reference

2012-08-30 John Wu <John dot Wu at ACM dot org>
	* src/ifade.cpp, src/isbiad.cpp, src/isapid.cpp: clean up
	conversion operations to match the changed semantics of
	ibis::array_t<T>::push_back (problems revealed with 'make
	large-tests')

2012-08-29 Michael Beauregard <michael at insightfulminds dot com>
	* src/bord.cpp:11380 add case for converting a float to double

2012-08-29 John Wu <John dot Wu at ACM dot org>
	* src/fileManager.cpp: clean up in-line documentation while
	examining a report of deadlock from Petr Velan
	* src/index.cpp: when use requested bit-sliced index, use
	ibis::skive if the data type is not integer or the minimum is less
	than 0 (address problem encountered with make full-check)
	* src/bord.cpp, src/category.cpp: add missing versions of
	stringSearch and keywordSearch in ibis::bord::column and
	ibis::text
	* src/bordm.cpp: move all functions related to bord::merge into
	bordm.cpp in an attempt to make it easier to build FastBit for iOS
	applications (per suggestion of Michael Beauregard)
	* tests/Makefile.am: change large-sanity-check to set indexing
	option through ibis command line (instead of through perl)

2012-08-28 John Wu <John dot Wu at ACM dot org>
	* src/icegale.cpp, src/icentre.cpp, src/icmoins.cpp: change
	shallow copying of existing bit vectors into explicit copying in
	function convert

2012-08-27 John Wu <John dot Wu at ACM dot org>
	* src/i*.cpp: update write32 and write64 to check that bits[i] is
	not nil before calling ibis::bitvector::write

2012-08-26 John Wu <John dot Wu at ACM dot org>
	* src/array_t.h:195 change atual->inUse() == 1 to
	actual->filename() == 0 to allow shallow copies to be modified
	through push_back - a feature required for consolidate a large
	number of bit vectors

2012-08-25 John Wu <John dot Wu at ACM dot org>
	* src/array_t.cpp: change resize to make use of reserve instead of
	explicitly allocating space

2012-08-24 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: change index::indexFileName to use the incoming
	argument as the index file name if it ends with ".idx" (restoring
	much of the code deleted on 2012-07-27)
	* src/array_t.cpp: change function reserve to use the copy-and-swap
	strategy to avoid losing existing content - continuing the effort
	to make it possible to serialize many bitmaps into a single buffer

2012-08-23 John Wu <John dot Wu at ACM dot org>
	* src/bord.h: add using ibis::part::buildIndexes to address the
	complaints issued by clang

2012-08-21 John Wu <John dot Wu at ACM dot org>
	* src/query.h, src/query.cpp: clarify the arguments of the
	constructor and the user of recovery feature.
	* src/bitvector.cpp, src/bitvector64.cpp: reserve the exact size
	when writing the serialized version, this should make it possible
	to write many bitvectors into a single buffer

2012-08-20 John Wu <John dot Wu at ACM dot org>
	* src/selectParser.yy, src/selectClause.h, src/selectClause.cpp,
	src/bundles.cpp, src/colValues.cpp: add support for aggregation
	function group_concat (requested by Michael Beauregard
	michael at insightfulminds.com)
	* src/colValues.h:803 explicitly choose between CATEGORY or TEXT,
	previously this was enforced by the constructor of
	ibis::colStrings, however group_concat makes it possible to
	generate strings from many more types

2012-08-17 John Wu <John dot Wu at ACM dot org>
	* src/qExpr.h:616 the copy constructor of ibis::qKeyword assigns
	the wrong type
	* tests/Makefile.am: add test case 12 to check-text to exercise
	the issue raised by Aditya <nerur00 at gmail.com>

2012-08-16 John Wu <John dot Wu at ACM dot org>
	* tests/Makefile.am: add space between [` to correct problems with
	some versions of bourne sh involve test case 14 - 17 of target
	really-small

2012-08-15 John Wu <John dot Wu at ACM dot org>
	* src/util.h, src/util.cpp: add a new variant of readString that
	directly works with the incoming string

2012-08-14 John Wu <John dot Wu at ACM dot org>
	* tests/jrf.cpp: quote the strings containing spaces in js (which
	uses spaces as separator for keywords), mark ' ' as delimiter
	explicitly in the index specification to avoid the default
	delimiter handling
	* tests/scripts/jrf-check.pl: use operator CONTAINS instead of
	borrowing the operator = in searching for keywords within text
	fields

2012-08-13 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: replace all logMessage cal with LOGGER
	* src/parti.cpp: call cleaner and purgeIndexFiles in purgeInactive
	* src/part.cpp: add call to unload index before purge index files
	to addres the segmentation fault with purge inactive data reported
	by Greg Barker

2012-08-10 John Wu <John dot Wu at ACM dot org>
	* src/util.cpp: util::read needs to stop if UnixRead returns 0
	* src/index.cpp: change the procedure to building range encoding
	and interval encoding from the equality encoding to make sure more
	than 2 bins are present before invoking the conversion procedure,
	to avoid the conversion procedure from throwing exception due to
	too few bit vectors

2012-08-09 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp, src/bord.h: add selectOpaques to
	ibis::bord::column
	* src/column.cpp: update the copy construct to copy mask_ and
	m_sorted
	* src/category.cpp: change fillIndex to make use of .int file
	before attempting to reading the raw strings
	* src/util.h, src/util.cpp: add util::write as a wrapper over
	UnixWrite to get around chunking of writing (an issue raised by
	Matt Bomhoff, similar to that raised by Rock Wong on reading)
	* src/i*.cpp: update all write64 to use ibis::util::write instead
	of UnixWrite for writing larger arrays

2012-08-08 John Wu <John dot Wu at ACM dot org>
	* src/filter.cpp: compose the long version of the mesg so that the
	subsequent table name will have some trace of the original query
	condition or the original data table
	* src/ibis.cpp: extend -output with a variant to output in binary,
	there are now three flavors: -output, -output-with-header, and
	-output-as-binary.  All three flavors requires an arguement
	following it to indicate a file name (for the first two flavors)
	or directory name (for the binary output, last flavor).  The
	updated version also allows -z option to zap away the existing
	file or directory with the same name as the argument following
	this option

2012-08-07 John Wu <John dot Wu at ACM dot org>
	* src/part.h: replace const char* with ibis::table::stringList in
	indexBuilderPool
	* src/part.cpp: update the index building procedure to reflect the
	new semantics for indexing each individual column differently
	* src/ibin.h, src/ibin.cpp: change parseNbins, parsePrec and
	parseScale to be static members of ibis::bin
	* doc: update documentation about the indexing option and the new
	bit-slice index class
	* tests/acmpub.csv, tests/vault/acmpub-0, tests/vault/acmpub-1:
	add test cases for new operations CONTAINS, this exercises the new
	features in keyword indexes
	* src/category.cpp:443 make sure thePart->currentDataDir() does
	not return nil pointer (causes seg fault, reported by Greg Barker)
	* src/ibis.cpp: extend the message from doAppend to include the
	source and destination directories, set build_index when
	indexingOptions is not empty to avoid entering into interactive
	mode
	* src/parti.cpp: assign rids to 0 after calling delete on rids,
	otherwise appendToBackup will be accessing deleted memory

2012-08-06 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: change tests of the form j < dic.size() to j
	<= dic.size() because j = dic.size() is a valid code - in an
	attempt to address a question raised by Greg Barker
	* src/table.h: clarify the return value of cursor::getColumnAs___
	* src/util.cpp: update the documentation of ibis::util::strMatch

2012-07-30 John Wu <John dot Wu at ACM dot org>
	* src/i*.cpp: add statements to check for empty data partitions
	before attempting to build indexes (to address a problem reported
	by Greg Barker)
	* src/part.cpp: in part::init replace the raw pointer pname to a
	std::string to avoid memory leak issue brought up by Petr Kramolis
	* examples/ardea.cpp: write the metadata file when no external
	data is provided by the metadata is provided
	* src/tafel.cpp: in writeMetaData add code to check the sizes of
	existing files

2012-07-28 John Wu <John dot Wu at ACM dot org>
	* src/ibin.cpp:4342 comment out the line that intended to skip
	"<binning " (it has been done on line 4325
	* src/*.cpp: change all atof to strtod
	* src/qExpr.cpp, src/util.cpp: change the use of
	FASTBIT_CASE_SENSITIVE_COMPARE to be consistent with category.cpp
	and disctionary.cpp - address the problem of inconsistent case
	folding
	* examples/ibis.cpp: replace the alias _0 with cnt in
	randomQueries

2012-07-27 John Wu <John dot Wu at ACM dot org>
	* src/tafel.cpp:3011-3013 comment out the code that skips the next
	delimiter because the readString and friends have done it already
	* src/column.cpp:597 make sure jtmp is less then string length
	* src/index.cpp: change dataFileName and indexFileName to use
	ibis::column::dataFileName
	* src/whereParser.yy: change CONTAINS operator to be in-fix
	similar to the IN operator
	* src/table.h, src/tab.h, src/bord.h, src/mensa.h: add function to
	retrieve data as ibis::opaque
	* src/column.h, src/category.h: add getOpaque, change getString to
	return an int

2012-07-26 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp:225 add case to explicit handle "unsigned" and
	"unsigned int"
	* src/ikeywords.h, src/ikeywords.cpp: add function reorderTerms
	* src/part.h, src/part.cpp: rename lookforString to stringSearch
	to match the named used in ibis::column, add functions
	keywordSearch
	* src/column.h, src/column.cpp: add two variations of
	keywordSearch that takes a list of keywords (for handling
	ibis::qAllWords)
	* src/util.h: change FASTBIT_CS_PATTERN_MATCH to
	FASTBIT_CASE_SENSITIVE_COMPARE and change string comparisons in
	category.cpp to follow this macro as well
	* src/index.cpp: reorganize index::create to make sure the keyword
	index is written to disk after it is created (the previous version
	was simply too disorganized)

2012-07-25 John Wu <John dot Wu at ACM dot org>
	* tests/Makefile.am: add indexing option bit-slice to more-check
	to exercise the new ibis::slice class
	* src/qExpr.h: rename qMultiString to qAnyString, add qKeyword and
	qAllWords
	* src/whereLexer.ll: add keyword CONTAINS
	* src/whereParser.yy: add rules to accept CONTAINS command (a
	simplified version of the CONTAINS command supported by MS SQL
	server)
	* src/util.cpp: in readString, readInt, readUInt and readDouble,
	skip the trailing delimiter if it is present after successfully
	reading the intended value

2012-07-24 John Wu <John dot Wu at ACM dot org>
	* src/islice.cpp: add ibis::slice to implement a proper bit-slice
	index (no repacking of the keyvalues)
	* src/bundle.h:143 change the default value of number of rows in a
	bundle to 1 (instead of 0)
	* src/selectClause.cpp:372 change nplains < aggr_.size() tp
	nplains <= aggr_.size()
	* src/bord.h, src/bord.cpp: add function bord::column::addBlobs to
	handle blobs (opaque objects)

2012-07-23 John Wu <John dot Wu at ACM dot org>
	* src/column.h: change the default value of elementSize to be 0
	instead of -1 (ibis::column::getNullMask mistakenly treat -1 as a
	large positive number and created a wrong null mask for blobs)
	* src/colValues.h, src/colValues.cpp: add colBlobs
	* src/qExpr.cpp:871 comment out the code to convert MSTRING
	exprission into a list of qString (to address a problem reported
	by Greg Barker)

2012-07-21 John Wu <John dot Wu at ACM dot org>
	* tests/setqgen.cpp: update for writing blobs

2012-07-19 John Wu <John dot Wu at ACM dot org>
	* src/iskive.cpp: rename ibis::slice to ibis::skive to indicate
	the fact that the binary encoded index is somewhat weired in its
	design

2012-07-17 John Wu <John dot Wu at ACM dot org>
	* tests/Makefile.am: remove an extra "s" in test case 5 of
	check-thula

2012-07-11 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: in function lookforString, when neither left
	string nor right string is a valid column name, treat the
	expression as string constant comparison
	* src/whereClause.cpp: in function verifyExpr, add statements to
	look for the UINT column with a dictionary and convert the
	expression to an equality comparison with an integer

2012-07-06 John Wu <John dot Wu at ACM dot org>
	* src/bord.h: bord::cursor::dumpIJ neglected to check the presence
	of dictionary (a problem spotted by Gaurav Agarwal)
	* src/util.cpp: util::readString neglected to return a value when
	a string is read at the end of the input stream (this is the
	source of the problem reported by Gaurav on unexpected mask file)

2012-07-05 John Wu <John dot Wu at ACM dot org>
	* src/mensa.cpp in indexSpec add more invocations to update
	metadata file following Gaurav's suggestion

2012-07-04 Gaurav Agarwal <gauravagarwal4@gmail.com>
	* src/mensa.cpp:274 add call to part::updateMetaData to record the
	change to index specification

2012-06-22 John Wu <John dot Wu at ACM dot org>
	* src/column.h, src/column.cpp: add function selectOpaques

2012-06-21 John Wu <John dot Wu at ACM dot org>
	* src/bord.h, src/bord.cpp: split blob related definitions out of
	category.h and category.cpp
	* src/const.h: add ibis::opaque to encapsulate an individual BLOB
	object

2012-06-01 John Wu <John dot Wu at ACM dot org>
	* src/bundle.cpp: change function print to output the names when
	ibis::gVerbose > 4 and output the counts when ibis::gVerbose > 2

2012-05-25 John Wu <John dot Wu at ACM dot org>
	* src/array_t.cpp: add explicit limit on the array size to be less
	than 2^31

2012-05-18 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: add UDT into the type list

2012-05-17 John Wu <John dot Wu at ACM dot org>
	* src/ibin.cpp: minor adjustments of printing stements in
	bin::setBoundaries, accept binning specifications with prefixes,
	allow spaces aroud equal signs in bin spec

2012-05-16 John Wu <John dot Wu at ACM dot org>
	* examples/ardea.cpp: add space to the default delimiters

2012-05-14 John Wu <John dot Wu at ACM dot org>
	* part.cpp: initialize ierr based on the warning message from gcc
	4.7.0

2012-04-15 John Wu <John dot Wu at ACM dot org>
	* win/Win.mak: change DLL_EXPORTS to DLL_EXPORT suggested by
	Sebastien Schneider

2012-04-13 John Wu <John dot Wu at ACM dot org>
	* Makefile.am, configure.ac: add option --enable-contrib to
	compile code in the contrib directory per suggestion of Petr Valen
	* src/util.cpp: update ibis::util::read following the report from
	Rock Wang to avoid using SSIZE_MAX (even though the POSIX standard
	promises it to be the upper bound of read operation)

2012-04-13 Petr Valen <petr dot velan at cesnet dot cz>
	* contrib/fbmerbe/Makefile.am: add rule distclean-local

2012-04-12 John Wu <John dot Wu at ACM dot org>
	* src/Makefile.am: add fastbit-config.h to the header files to be
	installed (per suggestion of Petr Valen)

2012-04-11 John Wu <John dot Wu at ACM dot org>
	* src/util.cpp:648 cast buf to char* before adding the offset
	* src/table.h: add data type UDT in anticipation of future
	expansions

2012-04-10 John Wu <John dot Wu at ACM dot org>
	* src/util.h, src/util.cpp, src/fileManager.cpp: replace UnixRead
	with ibis::util::read to handle the buffer size limitation in
	POSIX read function (pointed out by Rock Wang)

2012-04-03 John Wu <John dot Wu at ACM dot org>
	* Makefile.am, src/Makefile.am, win/xMinGW.Mak: add missing files
	spotted by Dominique Prunier, details at <http://goo.gl/iQaMK>

2012-04-02 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp:6433 change use of pile.front() to pile[ib], and
	make sure pile[ib] is not nil (to correct match-count case # 166)
	* tests/Makefile.am: move tcapi commands outside of if tests

2012-03-30 John Wu <John dot Wu at ACM dot org>
	* src/util.cpp: update util::readString to only designate unquoted
	empty strings as null, quoted empty strings are intentional and
	therefore valid strings
	* tests/Makefile.am: the dollar signs in the input to w7 requires
	escape for the program make
	* src/array_t.h, src/array_t.cpp: add function isSorted to
	consolidate error checking
	* src/iroster.cpp: in ibis::roster::writeSorted use int32_t for
	LONG type

2012-03-29 John Wu <John dot Wu at ACM dot org>
	* tests/Makefile.am: introduce % into the categorical values of w7
	in order to reproduce the test case from Dominique, add test case
	16 and 17 to work with the new data
	* src/dictionary.cpp: on line 428 change to "code < raw_.size()",
	on line 543, return raw_.size() (remove "+1")

2012-03-28 John Wu <John dot Wu at ACM dot org>
	* tests/Makefile.am: extend the data in w7 to include null values
	and empty strings
	* src/part.cpp: take into account of null mask when working with
	strings
	* src/index.h, src/index.cpp: move sumBins to be public, add a new
	version to work with a list of bin numbers, allow addBits to
	initialize the results to an empty bitvector
	* src/category.cpp: change category::patternSearch to use the new
	index::sumBins, previous version neglected to activate bitmaps and
	therefore may lead to incorrect answers
	* src/whereLexer.ll, src/whereParser.yy: accept "colname NOT NULL"
	* src/column.cpp, src/part.cpp: add IBIS_BLOCK_GUARD, handle
	"colname NOT NULL" as a special case of ibis::qContinuousRange
	that matches all valid entries
	* tests/Makefile.am: add test case for "colname NOT NULL"
	* tests/maurel.csv: shorten the column names, introduce a few null
	values in columns i and q

2012-03-28 Dominique Prunier <dominique dot prunier at watch4net dot com>
	* src/qExpr.cpp: restore backslash as escape character

2012-03-28 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.cpp, src/util.cpp: add macro
	FASTBIT_EMPTY_STRING_AS_NULL per request of Dominique Prunier

2012-03-27 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: in function backup wrap all values into auto_ptr
	to automatically clean up the pointers (a problem noticed by
	Alexandra Maurel)
	* src/idirekte.h, src/idirekte.cpp: add function remapKeys
	* src/column.cpp, src/part.cpp: minor cleanup to remove warnings
	from PGI compilers on hopper
	* examples/thula.cpp: add option -m for merging the dictionaries
	* src/util.cpp: allow strnewdup to produce empty strings
	* src/dictionary.cpp: allow empty string to be stored in a
	dictionary
	* tests/Makefile.am: add test case 14 and data directory w7 to
	exercise operations with unmatched quotes

2012-03-26 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.h, src/bitvector64.h: make isCompressed public
	(was protected)
	* src/category.cpp: partially restore decompressing hits in
	category::patternSearch.  The performance problem was caused by
	repeated invocation of the function decompress.  Make sure it is
	only invoked once
	* src/index.h: exchange the two arguements of dataFileName and
	indexFileName to have the output file name as the 1st arguemt and
	make the second argument optional and to conform to
	column::dataFileName
	* src/dictionary.h, src/dictionary.cpp: add function setDictionary

2012-03-26 Dominique Prunier <dominique dot prunier at watch4net dot com>
	* src/category.cpp: category::patternSearch, skip the
	decompression/compression phase, in category::patternSearch, use
	sloppyCount for estimation
	* src/query.cpp: query::doEvaluate, fix returned value when term
	== null (was 0, now is row count), in query::doEvaluate, even more
	usage of bitvector::sloppyCount instead of bitvector::cnt, in
	query::doEvaluate, removed complex OR evaluation depending on
	bitmap sizes

2012-03-25 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.h, src/dictionary.cpp: add merge and morph in
	preparation for sychronize the dictionaries

2012-03-24 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: the special cases in
	ibis::category::stringSearch used incorrect assumptions (pointed
	out by Dominique)
	* src/colValues.cpp: colUInts constructor neglected a break
	statement for the case of ibis::CATEGORY

2012-03-23 John Wu <John dot Wu at ACM dot org>
	* src/colValues.cpp: in colValues::create, produce integer
	representations for categorical values (As Dominique points out,
	ibis::bundle and ibis::colValues are only associated with one data
	partition and therefore safe to use integer representation)
	* src/colValues.h, src/colValues.cpp: the function element size
	gave inconsistent types to function sizeof, move UInts::write from
	.h to .cpp, replace call to getString to getKey as suggested by
	Dominique

2012-03-22 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp:759 add statement to deal with the empty string
	* src/query.cpp, src/iroster.cpp: make consistent use of return 0
	for no hits and a positive number of some hits (passed 'make
	check')

2012-03-21 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.h, src/bitvector.cpp: add function sloppyCount as
	a cheaper alternative for actually counting the number of 1s in a
	bit vector.  This should address a concern raised by dominique
	about invoking bitvector::cnt taking too much time

2012-03-20 John Wu <John dot Wu at ACM dot org>
	* src/bord.h, src/bord.cpp: add functions to work with string
	values as keys for group by operations (the previous attempt to
	make strings suitable for group by operaton were based on
	converting them to integers which can not be trusted when the
	dictionaries do not match, problem raised by Andrew Olson)
	* src/bord.cpp, src/category.cpp: getString did not return ith
	string value promised by the interface specification in some
	cases
	* src/array_t.cpp: array_t::deepCopy neglected to copy empty rhs
	(which was the cause of the problem with very short bit vectors
	reported by Teryl Taylor)

2012-03-19 John Wu <John dot Wu at ACM dot org>
	* src/index.h: add function ibis::index::sizeInBytes
	* src/category.cpp: review ibis::category::selectStrings to examine
	all three options (to avoid getting stuck with the option of using
	raw data when it is not present)
	* src/colValues.cpp, src/bord.cpp: remove inconsistent changes
	about columns of type ibis::CATEGORY

2012-03-17 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp, src/fileManager.cpp: print the message before
	throwing an exception with ibis::gVerbose >= 0, prefix the
	messages with Error instead of Warning
	* src/bord.cpp: add new constructor that takes a list of data
	partitions and makes sure the dictionaries for categories match
	before using the integer representation for the resulting column

2012-03-16 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.h, src/dictionary.cpp: add function dictionary
	sort
	* src/category.cpp: in category::fillIndex add code to reoder the
	dicrionary entries
	* src/bord.cpp:1952 add double quote around string value

2012-03-16 Andrew Olson <olson at cshl dot edu>
	* src/bord.h, src/bord.cpp: add function dumpJSON to output data
	in JSON format

2012-03-14 Dominique Prunier <dominique dot prunier at watch4net dot com>
	* src/category.cpp: update pattern search to retrive the correct
	bit vector

2012-03-14 John Wu <John dot Wu at ACM dot org>
	* tests/Makefile.am: in test case 12 of check-ibis, change -t 5 to
	-t to allow PGI compiled programs to pass 'make check'
	* INSTALL: update information about PGI compiler and SVN accesses
	* src/index.cpp:707 remember the min/max computed for the column
	* src/idirekte.cpp:25 add call to ibis::column::computeMinMax to
	compute the min and max values before declaring an error

2012-03-13 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: change prepareMembers to avoid retriving
	the index file content to a storage object (which creates problem
	in tracking its usage)
	* src/idirekte.cpp,...: flush the file to be written by
	ibis::index::write (to prevent the file manager from holding
	information about older version the file)
	* src/category.cpp:184 if the return value from read is less than
	0, we need to get rid of the existing index.  The previous test
	got it the wrong way.

2012-03-12 John Wu <John dot Wu at ACM dot org>
	* src/dictionary.cpp:458,459 change uint32_t back to int32_t
	(problem reported by Dominique)
	* src/irelic.cpp, ...: check the index type in functions that read
	from ibis::fileManager::storage objects to reconstitute indexes
	* src/dictioinary.cpp: fold input strings to upper case when the
	user desires case-insensitive comparisons of string values (note
	that the names are alwasy compared in the case-insensitive manner)

2012-03-10 John Wu <John dot Wu at ACM dot org>
	* src/util.h: correct typo: FASTBOT -> FASTBIT, change the test on
	FASTBIT_CS_PATTERN_MATCH to give users a chance to disable case
	sensitive matching (-DFASTBIT_CS_PATTERN_MATCH=0 to disable case
	sensitive matching)
	* src/bundle.cpp, ...: harmonize the use of FASTBIT_SYNC_WRITE to
	make sure _commit is called on windows systems when the macro is
	defined, some functions were missing this branch of the code

2012-03-09 Dominique Prunier <dominique dot prunier at watch4net dot com>
	* src/category.cpp, src/dictionary.h, src/dictionary.cpp,
	src/util.h, src/util.cpp: enable case sensitive pattern matching,
	for additional information, see the following email message
	https://hpcrdm.lbl.gov/pipermail/fastbit-users/2012-March/001104.html

2012-03-09 John Wu <John dot Wu at ACM dot org>
	* tests/scripts/jrf-check.pl, tests/scripts/matchCounts.pl:
	redirect stderr to stdout so that the output from ibis can be
	captured - the default log message has been redirected to stderr

2012-03-08 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp, src/idirekte.h, src/idirekte.cpp: add
	functions to enable ibis::direkte to replace ibis::relic in
	ibis::category (should reduce the index and query response time)
	* src/idirekte.cpp: add construct0 to avoid calling getNullMask
	(which requires a mutex lock on the column), new code passes 'make
	check'

2012-03-07 John Wu <John dot Wu at ACM dot org>
	* src/jnatural.cpp, src/jrange.cpp: replace categorical values
	with integer representation
	* examples/ibis.cpp: rearrange the output of timing information to
	avoid a problem with test case 2 of check-ibis

2012-03-05 John Wu <John dot Wu at ACM dot org>
	* src/MinGW.mak: restore MinGW.mak to the version from SVN 444,
	the last version from Dominique work with cross compilers on
	ubuntu instead of on MinGW/MS Win

2012-03-01 Dominique Prunier <dominique dot prunier at watch4net dot com>
	* src/column.cpp:4213 covert the return value ierr from 0 to
	vals.size() to match the interface documentation

2012-02-17 John Wu <John dot Wu at ACM dot org>
	* runconfig: change the install directory on datax

2012-02-14 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp, src/column.cpp, src/category.cpp: truncate
	description to avoid writing extremely long description line
	* tests/Makefile.am: update case 2 of check-ibis to accommodate
	mixing of output from stdout with stderr
	* src/part.cpp: updateMetaData and setMeshShape invoke write lock
	before calling writeMetaData
	* src/capi.cpp: invoke updateMetaData when fastbit_build_index
	came with an explicit indexing option
	* src/qExpr.cpp: add function overlap to ibis::qContinuousRange
	and ibis::qDiscreteRange
	* src/column.cpp: check that the query ranges are not outside of
	the column value ranges

2012-02-13 Dominique Prunier <dominique dot prunier at watch4net dot com>
	* src/capi.cpp:260 check null pointer before attempt to build
	indexes

2012-02-10 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: update column::write to handle unsigned types
	separately, add specific cases for min and max of LONG and ULONG
	(as doubles)
	* src/category.cpp: update category::write to limit the size of
	description to be no more than a couple of hundred characters

2012-02-09 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: capture min and max after index creation.

2012-02-07 John Wu <John dot Wu at ACM dot org>
	* src/util.cpp: change the default log output to stderr (following
	the C++ iostream convention where cerr and clog are the same
	stream)
	* tests/Makefile.am: change the log file from stdout.log to
	std.log
	* src/bord.cpp: modify bord::copyColumn to use getColumn instead
	of its own procedure for finding the named column; evaluateTerms
	assigns the values to cd too early, the actual strings in cdesc
	could moved
	* src/quaere.cpp: in ibis::quaere::create, make sure prts is
	passed down to the filter object

2012-02-06 John Wu <John dot Wu at ACM dot org>
	* src/selectClause.cpp: change selectClause::fillNames to make
	sure the names used match the SQL convention

2012-02-03 John Wu <John dot Wu at ACM dot org>
	* examples/ibis.cpp: add argument three to doJoin to use a
	different list of tables than ibis::datasets
	* src/util.cpp: change util::getLogFile to use setLogFile (to make
	sure the log file is initialized exacty the same way no matter how
	it is generated)

2012-02-02 John Wu <John dot Wu at ACM dot org>
	* src/util.cpp: add special cases to ibis::util::setLogFileName to
	accept "stderr" and "stdout" as representations for stderr and
	stdout, refactor setLogFileName and writeLogFileHeader to ensure
	the global variables are modified only under an ioLock
	* src/query.cpp: change setWhereClause to accept empty where
	clause as '1=1' to match all rows according to SQL convention
	* src/capi.cpp: change fastbit_build_query to accept empty where
	clause, check that _capi_tlist->find did not return a nil pointer
	* examples/ibis.cpp: modify doJoin to perform additional queries
	on the results of join (per suggestion from Alexandre Maurel)
	* src/jnatural.cpp: using frm_ without checking whether it is nil
	* src/bord.cpp: change ibis::bord::column::getString to make use
	of dic first and the array values next (but always try both of
	them)
	* src/bord.cpp: in the constructor of ibis::bord, make sure the
	column names are proper SQL names (so that they can be used by
	other operations)

2012-02-01 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: category::selectStrings fixing a corner case
	involving valid empty strings (pointered out by Dominique Prunier)
	* src/util.cpp: add compiler macros FASTBIT_LOG_TO_STDERR and
	FASTBIT_DEFAULT_LOG to control where the default log file points
	to.  Dominique Prunier has suggested to use stderr, but the
	existing default is stdout.  Added note now to warn users that the
	default will be changed to stderr to conform with C++ convention
	soon

2012-01-28 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp, src/colValues.cpp: following the code given by
	Alex, change the column type CATEGORY to keep using the strings
	but let UINT column check for the presence of a dictionary, make
	sure the dictionary is propergated all the way through from the
	original data table to the final ibis::bord::column objects.  The
	current code passes the built-in check

2012-01-26 Alexandre Maurel <alexandre dot maurel at gmail dot com>
	* src/dictionary.h, src/dictionary.cpp, src/colValues.h,
	src/colValues.cpp, src/bord.h, src/bord.cpp: support categorical
	values as unsigned integers internally in ibis::bundle and
	ibis::bord

2012-01-23 John Wu <John dot Wu at ACM dot org>
	* src/category.cpp: in category::selectStrings call
	text::selectStrings as a fallback option if .int file is not
	present or not of the expected size

2012-01-23 Dominique Prunier <dominique dot prunier at watch4net dot com>
	* src/category.cpp: change category::selectStrings to make use of
	category::selectUInt and the dictionary, it is faster than reading
	the raw string values through text::selectStrings
	* src/capi.cpp, src/capi.h: add fastbit_result_set_get_long

2012-01-20 John Wu <John dot Wu at ACM dot org>
	* configure.ac: print FASTBIT_IBIS_INT_VERSION with the leading 0
	(the leading 0 cause the integer constant to be interpreted as
	octal number, we actually intend the number of be interpreted as
	a decimal integer), mark as ibis1.2.8
	* src/category.cpp: text::loadIndex need to call column::loadIndex
	* src/colValues.cpp: implement aggregation operations COUNT,
	COUNT-DISTINCT, MIN, and MAX for string values

2012-01-19 John Wu <John dot Wu at ACM dot org>
	* src/bundle.cpp: add macro FASTBIT_ORDER_OUTPUT_RIDS to control
	whether the RIDs within each bundle is sorted.  Dominique reported
	that this extra sorting can take up to half of the total time to
	create the bundles
	* src/category.cpp: include header file memory at the suggestion
	of Alexandre Maurel
	* src/utilidor.cpp: add option to use 65536 bins in sort_radix for
	16-bit integer keys
	* src/category.h, src/category.cpp: add function loadIndex to
	prepare auxiliary data so that part::buildIndexes could prepare
	all auxiliary data files
	* src/part.cpp: three versions of evaluateRange neglected to apply
	the externally supplied mask

2012-01-18 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: change selectValues and supporting functions to
	work with in-memory data, relax the checking of element sizes to
	accomodate the situation of reading the .int file for a
	categorical column

2012-01-17 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: modified printing of return values from thread
	functions based on the suggestions from Dominique
	* examples/ardea.cpp: add option -x to tell ardea.cpp to repeat
	the write calls
	* src/category.cpp: add statements in category::selectUInts to
	work with the .int file (which was ignored)

2012-01-17 Dominique Prunier <dominique dot prunier at watch4net dot com>
	* win/MinGW.mak: update makefile to work with X64 version of pthread

2012-01-16 John Wu <John dot Wu at ACM dot org>
	* src/bundle.cpp: add statements to skip over COUNT operations in
	the select clauses
	* src/bundle.h, src/bundle.cpp: add function printColumnNames
	* tests/Makefile.am: add test case 13 to really-small to check on
	the problem with very long integers reported by Bao Toan Nguyen

2012-01-14 John Wu <John dot Wu at ACM dot org>
	* src/index.cpp: add option to try compression again after a
	bitmap index has been built (attempt to iron out an irregularity
	observed in a test to measure index sizes)
	* examples/ibis.cpp: add code to record the data directories
	reordered for later uses

2012-01-13 Dominique Prunier <dominique dot prunier at watch4net dot com>
	* src/bundle.cpp: missing initialization in bundle1 generating a
	segmentation fault

2012-01-12 Dominique Prunier <dominique dot prunier at watch4net dot com>
	* src/bundle.h, src/bundle.cpp, src/capi.h, src/capi.cpp: add
	function to go to next bundle with different values

2012-01-11 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: change ibis_part_build_indexes to rebuild the
	index if the existing does not have the same number of rows

2012-01-10 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp, src/column.cpp: add more explicit template
	instantiation to satisfy FastQuery on hopper

2012-01-08 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: add mutex lock to ibis::part::readRIDs based on
	the suggestion from Dominique Prunier
	* *: update copyright year to 2012 in preparation for the next
	public release

2012-01-07 John Wu <John dot Wu at ACM dot org>
	* runconfig: use GCC on NERSC machines to avoid problems with
	FastQuery and other software packages

2012-01-06 John Wu <John dot Wu at ACM dot org>
	* src/bitvector.h, src/bitvector64.h: move iomanip out of the .h
	files into the .cpp files (might reduce compilation time)

2012-01-05 John Wu <John dot Wu at ACM dot org>
	* configure.ac, src/Makefile.am: adjust make script to work with
	older version of make (with some previous versions of make, the
	previous configuration files causes the make to rerun endlessly.
	Note that the repeated builds apparently can be caused by stale
	.deps information as well.  Need to remove .deps when moving to a
	new platform.)

2012-01-04 John Wu <John dot Wu at ACM dot org>
	* src/part.h, src/part.cpp: add another version of rename to take
	a user-specified name
	* src/column.h, src/column.cpp: modify the constructor of
	column::info to compute the actual min and max if the existing min
	and max have not been computed
	* examples/ibis.cpp: add function randomQueries, add code to test
	the generated queries using multiple threads
	* src/filter.cpp: return an empty table when there is no hit

2012-01-03 John Wu <John dot Wu at ACM dot org>
	* src/array_t.cpp:434 multiple threads may simutaneously decrease
	the reference counter to make the original copy unused, need to
	free the original storage object in this case as suggested by
	Tomas

2012-01-02 Tomas Rybka <Tomas dot Rybka at solarwinds dot com>
	* src/array_t.cpp:630 remove statements that swap the values of
	the array because the array content is not to be changed in this
	function

2011-12-22 Tomas Rybka <Tomas dot Rybka at solarwinds dot com>
	* src/bord.cpp: clean up temporary vector of bord::columns in
	various merge functions

2011-12-21 Tomas Rybka <Tomas dot Rybka at solarwinds dot com>
	* src/filter.cpp, src/util.h, src/util.cpp: reduce the time needed
	for merging partial results from different data partitions by
	using a binary merging approach

2011-12-20 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp, src/bord.h: add special cases for mergeing with two
	key columns
	* tests/Makefile.am: update test case 18 and 19 to check for the
	new functions

2011-12-15 Tomas Rybka <Tomas dot Rybka at solarwinds dot com>
	* src/bord.cpp: update nEvents in ibis::bord::merge, and pass
	array_t objects to ibis::bord::column::append as required
	* src/capi.cpp: assign _capi_tablex to 0 after deleting the
	existing value

2011-12-12 John Wu <John dot Wu at ACM dot org>
	* src/util.h: change the condition on atomic operation to be gcc
	version > 4 and on LINUX only (remove the negative conditions)
	* win/win.mak, win/MinGW.mak: update to work with a MS Windows
	installation inside a virtual machine
	* src/thula.cpp: replace countdistinct in doTest with count to
	exercise the new aggregation-by-parts functionality (this reduces
	the memory usage for check-sq0, check-sq1 and check-sq2)
	* src/selectParser.yy: replace incoming arithmetic expression to
	function count with "*"

2011-12-09 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp: update the log messages printed from the
	constructors
	* src/bord.cpp:2618 add statements to update the number of rows in
	the merged table (to address the problems reported by Petr Velan)

2011-12-08 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: in merge1T a number of loops incorrectly used
	kin1.size() instead of vin1.size(), which cause loops to overstep
	their bounds, merge1T neglected to increment counters in the case
	involving matching keys, merge12 incorrectly used the type of u2
	for v1 (both above problems were revealed with the sample data
	from Petr Velan <thorgrin @ gmail.com>)
	* src/filter.cpp: add statements to check the return values of
	ibis::bord::merge

2011-12-07 John Wu <John dot Wu at ACM dot org>
	* src/filter.cpp: siftdS mistakenly used groupby when they should
	have called groupbyc, invoke siftdS only if there are more than
	one data partition
	* src/bundle.h, src/bundle.cpp: add new constructor of bundle0 to
	create a bundle for count(*), remove bundle0::size() (which was
	based on rids only)
	* examples/ibis.cpp: initialize qtables from fstr to make sure the
	from clause is actually used

2011-12-06 Jon Strabala <Jon dot Strabala at QuantumSI dot com>
	* examples/thula.cpp: add -o option for order by clause
	* src/qExpr.h, src/qExpr.cpp: add functions is_zero, is_nonzero,
	is_eql, is_gte, is_lte, trunc to list of functions supported

2011-12-06 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: add code to produce values for count(*) in
	evaluateTerms
	* src/selectClause.cpp: avoid adding duplicate terms in
	addAgregado
	* src/bord.cpp: make sure the column for 'count(*)' is generated,
	previously it is skipped and only added after everything is done

2011-12-05 John Wu <John dot Wu at ACM dot org>
	* src/selectParser.yy: to convert AVG, STDDEV, and STDVAR to SUMs
	and COUNTs to take advantage of computation by parts

2011-12-04 John Wu <John dot Wu at ACM dot org>
	* src/quaere.h: add select(const char*) to ibis::quaere class
	hierarchy

2011-12-03 John Wu <John dot Wu at ACM dot org>
	* src/jnatural.cpp: initialize pointers to 0 in the constructors,
	add calls to count in select (to accomodate the changes in the
	default in ibis.cpp that now skips the estimation step)
	* src/jrange.cpp: update the constructor and the select function
	as jNatural

2011-12-02 John Wu <John dot Wu at ACM dot org>
	* src/part.h, src/part.cpp: rename some version of doCompare to
	doComp to avoid confusion in template parameter matching reported
	by PGI compilers
	* src/tab.h, src/qExpr.cpp, src/part.cpp: remove call to isfinite
	to avoid problems on solaris with gcc 3.4.3
	* src/filter.cpp:24 initialize sel_ to 0!
	* src/column.cpp:4863 add test for idx != 0 to prevent a nil
	pointer to be used
	* src/part.cpp: change all version of doScan and negative to use
	column::getRawData before attempting to use the file name directly
	to accomodate the cases with in-memory data partitions
	* tests/Makefile.am: update case 9 of really-small to reflect the
	changes in examples/ibis.cpp

2011-12-01 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp: vary the name of the data partition returned from
	ibis::bord::groupbya because it will be applied on many data
	partitions within a loop
	* src/mensa.cpp: remove the calls to isfinite, somehow they have
	problems
	* src/bord.cpp: make sure ibis::bord::append generate the same
	number fo columns as the number of select clause terms

2011-11-30 John Wu <John dot Wu at ACM dot org>
	* src/selectClause.h, src/selectClause.cpp: add function
	isUnivariate
	* src/filter.cpp: use selectClause::isUnivariate to detect the
	univariate case with consistency
	* src/ibis.cpp: combine the options of estimate_only and
	skip_estimation into one, change the default option to skipping
	estimation
	* Makefile.am: add rara.vcproj into the list of extra files for
	distribution

2011-11-29 John Wu <John dot Wu at ACM dot org>
	* src/bord.cpp, ...: change scope guards to use IBIS_BLOCK_GUARD
	macro, address all warning messages printed by -Wall

2011-11-28 John Wu <John dot Wu at ACM dot org>
	* src/bord.h, src/bord.cpp: add merge1, merge1T, merge12, merge12S
	and merge12T to handle different cases of merge operations
	* src/quaere.cpp: update quaere::create to accept empty where
	clause according to SQL convension

2011-11-23 John Wu <John dot Wu at ACM dot org>
	* src/filter.cpp: add implementations of sift1S and sift2S
	* tests/vault/inRange-1: update the output values, the previous
	output were wrong
	* src/bord.h, src/bord.cpp: add merge11 and merge11T

2011-11-22 John Wu <John dot Wu at ACM dot org>
	* src/util.h: add IBIS_GUARD_NAME and supporting macros to make
	sure __LINE__ is evaluated before incorperated as the name of a
	scope guard

2011-11-20 John Wu <John dot Wu at ACM dot org>
	* src/bord.h, src/bord.cpp: add function bord::merge,
	bord::merge0, bord::merge0T and bord::merger to merge partial
	results generated from bord::groupbya

2011-11-10 John Wu <John dot Wu at ACM dot org>
	* src/bord.h, src/bord.cpp: add static function
	ibis::bord::groupbya and ibis::bord::groupbyc to separate out the
	aggregation operations from the final arithmetic operations in the
	select clause.  This creates the opportunity for performing
	aggregations on the partial results from different data partitions

2011-11-08 John Wu <John dot Wu at ACM dot org>
	* src/index.h: add a second version of index::select to accomodate
	the case where the positions are not needed
	* src/ibin.h, src/ibin.cpp: add two versions of select and two
	versions of mergeValues, add bin::valpos and bin::comparevalpos

2011-11-07 John Wu <John dot Wu at ACM dot org>
	* src/part.cpp: relax the print of warning about unknown columns
	to allow 'more-check' to complete without warning messages
	* src/filter.h, src/filter.cpp: add member variables to record the
	intermediate solutions

2011-11-05 John Wu <John dot Wu at ACM dot org>
	* src/mensa.cpp, src/filter.cpp: move the static versions of
	ibis::table::select from mensa.cpp to filter.cpp, change them to
	use filter::filt (to consolidate operations)
	* src/filter.h, src/filter.cpp: add functions filt0 and filt1 to
	deal with special cases with a unspecified where clause and single
	column appearing in both the select clause and the where clause

2011-11-04 John Wu <John dot Wu at ACM dot org>
	* src/qExpr.cpp: add "round" and "round2" to the name of the list
	of standard function names (they had been added to qExpr.h
	already, so the printing was wrong in some cases)

2011-11-03 John Wu <John dot Wu at ACM dot org>
	* src/bord.h, src/bord.cpp: add function append to work with the
	special case that selects the same column as the range condition

2011-11-02 John Wu <John dot Wu at ACM dot org>
	* src/part.h, src/column.h, src/part.cpp, src/column.cpp: add
	function to retrieve values directly based on range condition
	(without using a bitmap mask)
	* src.part.h, src/part.cpp: change templates doCompare and friends
	to be static members of ibis::part as they were not using anything
	specific to ibis::part anyway

2011-11-01 John Wu <John dot Wu at ACM dot org>
	* src/index.h, src/irelic.h, src/irelic.cpp: add function select
	to retrieve values that satisfy user specified range conditions.

2011-10-30 John Wu <John dot Wu at ACM dot org>
	* src/index.h: replace vector<bitvector*> with array_t<bitvector*>
	to better track the memory usage

2011-10-15 John Wu <John dot Wu at ACM dot org>
	* src/twister.h, src/colValues.cpp, ...: replace cmath with math.h
	to avoid confusion on openSUSE (a problem reported by thorgrin at
	gmail.com)

2011-09-26 John Wu <John dot Wu at ACM dot org>
	* src/column.cpp, src/part.cpp: change evaluateRange to take into
	account of the column mask in part.cpp so that the column version
	can be repeatedly called with repeat invocation of null mask

2011-09-12 John Wu <John dot Wu at ACM dot org>
	* tests/vault/text-0, tests/vault/marksdb-3, tests/Makefile.am:
	interpret the keywords DESC and ASC to be associated with the
	column name just before them to conform to SQL standard (a problem
	pointed out by Jon Strabala)

2011-09-02 John Wu <John dot Wu at ACM dot org>
	* src/capi.h: add conditional statement to include sys/types.h to
	deal with a problem with uint64_t inconsistency between PGI and
	GNU compilers (PGI bug 775993).  FastBit now compiles with PGI
	compiler version 11.7.0 on hopper.nersc.gov, however, it still
	fails check-ibis case 12!

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
	* src/table.h, src/mensa.cpp: add function
	ibis::table::parseOrderby
	* examples/ibis.cpp: remove variable direction to let the
	underlying orderby function to deal with directions which may be
	different for each column

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 (velgrind 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 Krivanek

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.
