- now works with node-expat 2.0.0
- debugger and visualization in console.
- Fix Issue #558
- Node 0.8.x and other dependecy upgrades.
- Timeout support for update.
- Upgrade code-mirror to 2.32 to avoid space issue
- Changes to mem-cache-local to queue operations if connections are not available.
- Upgrade code-mirror to 2.3
- Update support.
- Insert JSON feature.
- Fix 493: ws events should include event name along with the payload
- No Compression if the CPU load is > 50%
- Version 0.7
- Retry once for idempotent requests on timeouts
- Agent.maxSockets increased to 1000. See Issue: ql-io#512
- Regression from previous fix. Remove duplicate click handlers.
- Fix ql-io#13 - disable autorun. Also use
pushState
to store history.
- Fix ql-io#478
- Support C style block comments
- Add file path/name to comiple errors
- Update versions
- Push fallback and optional params
- Explicit dependencies between modules.
- Update the context with the udf filtered data
- Add fallback syntax to the language
- Version 0.6
- Support array style reference in columns clause, such as
select 'b-1', 'b-3'['c-1'] from a
. - Disable ability to enable/disable ecv checks by default. You can turn it on by adding arg
--ecvControl true
to the start script.
- Add optional parameters in route. Including "with optional params" in route would make params without ^ prefix optional.
- Add more test cases, some bug fix in app.js to fully support defaults.
- Be able to start on multiple ports (separated by commas)
- Added support for multiple attachments.
- Support larger than 1mb data in local-mem-cache.
- Moved maxNestedRequests warning out of the _.each loop in select.js
- Add support for multipart requests.
- End pending connections on close after responses are written.
- Support cache events (hit, miss, new, error, info, heartbeat)
- Switch to new cluster2
- Added new syntaxes "with part" and opaque insert param.
- Add a null check on join loop
- Fix expression parsing in string template so that a token like
"{obj.prop[?(@.price > 2)]}"
is valid
- Add support for escaped quotes in string values
- Updated PEG.js to 0.7. I see 50% improvement in speed which matters for string and uri templates as we don't yet cache parser output.
- Remove duplicates from in clause.
- Use hasOwnProperty in place of prop lookup while joining
- Deal with non UTF-8 encodings from upstream resources
- When joining, use '==' to maintain backwards compat
- Minor cleanup of event names and classes to make the API less specific.
- Refactor logging to error, access, proxy and default logs. The proxy log file contains outgoing req/resp, access log contains incoming requests, error log contains all errors and warnings, and the rest go to ql.io.log. All these files are rotated.
- Include a payload with begin events
- Support local offset and limit
- Cleanup logging (first phase)
- Fix the case of alias names with joins and UDFs.
- Support null values in Values
- Fix the issue posted in https://groups.google.com/forum/?fromgroups#!topic/qlio/JaMC1GVP1sA.
- Add UDFs in where clause to post process rows. You can either tweak or remove a row. See https://gist.github.com/2334012 for semantics of UDFs. UDF support for the where clause is still a TODO.
- Experimental UDF support.
- Release version 0.5.
- Fix regression in uri-template formatter (ql-io#409).
- Upgrade cluster2, and also pass ecvPath to cluster2
- Fix issue 404
- Cache config param for cache provider changed from cache.name to cache.impl
- If cache provider not found with the given token then try to find it relative to "node_modules" of process.cwd().
-
Add
using headers
clause on return statements. Here is an example.return 'hello' via route '/hello' using method get using headers 'Cache-Control' = 'max-age=3600'
- Externally supply Cache to engine through config.
- Logging Enhancements. Lot of bugs fixed in hierarchical logging.
- Fix ql-io#329.
- Compression support for ql.io clients. Responses for routes are compressed as per 'accept-encoding' header. gzip and deflate are supported. Default is gzip.
- Factor out cluster function into cluster2. This change also moves ECV checks to cluster2.
- Caching support based on new
expires <seconds>
keyword create table (example below).compute key
monkey patch to generate custom keys.
create table
create table auto.compute.key on select get from 'http://a.uri.net' ..other things .. expires 10
;
compute key (monkey patch)
exports['compute key'] = function(args) {
//return args.uri;
var key = [];
key.push(args.table);
key.push(args.uri);
key.push(JSON.stringify(args.params));
return(key.join(':'));
};
- Remove extraneous event emitted while processing the where clause.
- Fix ql-io#372.
- Upgrade CodeMirror to 2.22
- logging support in monkey patches. Ex. exports['patch body'] = function(args) { var log = args.log; log('error', 'Something went wrong'); // throws an error event log('warn', 'Watch out'); // throws a warning event return {}; }
- Fix the broken template app
- Fix route to table dependency resoluton for non-selects
- Remame
/routes
to/api
- Restyle routes and tables navigation
- Fix "Can't render headers after they are sent to the client" error
- Support DELETE statements
- Add a page showing all installed packages. Try http://:/deps (or http://localhost:3001/deps).
- There are many conventions to convert xml to json. If the default xml2json does not work you, you can override it on table by table basis. To override, specify path to an xformers.json file. Here is an example. { "some.table" : "modulename relative to process.cwd() or a module from NODE_PATH" }
- Gzip and Deflate content encoding support for upstream responses.
- Recover shutdown/stop from extraneous pid files.
- Simplify response decoding. In stead of setting encoding on the response, collect buffers into array, and then decode in the default impl of 'parse response'. Also add tests.
- Removed /in-flight requests api.
- mkdir logs dir if not present when initing the console
- Enable numbers in
in
clause and args of udfs
- Refactor request processing - add more tests.
- Refactor request processing - this work is in progress.
- Bug ql-io#286 reopened and fixed with better tests.
- Escalte table/route loading errors to the logger
- Export version from each module. You can find version of the engine using
require('ql.io-engine').version
. - Include version number in
User-Agent
andServer
headers.
- Support scatter-gather for requests with bodies by adding a
foreach 'param'
for theusing bodyTemplate
cluase. This allows scripts to batchup POST and PUT requests. - Support ejs body templates.
- Skip files that don't end with
.ql
. - Fixed minor formatting issues with /table?name= html rendering.
- With /table?name= feature 'describe table ' returns json in console.
- Changed the query param for json in /routes, /tables, /route, /table from json=true to format=json.
- Bug fix for ql-io#286
- "/ecv" check returns network ip instead of loopback address
- Let the engine allow a monkey patch to parse the response. Useful to process binary formats like avro.
- HTML interface for
/routes
and/tables
. You can get JSON by either includeAccept: application/json
or query paramjson=true
.
- Downgrade nodeunit
- Version 0.4
- Propagate
connection.remoteAddress
to scripts and patches. Scripts can access this via{remoteAddress}
and patches viaparams.remoteAddress
. - Handling 404s and sanitizing the returned url avoiding XSS issue.
- Set
application/json
on JSON responses. - Fix signal handling in the app module.
- Update har-view to show total time.
- Ip address is retrieved using os.networkInterfaces().
- '/ecv' poke '/tables', instead of '/q?s=show%20tables".
- Send resourceUri, statement, params to
patch status
,patch uri
, andpatch response
. - Due to a previous change,
validate params
was not receiving all params. Fixed now.
- Fix to make Routes case sensitive
- Type concercion during xml2json
- Report start of the statement and not the end for line numbers in the console
- Remove mistakenly added debug: true in app.js
- New config parameter 'enable q', a boolean, is added to console to disable '/q?s=' way of invoking scripts.
- Improve support for in-proc selection and joins. If the RHS is multi-valued, selection is ORed. Multiple conditions are ANDed ('and' === and).
- Support for extended xml content-types returned per rfc: http://www.ietf.org/rfc/rfc3023.txt
- Also better handling of unrecognized content-types.
- Integrate HAR view (https://github.com/s3u/har-view) replacing the vanilla tree view.
- Re-integrate ECV
- Limit response size to 10000000 bytes from upstream sources. You can change this with
maxResponseLength
in the config. - Limit outgoing requests per statement to 50. You can change this with
maxRequests
in the config. - Chain events for logging done with log-emitter.
- Add a new JSON based interface to browse tables and routes. Try
/routes
to start browsing. - Move from cluster module to the native cluster.
- Refresh all dependencies.
- Change node.js dependency to 0.6.x.
- [ql.io-compiler-0.3.1] Supported a wider range of characters in quoted words in statements.
-
Clients can occasionally get socket hangup errors when origin servers close connections without sending a
Connection: close
header. See nodejs/node-v0.x-archive#1135 for some background. To avoid such errors, http.request.js now automatically retries the request once provided the statement that caused the HTTP request is aselect
. -
The engine can now consume CSV response in addition to XML and JSON.
-
Fixed request body processing for routes (ql-io#161).
-
OAuth example (ql-io#121) - OAuth2 is trivial as ql.io proxies headers from clients to servers. OAuth1 requires glue code to compute the Authorization header. http://ql.io/docs/oauth shows an example of how to that.
-
Use npm installed modules for ql.io-site (ql-io#116)
-
Handle empty response bodies gracefully (ql-io#98)
-
Recover from partial failures in case of scatter-gather calls (ql-io#90) - some statements can result in multiple HTTP requests. When this happens, the engine used to fail the entire statement if any of those requests fail. The engine now looks for success responses and aggregates them.
-
Update CodeMirror to support line-wrapping (ql-io#11) - no need to split lines manually anymore.
- Initial public release