- Add: Use BETWEEN without parenthesis.
- Fix: Let ADD COLUMN use the given dbtypeid
- Add: NULLS FIRST/LAST clause in ORDER BY (#1187)
- Add: Support table/row names starting with numbers
- Add: Composite foreign keys implementation (#1179)
- Fix: Insert's toString() (#1177)
- Fix: DROP Filestorage Database with database name (#1184)
- Fix: usage of CURRENT_TIMESTAMP (Fix #1174)
- Add: GroupBy within nested array data set/params (#1167)
- Fix: Use unknown DB name
- Fix: Typescript typing
- Fix: QUART/MEDIAN/MIN/MAX on number/date/string
- 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
- 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
- Add: Specified XLSX sheet without knowing the name
- Add: xlsxml files with multiple sheets
- 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
- Fix: Error when installing caused by missing cli file in npm
- Better: Always find global object
- Better:
Use strict
mode for javascript
- 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)
- Better: Better usage via unpkg.com
- Better: Better usage via jsdelivr.com
- 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
- 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
- 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
- Add: React native support
- Fix: CSV error when quote set to empty
- Fix: autoExt bug when not set for CSV on read
- 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. Onlyxlsx
package is needed.
- Added: Last
S
inVALUES
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
- Addded: Support for "use strict"
- Fix: Select.toString() had bugs
- Update: Better and faster deep compare of objects
- 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
- 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)
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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())
- 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
- 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
The purpose of this release were hard work on:
- Documentation
- Resolving bugs
- Refactoring code
Minor verison updated to sync lib, Meteor and npm version
- Code partially refactored with help of bitHound
- New directory 'partners' added
- Added file for codecomplexity.com
- CALL procedure() statement
- bitHound advices
- bower.json file updated
- 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
- 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
- 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 )
- 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
- 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
- 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
- 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
- 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
- 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
- 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()
- 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
- 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
- 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
- Fixed bug indexedDB.webGetDatabaseNames in Firefox
- Some bugs from Sqllogictest fixed (see test258)
- Bower package registered
- Fixed CASE bonding query to this error
- 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
- Cleaned 'test' directory
- Fixed problem with tests
- Fixed bug with localStorage DELETE FROM (without WHERE)
- Changed CRLF for alacon.js and alaserver.js to LF
- 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
- 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
- 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"
column
for column namesJavaScript expression
for JavaScript- Changed package.json (main:alasql.js)
- 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
JavaScript()
expressions and statements SELECTMath.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
- 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
- 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
- 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
- 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
- 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()
- SQL.js engine adapter (to real SQLite database)
- 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())
- INSERT and DELETE for IndexedDB
- New tests for FROM and INTO functions
- UPDATE for IndexedDB
- DOM-storage support for Node.js (test159.js)
- 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)
- INSERT/DELETE/UPDATE for localStorage AUTOCOMMIT ON mode
- ROLLBACK for localStorage bug
- SET AUTOCOMMIT ON|OFF
- localStorage in AUTOCIMMIT ON mode (without INSERT/DELETE/UPDATE)
- localStorage in AUTOCIMMIT OF mode (simple COMMIT)
- 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()
- 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()
- 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
- 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
- LOAD 'url.sql' - load and execute sql statements
- HELP - help on Alasql commands
- 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
- 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
- SHOW DATABASES
- SHOW TABLES
- SHOW COLUMNS
- SHOW INDIEX (not fully)
- CREATE VIEW syntax
- Case-sensivity
- User-defined functions are database specific.
- Names in [brackets]
- Added more tests
- Some minor bugs
- Changed approach to execute and compilations
- Broke transactions (to be reviewed)
- 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)
- 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
- valueOf() instead +Date();
- Date tests added
- INSERT date
- Negative numbers
- Float numbers
- Strings with single and double quaters
- CASE WHEN THEN END
- ROUND, MID
- RIGHT / OUTER / SEMI / ANTI Joins!
- Added more tests
- Added more tests
- Minor bugs fixed
- Database.queryArray method()
- 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
- FIRST(), LAST()
- Minor bugs with EXISTS
- SELECT * FROM test WHERE EXISTS(SELECT * FROM test2 WHERE test1.a = test2.a)
- User-defined functions (alasql.usrlib)
- SELECT * FROM (SELECT * FROM test) t
- SELECT UNION
- Started SQL tests
- ROLLUP, CUBE, GROUPING SETS support
- Minor bugs
- WHERE column = expression optmization (creare index)
- Developed new parser based on Jison
- Use Gulp for development platform
- Where optimization
- New names for fields => columns and recs => data
- Changed order of LIMIT and ORDER BY processing
- 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
- First version of Alasql