# Changelog

### 0.6.5 (11.11.2020)

- Fix: Do not include null in COUNT or AVG fixes #1251



### 0.6.4 (24.09.2020)

- Add: String and Number objects supported as values
- Add: `JOIN USING` now supports String and Number objects 
- Fix: File naming when exporting to Exel


### 0.6.2 (31.05.2020)


- Add: Use NOT BETWEEN without parenthesis. 



### 0.6.1 (20.05.2020)

- Add: Use BETWEEN without parenthesis. 
- Fix: Let ADD COLUMN use the given dbtypeid



## 0.6.0 (02.05.2020)

- Add: NULLS FIRST/LAST clause in ORDER BY (#1187)
- Add: Support table/row names starting with numbers



### 0.5.9 (26.04.2020)

- Add: Composite foreign keys implementation (#1179) 
- Fix: Insert's toString() (#1177)
- Fix: DROP Filestorage Database with database name (#1184)

### 0.5.8 (27.03.2020)

- Fix: usage of CURRENT_TIMESTAMP (Fix #1174)

### 0.5.6 "Bafq" (22.03.2020)

- Add: GroupBy within nested array data set/params (#1167)
- Fix: Use unknown DB name

### 0.5.5 "Bam" (29.01.2020)

- Fix: Typescript typing

### 0.5.4 "Qom" (19.01.2020)

- Fix: QUART/MEDIAN/MIN/MAX on number/date/string


### 0.5.3 "Chabahar" (02.01.2020)

- Better: Support csv data from buffer
- Better: Error message for foreign key constraint fail #1009
- Fix: ORDER BY supports parameters #1100
- Fix: Filestorage DELETE FROM #624
- Fix: Drop trigger #1113


## 0.5.1 "Qazvin" (16.09.2019)

- Add: Chain OUTER JOIN's #1105
- Better: Typescript typings
- Better: Updated dependencies
- Fix: Join on CSV files directly
- Fix: OUTER JOIN bug #1101
- Fix: Pivot function cast for SUM and AVG 


### 0.4.11 "Lawdar" (05.10.2018)

* Add: Specified XLSX sheet without knowing the name


### 0.4.10 "Maoshk" (04.10.2018)


* Add: xlsxml files with multiple sheets


### 0.4.9 "Alsalfiah" (05.08.2018)

* Better: Error message grammar
* Better: Support for Meteor code standards
* Fix: dbprecision for select query
* Fix: Handle promise error when reading one line csv files
* Fix: AUTO_INCREMENT when using local storage

### 0.4.8 "Nafhan" (14.07.2018)

* Fix: Error when installing caused by missing cli file in npm


### 0.4.7 "Tarim" (14.07.2018)

* Better: Always find global object 


### 0.4.6 "Rahbah" (14.06.2018)

* Better: `Use strict` mode for javascript 


### 0.4.5 "Marib" (24.01.2018)

* Fix: Aggregate functions applied to empty sets (#964)
* Fix: missing ORDER BY direction when calling toString on AST (#970)
* Fix: Converting the syntax tree back to SQL with multple joins (#972)

### 0.4.4 "Alsowm" (03.12.2017)

* Better: Better usage via unpkg.com
* Better: Better usage via jsdelivr.com


### 0.4.3 "Hajjah" (05.09.2017)

* Update: Removed implicit "any" in definition file
* Fix: Tabletop reads in empty cells as numeric 0 instead of empty string 
* Fix: DISTINCT on emtpy table produced error


### 0.4.2 "Baraqish" (17.08.2017)

* Added: SQL function LTRIM
* Added: SQL function RTRIM
* Better: Remove implicit any in type script definitioni
* Better: Out-of-the-box Webpack and Browserify compatibility without hacks
* Fix: Use created database id on foreign key check as default database

 
### 0.4.1 "Sayhut" (23.07.2017)

* Better: Performace on `distinct` selects 
* Better: Hashing for cashed SQLs 
* Fix: Case insensetive selects from EXCEL
* Fix: Select from empty EXCEL


##0.4.0 "Sanaa" (09.05.2017)
* **Breaking:** OFFSET will now skip the first N rows in a result set before starting to return any rows (before it would skip N-1)
* Add: Quartile aggregators (QUART, QUART2, QUART3)
* Add: Typescript definitoin now supports extensions
* Fix: Aggregate MEDIAN now working with ROLLUP
* Fix: Aggregate STDEV now working with ROLLUP
* Fix: SHOW COLUMNS works with the promise interface 
* Fix: SHOW INDEX works with the promise interface 

### 0.3.9 "Turua" (23.03.2017)
* Add: React native support
* Fix: CSV error when quote set to empty
* Fix: autoExt bug when not set for CSV on read

### 0.3.8 "Wanaka" (15.03.2017)

* Added: Lazy promise notation
* Added: Create user defined function via SQL statement
* Added: Create user defined aggretator via SQL statement 
* Added: Auto extension for filenames on read + write
* Fix: `.xlsx` can now be imported via browser "upload"
* Update: `xls.js` package not needed any more. Only `xlsx` package is needed. 

### 0.3.7 "Niau" (20.02.2017)

* Added: Last `S` in `VALUES` can be omitted when insterting (For the lazy ones)
* Added: The `VALUES` keyword is optional when insterting (For the very lazy ones)
* Fix: Multiple worksheet Excel with custom headers 


### 0.3.6 "Hipu" (24.01.2017)

* Addded: Support for "use strict" 
* Fix: Select.toString() had bugs
* Update: Better and faster deep compare of objects


### 0.3.5 "Maiao" (22.12.2016)
* Added: Import data through AngularJS controllers
* Added: Support for running in VM for nodeJS
* Fix: Typescript definition
* Fix: False negatives for deepequal'ing of extended primitives
* Fix: Double quotation marks in CSV output


### 0.3.4 "Fitii" (09.11.2016)
* Added: trigger `AFTER DELETE`
* Fix: `TRUNCATE TABLE` now works for local storage DB
* Fix: `JOIN` a sub select
* Removed: The `HELP` command (to save space) 


### 0.3.3 "Makemo" (13.10.2016)
* Add: support for VALUE inside checks
* Add: Conflate null and undefined
* Add: Load CSV data from a string
* Add: Warn when server side uses browser build of lib
* Update: typescript definition for native import 
* Update: filesaver.js updated to 1.3.2


### 0.3.2 "Maumu" (05.09.2016)
* Added: Postgres arrays like array[] and text[]
* Added: Allow non-reserved keywords as identifiers
* Fix: Empty tsv/csv files will no longer raise an error
* Fix: alasql.d.ts format
* Fix: Better way to find out if indexedDB is present
* Fix: `null = null` is (now) null, baby.
* Update: Column names first for RECORDSETS


### 0.3.1 "Taravao" (01.08.2016)
* Allow unknown functions to be defined on alasql.fn afterwards
* Easy access to AUTOINCREMENT values
* MEDIAN will ignore null values 
* STDEV will ignore null values


## Version 0.3.0 "Papeete" (25.07.2016)
* Breaking change: CSVs with header will now default have BOM added (for better utf8 support) 
* Added: Constraint names will now be exported in error message
* Added: Web worker now supports .promise notation
* Added: Postgres-specific aliases and fixes
* Added: Make converting to an unknown type result in a noop rather than an error
* Added: Support column types consisting of more than 2 words


### 0.2.7 "Corinth" (30.05.2016)
* Added: Now supports Node 6.0 
* Added: Let .promise return all responses (not just last) 
* Change: Headers set as default true for INTO and FROM statements
* Fix: Back on track (for good) with supporting Meteor 
* Fix: Default tentative string to numbers conversion when reading data from google spreadsheets 
* Update: No need for empty params when async
* Update: Better hashing for cashing


### 0.2.6 "Frikes" (22.04.2016)
* Added: Progress callback
* Change: CLI defaults to pretty print (with option for compressed output as original)
* Fix: Declaring all variables
* Fix: Read XLSX files
* Fix: Selecting a view from localstorage 
* Fix: CREATE VIEW for localStorage engine 
* Fix: Better use for RequireJS
* Update: CLI output is guaranteed to be valid JSON 
* Update: Better error message for missing table or column
* Update: Typescript defenition for .promise
* Update: Empty params not needed for async calls


### 0.2.5 "Polychrono" (23.03.2016)
* Added: Promise chain of queries
* Fix: Remove leading whitespace from fields when importing csv files
* Fix: Set default option for XLSXML
* Fix: Use callbacks consistently 


### 0.2.4 "Exogi" (04.03.2016)
* Added: Central enviroment detection
* Added: SELECT * FROM ? GROUP BY a works as FIRST(*)
* Added: Better detection for browserify, phonegap and cordova
* Fix: CONCAT without space
* Fix: IE11: Reading Excel File
* Fix: Date handeling (in)dependent from locale


### 0.2.3 "Spetses" (01.02.2016)
* Changed: New fast way to calculate aggregators (some parameters changed)
* Added: User defined aggregators
* Fixed: Remove empty Last line in TXT and XLSX
* Changed: {headers:true} now is default option
* Fixed: option.joinstar flag for SELECT * FROM a,b
* Added: EXP() function, ^ now is XOR, ~ binary NOT
* Added: REPLACE() string function (see issue #560)
* Added: NEWID(), UUID() and GEN_RANDOM_UUID() functions for GUID
* Added: DEFAULT for column can be a function (e.g. DEFAULT NEWID())


### 0.2.2 "Mitilini" (15.01.2016)
* Fix: SELECT can use functions from GROUP BY list
* Fix: Bug in NUMERIC type conversion
* Added: functions CEIL/CEILING and FLOOR
* Added: CONCAT to the list of standard functions
* Fix: Bug with primary key after DELETE all
* Fix: Added String() to UPPER() and LOWER() functions 
* Added: PIVOT and UNPIVOT functionality
* Added: REPLACE INTO command (see issue #467)
* Added: ON UPDATE - column constraint
* Fix: COLLATE and UNIQUE KEY words for CREATE TABLE (see issue #452)
* Fix: Added params to SEARCH WHERE function
* Added: TRIGGERs
* Fix: Bug with MATRIX modifier
* Fix: Bug with undefined content variable with IN operation (issue #501)
* Fix: Bug with wrong realizaion of REPLACE INTO (issue #505)
* Added: >>,<<,&,| - binary operations
* Added: || - string concatenation (issue #514)
* Added: GLOB operator
* Fix: >> for binary operation and graphs collisions
* Added: SELECT * FROM INSERTED (for T-SQL like triggers)
* Fix: Added DEFAULT clause to INSERT SELECT statement
* Added: expression NOT NULL operator (issue #507)
* Added and Fix: REINDEX and fixed CREATE INDEX (issues #509, #470)
* Fixed: browser tests, IndexedDB tests, DROP TABLE callback for external engines
* Added: DATETIME2 type for compatibility with T-SQL
* Added: DATEADD() and DATEDIFF() functions in T-SQL style
* Added: CONCAT_WS() function
* Added: OF() selector for SEARCH statement

### 0.2.1 "Rodos" (28.09.2015)
* Added: AlaSQL CLI: Support for --version flag
* Added: AlaSQL CLI: support for CLI exit code 
* Added: AlaSQL CLI: Missing file now won't throw exception (but log error text) nor if its a folder
* Added: Support for using _ as a single wildcard in LIKE queries
* Added: Support for FETCH NEXT syntax in queries (MSSQL/T-SQL)
* Added: SUBSTR() alias for MID() function (for SQLite compatibility)
* Added: LIKE ESCAPE functionality
* Added: REGEXP operator (like MySQL) and REGEXP_LIKE() function (like in Oracle)
* Added: INSERT OR REPLACE VALUE, INSERT OR REPLACE SELECT
* Added: Read Blob as parameter for from-functions like XLS()
* Fix: .CSV files made Excel 2013 compliant 
* Fix: misbehavour related to 'NOT' and '=' predecession
* Fix: alasql running from cordova on iOS


## Version 0.2.0 "Athens" (13.07.2015)
The purpose of this release were hard work on:
* Documentation
* Resolving bugs
* Refactoring code
 
Minor verison updated to sync lib, Meteor and npm version

### 0.1.11 "San Remo" (03.06.2015)
* Code partially refactored with help of bitHound 
* New directory 'partners' added
* Added file for codecomplexity.com

### 0.1.10 "Genova" (31.05.2015 - 02.06.2015)
* CALL procedure() statement
* bitHound advices
* bower.json file updated

### 0.1.9 "Torino" (29.05.2015 - 31.05.2015)
* SERIAL data type added
* Changed package.json
* Sample application AlaSQL Codex (alasql.org/codex)
* Changed type conversion procedure for INTEGER, JSON and other types
* TypeScript definition file: alasql.d.ts

### 0.1.8 "Pisa" (22.05.2015 - 28.05.2015)
* SELECT FROM syntax
* Export to multiple sheets workbook
* SQL-99 features list
* Changed README.md
* PEOPLE.md moved to wiki
* VALUE OF SELECT operator
* bitHound file

### 0.1.7 "Parma" (17.05.2015 - 22.05.2015)
* Fixed BETWEEN AND and AND parsing priority bug (KPI1:95%)
* Fixed SUM() with NULL(undefined) values
* SLT tests run
* select1.test passed 100%
* Set jsdoc environment
* Added 'var y' and functions for NULL and undefined conversions
* Fixed AVG() aggregator for NULL elements
* New gulp commands: 'gulp doc' and 'gulp console'
* Some jsDoc documentation tag added
* Expression statement ( = 2*2 )

### 0.1.6 "Palermo" (13.05.2015 - 17.05.2015)
* SET NOCOUNT OFF (for CREATE and INSERT)
* ROWNUM() and ROW_NUMBER() functions
* Promised version of alasql() - alasql.async() (based on es6-promises)
* SELECT * FROM Json
* SEARCH COMMA selector
* Fixed bug with ORDER BY 1,2,3
* Added subqueries for INSERT/DELETE/UPDATE
* First 'official' ECHO plugin released (REQUIRE ECHO)
* New catalogs added for future plugins
* Meteor package 'agershun:alasql'
* Changed readFile and readBinaryFile to read data from Meteor server
* Added alasql.path
* Test program improved

### 0.1.5 "San Marino" (12.05.2015 - 12.05.2015)
* Added Meteor package (agershun:alasql) - still does not work - skeleton
* Northwind test database - test for speed and SQL
* Added w3 database (Northwind analogue)
* Fixed FOREIGN KEY problem

### 0.1.4 "Napoli" (09.05.2015 - 11.05.2015)
* Convert Meteor/Mongo collections on the fly 
* Added METEOR() from-function
* Fixed $[0] -> $0 for parameters
* utils/2ch.js - utility for minification of AlaSQL (calculate size of economy)
* d3 graph path samples
* alasql.options.autovertex flag - create vertices if not found
* EQ() selector
* LIKE selector
* RETURNS selector - return record with columns like in SELECT
* ALL() and ANY() selectors
* Added CREATE TABLE column UNIQUE constraint on INSERT/DELETE/UPDATE
* Added OBJECT_ID() function (like in T-SQL)
* Added parts and optional for specific database compatibility
* Changed REFERENCES syntax
* dbo always as default database (for some compatibility with T-SQL)
* NOT NULL check on INSERT/UPDATE
* CHECK constraint (for whole table)
* CURRENT_TIMESTAMP function
* UNIQUE constraint (whole table)
* VARCHAR(MAX)
* CHECK constraint for columns
* FOREIGN KEYS for columns and tables

### 0.1.3 "Vaticano" (08.05.2015 - 09.05.2015)
* Check for null values for SEARCH
* ORDER BY for SEARCH operator
* Brackets for SEARCH selectors (WITH() selector)
* SEARCH DISTINCT, UNION ALL, UNION selectors
* Added simple PATH() selector

### 0.1.2 "Firenze" (06.05.2015 - 07.05.2015)
* Simple compilation of SEARCH operator
* SUM(),COUNT(),MIN(),MAX(),FIRST(),LAST() search aggregators
* The # operator, CREATE VERTEX #
* SEARCH # - start with object
* SERCH smth # - test for object
* SEARCH VALUE - leave only one first object in the result
* Bug in browser version (no global object)
* Changed Bower
* CREATE GRAPH
* Minor changes in SEARCH over XML syntax
* New tests added

### 0.1.1 "Milano" (03.05.2015 - 04.05.2015)
* XLSXML() into- function with colors
* $$hashKey - remove Angular's key
* CREATE VERTEX, CREATE EDGE
* SEARCH objects
* SEARCH graph
* "name" as name for graph vertices and edges
* Added INSTANCEOF selector
* Added CLASS selector
* * selector, + selector, ? selector, !selector for SEARCH in JSON and graphs
* XML() from function
* SEARCH INTO functions

## 0.1.0 (aka 0.0.52) "Venice" (02.05.2015 - 03.05.2015)
* Added INFORMATION_SCHEMA from variable
* Fixed localstorage dropTable with AUTOCOMMIT OFF
* STD() function added, STDEV(),STEDEVP(),VAR(),VARP()
* DISTINCT and ALL with custom aggregators (like STD(DISTINCT a))
* UNION problem fixed
* IE9 - save plain text and XLS()

### 0.0.51 "Rimini" (23.04.2015 - 02.05.2015)
* alasql.options.modifier flag added
* alasql.options.columnlookup flag added
* SELECT * REMOVE COLUMNS a,b 
* SELECT * REMOVE COLUMNS LIKE 'b%' 
* Remove columns from .columns schema
* Custom aggregators - added additional calls (init and in the cycle)
* Added MEDIAN() aggregator

### 0.0.50 "Seoul" (21.04.2015 - 22.04.2015)
* CREATE VERTEX and CREATE EDGE syntax
* Fixed MIN and MAX functions and aggregators #93
* Found UPDATE bug with column/columnid
* Fixed bug with valueOf in comparision

### 0.0.49 "Beijing" (19.04.2015 - 21.04.2015)
* CREATE CLASS
* INSERT INTO class
* INSERT INTO class returns inserted value
* The # operator
* Classes support
* Tests with SEARCH syntax and tests for CREATE EDGE and CREATE VERTES
* Fixed bug with leaking to global.key

### 0.0.48 "Amsterdam" (18.04.2015 - 19.04.2015)
* Fixed bug indexedDB.webGetDatabaseNames in Firefox
* Some bugs from Sqllogictest fixed (see test258)
* Bower package registered
* Fixed CASE bonding query to this error

### 0.0.47 "Antalya" (16.04.2015 - 18.04.2015)
* Added CORRESPONDING keyword to the grammas
* Fixed export to Excel - with data types
* New version of FileSaver is updated
* New INTO XLS() function with colors(!)
* Added params parameter to intoallfn()
* master and develop branches fixed

### 0.0.46 "Cape Town" (14.04.2015 - 14.04.2015)
* Cleaned 'test' directory
* Fixed problem with tests
* Fixed bug with localStorage DELETE FROM (without WHERE)

### 0.0.45 "Rio de Janeiro" (13.04.2015 - 13.04.2015)
* Changed CRLF for alacon.js and alaserver.js to LF

### 0.0.44 "Roma" (02.04.2015 - 13.04.2015)
* Added params to SQLite attached database: alasql('ATTACH SQLITE DATABASE a(?)',[event],cb);
* Root directory was cleaned
* Gulp version is updated
* Fixed bug with (SELECT) and EXISTS() in SELECTS with GROUP BY

### 0.0.43 "The Wall" (25.03.2015 - 01.04.2015)
* Created "develop" branch for git-flow
* Fixed GREATEST and LEAST() bugs
* Added flags {sourcefilename: "aaa", range:"B4"} to INTO XLSX() function
* CREATE TABLE one(two,three) - without coulmn types

### 0.0.42 "Robin" (17.03.2015 - 25.03.2015)
* MAX() and MIN() math functions renamed to GREATEST() and LEAST()
* ORDER BY 2,1
* :: casting operator
* UNARY PLUS
* NOT LIKE
* NOT\sLIKE and NOT\sBETWEEN for multiple spaces
* Removed "Test238"

### 0.0.41 "Eagle" (12.03.2015 - 17.03.2015)
* `column` for column names
* ``JavaScript expression`` for JavaScript
* Changed package.json (main:alasql.js)

### 0.0.40 "Sapsan" (24.01.2015 - 06.03.2015)

* IF EXISTS() and subqueries
* MERGE syntax
* alasql('#sql1');
* alasql(document.querySelector('#sql'));
* alasql(function(){/* SELECT 100 */}); for multiline SQL statements
* SELECT one.a,one.b INTO "one.xlsx" FROM "one.json" AS one
* Cut first BOM character when reading text files in UTF-8
* LIKE is case-insensitive

### 0.0.39 "Everest" (17.01.2015 - 23.01.2015)

* `JavaScript()` expressions and statements SELECT `Math.random()*100`
* Added conversion to number for strings like: ' 123 '
* Fixed from HTML() function (childNodes -> children)
* CREATE FILE DATABASE IF NOT EXISTS "filename.json"
* DROP FILE DATABASE IF EXISTS "filename.json"
* SELECT a->(1+1) - show ( and ) in toString() function
* CROSS APPLY and OUTER APPLY (!)
* Float numbers like 10e20
* SELECT COLUMN a+(SELECT MAX(b) FROM one) FROM one - SELECT in Expressions
* Turned off WHERE optimization (due some problem with indices)
* OVER PARTITION and OVER ORDER syntax
* NIST SQL Example Tests passed (except constrains and subquery in delete)
* Errors handling
* SET ERRORLOG ON/OFF (trap errors)
* COALESCE() function skips NaN values as well as NULL
* SET CACHE ON/OFF - turn on/off SQL statements caching
* loadFileFrom('#selector') - to read data from HTML <tag> 

### 0.0.38 "Elbrus" (17.01.2015 - 17.01.2015)

* Additional wrapper for FileSaver to work with R and V8 (http://cran.r-project.org/web/packages/V8/vignettes/v8_intro.html)
* Fixed ROLLUP, CUBE and GROUPING SETS()
* Added Apache Cordova for Windows 8 support


### 0.0.37 "Ararat" (09.01.2015 - 16.01.2015)

* Added test for "? IN @(?)"
* Convert  -> correct DATE("20141008")
* TRUNCATE TABLE table;
* Fixed bug when COUNT and SUM() aggregators shows 'undefined' with zero groups
* test-sql tests for compatibility with other databases
* SELECT TEXT -> SELECT TEXTSTRING (do not conflict with TEXT data type)
* Fixed bug: different databases for different FROM and JOIN parts
* Google Spreadsheet integration with Tabletop (https://github.com/jsoma/tabletop) FROM-function: alasql('SELECT * FROM TABLETOP(?)',[url]);
* Changed worker() method
* DECLARE with multiple variable definitions and initial value (DECLARE @one int = 123)
* SET a->property->0->(1+1) = 100
* Views: CREATE VIEW, DROP VIEW, SELECT FROM VIEW, JOIN VIEW
* Multi line comments /* */
* WITH SELECT statement
* Appach Cordova loadFile and saveFile procedures
* Test Alasql with Cordova on iPhone, iOS emulator, and Android emulator, Windows 8
* Fixed bug with npm install (bin directory)
* Fixed bug in localStorage with local variable
* fileExists() function
* FILESTORAGE engine for Node.js and Apach Cordova


### 0.0.36 "Happy New Year" (23.12.2014 - 08.01.2015)

* REDUCE Aggregator for custom aggregators
* LINQ functions (fluent interface):
 * alasql() or alasql(data)
 * From()
 * Where()
 * OrderBy()
 * GroupBy()
 * Having()
 * Select()
 * Top()
* RANGE(1,10) - from function => [1,2,3,4,5,6,7,8,9,10]
* HTML-from and into functions
* Clean root directory
* GO keyword as semicolon
* global alasql => var alasql
* SELECT * INTO SQL() FROM ? - into-function for generating INSERTS
* SELECT TOP 10 PERCENT * FROM ?
* ORDER BY _ - fixed
* ORDER BY formula (ORDER BY MID(a,2,1))
* GROUP BY formula (GROUP BY MID(a,1,1))
* HAVING with formulas (HAVING COUNT(*)>1)
* Fixed COUNT(*) and COUNT(expression)
* COUNT(DISTINCT all)
* Subquery SELECT (SELECT)
* IF expr statement 
* OBJECT_ID(tableid) function
* IS NULL and IS NOT NULL operators
* SET option value (ON/OFF)
* OVER PARTITION ORDER BY syntax
* SET option ON/OFF (alasql.options.autocommit)
* SUM(DISTINCT a)
* Create table column NULL constraint syntax
* WebWorker (alasql-worker.js)
* GETDATE() returns date 
* PRINT statement
* Tests renumbered and fixed
* REQUIRE 'plugin.js'
* alasql.worker("../alasql.js", ["plugins.js",...], callback)
* @localvariable
* SET @localvariable = expression
* WHILE, CONTINUE, BREAK, BEGIN END syntax
* WHILE statement
* alasql.worker() - run WebWorker
* alasql-worker.js - library to run webworker
* FROM @localvariable
* SELECT INTO @localvariable
* CONVERT(type,value,style)
* Fixed multiple same aggregators bug
* DECLARE @locarvariable type

### 0.0.35 (14.12.2014 - 22.12.2014)

* Added [?] array conversion
* ARRAY Aggregator (http://stackoverflow.com/questions/15887900/group-objects-by-property-in-javascript?rq=1)
* _ column for whole record
* SELECT INDEX
* SELECT RECORDSET
* SELECT TEXTSTRING

### 0.0.34 (14.12.2014 - 20.12.2014)

* New User Manual written
* Remove $$hashKey field for Angular.js integration
* New CSV and TAB parser with separators and quotes
* Fixed USING bug
* Fixed HAVING bug
* INTO JSON function() 

### 0.0.33 (12.12.2014 - 14.12.2014)

* SQL.js engine adapter (to real SQLite database)

### 0.0.32 (12.12.2014 - 14.12.2014)

* Read XLS and XLSX files (with xlsx package)
* AT is no longer required for json-objects @{}
* Stdin and stdout functions for Alacon (INTO TXT() FROM TXT())

### 0.0.31 (10.12.2014 - 11.12.2014)

* INSERT and DELETE for IndexedDB
* New tests for FROM and INTO functions
* UPDATE for IndexedDB
* DOM-storage support for Node.js (test159.js)


### 0.0.30 (03.12.2014 - 09.12.2014)

* Async version (except streamming)
* Fixed a hundred bugs after changes to async/sync version
* IndexedDB support (except INSERT/DELETE/UPDATE)
* DOM-Storage support (pull request #15)
* Grammar for STORE/RESTORE commands (for key-value storages)

### 0.0.29 (29.11.2014 - 02.12.2014)

* INSERT/DELETE/UPDATE for localStorage AUTOCOMMIT ON mode
* ROLLBACK for localStorage bug

### 0.0.28 (29.11.2014 - 01.12.2014)

* SET AUTOCOMMIT ON|OFF 
* localStorage in AUTOCIMMIT ON mode (without INSERT/DELETE/UPDATE)
* localStorage in AUTOCIMMIT OF mode (simple COMMIT)

### 0.0.27 (27.11.2014 - 29.11.2014)

* Function as a source of data for FROM ? AND JOIN ?
* Virtualization of source
* Query as a source in joins
* Multiple databases
* SELECT * INTO into-function() FROM from-function() 


### 0.0.26 (26.11.2014 - 26.11.2014)

* Show time in ms in Alasql Console
* JSON Object functions like d->getFullYear()
* JavaScript Dates
* SQL DATE functions
* alasql.stdfn() - runtime library
* CREATE TABLE AND INSERT with Date
* new Date()

### 0.0.25 (23.11.2014 - 25.11.2014)

* CAST(expression AS type)
* CONVERT(type, expression)
* alasql.options.datetimeformat = 'sql' / 'javascript' for CAST
* loadFile works in Node.js (changes some tests)
* SELECT VALUE
* SELECT ROW
* SELECT COLUMN
* SELECT MATRIX
* JSON(json-object)
* == and !== for deepEqual
* alacon - alasql console (to run: node alacon sql params...)
* Json property operator - JSON({a:1,b:[2,3]})->b->1 => 2
* Alaserver - server for Alasql

### 0.0.24 (23.11.2014 - 23.11.2014)

* Fixed LIKE operator (added ^ and $)
* Changed LOAD to SOURCE (like in MySQL)
* ASSERT operator
* JSON parser for ASSERT operator
* Fixed LIKE bug (need more attention)
* Fixed bug with default column names

### 0.0.23 (22.11.2014 - 22.11.2014)

* LOAD 'url.sql' - load and execute sql statements
* HELP - help on Alasql commands

### 0.0.22 (20.11.2014 - 22.11.2014)

* SELECT UNIQUE
* SELECT MINUS SELECT
* RENAME TABLE table TO literal
* ALTER TABLE table RENAME COLUMN column TO column
* ALTER TABLE table DROP COLUMN column
* Double quoter sign '' and \\' translates into '
* Test with World and Neptuno databases for compatibility
* alasql.test(), alasql.log(), alasql.write(), alasql.writep()
* Console

### 0.0.21 (19.11.2014 - 20.11.2014)

* SELECT a AS q, b w FROM one - AS is not required
* Comments '--' and '/* */' - single line
* Double quote sign in the string 'Bon''appetite'
* Compatibility with World Database (http://dev.mysql.com/doc/world-setup/en/index.html)
 * `literal` in backquotes like literal in square brackets [literal]
 * Additional grammar for ENGINE, CHARSET, etc. and other keywords for World database

### 0.0.20 (19.11.2014)

* SHOW DATABASES
* SHOW TABLES
* SHOW COLUMNS
* SHOW INDIEX (not fully)
* CREATE VIEW syntax
* Case-sensivity

### 0.0.19 (19.11.2014 - 19.11.2014)

* User-defined functions are database specific.
* Names in [brackets]

### 0.0.18 (15.11.2014 - 18.11.2014)

* Added more tests
* Some minor bugs

### 0.0.17 (13.11.2014 - 14.11.2014)

* Changed approach to execute and compilations
* Broke transactions (to be reviewed)

### 0.0.16 (11.11.2014 - 12.11.2014)

* PRIMARY KEY and FOREIGN KEY parser
* Use array of arrays as parameter value for FROM clause, column names like \[2\] or table\[0\] 
* alasql.queryArrayOfArrays(), utils.arrayOfArrays()
* PRIMARY KEY ON inseert, delete, update with one or multiple keys
* Fixed Uppercase and LowerCase problem
* CREATE DATABASE, USE DATABASE, DROP DATABASE
* CROSS and NATURAL JOINs
* RANDOM
* INSERT INTO table DEFAULT VALUES
* CREATE TABLE table (column type DEFAULT value)


### 0.0.15 (10.11.2014)

* alasql.userlib replaces with alasql.fn
* Fixed gulpfile.js
* CommonJS/AMD/UMD and require.js test
* alasql(sql, params, callback) function
* SELECT * FROM one AS t
* alasql('SELECT * FROM ? AS t', [data]); - array as subquery


### 0.0.14.5 (10.11.2014)

* valueOf() instead +Date();
* Date tests added
* INSERT date

### 0.0.14.4 (10.11.2014)

* Negative numbers 
* Float numbers
* Strings with single and double quaters
* CASE WHEN THEN END
* ROUND, MID

### 0.0.14.3 (09.11.2014)

* RIGHT / OUTER / SEMI / ANTI Joins!

### 0.0.14.2 (07.11.2014-08.11.2014)

* Added more tests

### 0.0.14.1 (07.11.2014-08.11.2014)

* Added more tests
* Minor bugs fixed
* Database.queryArray method()

### 0.0.14 (07.11.2014-08.11.2014)

* SELECT INTERSECT, EXCEPT
* BETWEEN, NOT BETWEEN
* Fixed problem wuth source.srcwherefn and query.wherefn
* IN (Subquery), NOT IN(Subquery) - IN(array)
* alasql.parser.parse renamed to alasql.parse
* Reduced AST tree in case of srcwherefn and wherefn optimizations in joins
* % (MODULO) operator (9%7 == 2)
* Fix 'undefined' column if alias is not exists
* x > ALL (subquery), x > SOME/ANY (subquery)
* Check if table exists in the database
* Multiple user defined functions arguments, like TRIPLE(a,b,c)
* SELECT TOP (as well as SELECT query LIMIT OFFSET)
* Fixed ALTER TABLE RENAME TO statement
* LEN(), UCASE(), LCASE(), UPPER(), LOWER(), NOW()
* Simple matching with LIKE '%day%'
* INSERT INTO test VALUES('a'),('10'),('20'),('c'),('30'),('d');
* SELECT INTO table SELECT query

### 0.0.13 (06.11.2014)

* FIRST(), LAST()
* Minor bugs with EXISTS 

### 0.0.12 (06.11.2014)

* SELECT * FROM test WHERE EXISTS(SELECT * FROM test2 WHERE test1.a = test2.a)
* User-defined functions (alasql.usrlib)

### 0.0.11 (06.11.2014)

* SELECT * FROM (SELECT * FROM test) t

### 0.0.10 (06.11.2014)

* SELECT UNION
* Started SQL tests

### 0.0.9 (06.11.2014)

* ROLLUP, CUBE, GROUPING SETS support

### 0.0.8 (06.11.2014)

* Minor bugs

### 0.0.7 (06.11.2014)

* WHERE column = expression optmization (creare index)

### 0.0.6 (04.11.2014)

* Developed new parser based on Jison
* Use Gulp for development platform
* Where optimization
* New names for fields => columns and recs => data

### 0.0.5 (30.10.2014)

* Changed order of LIMIT and ORDER BY processing

### Version 0.0.4 (28.10.2014-29.10.2014)

* Added /test/main.html mocha browser tests
* Added PERFORMANCE.md and perf.html tests
* StringValue.toJS()
* Added callback to Database.exec
* Sieve of Eratosthenes example
* Remove generation of recs after select in case of group by (for memory optimization)
* Added conversion for type MONEY for INSERT statement 

### Versions 0.0.1 - 0.0.3 (25.10.2014-27.10.2014)

* First version of Alasql

