Area |
Feature |
Description |
Impact |
Effort |
SDK |
Add demo app |
Add AJAX-style demo app |
No framework impact |
Medium |
Functional |
Order By |
Add support for order by on GETs |
|
Small |
|
Group By |
Add support for SQL Resource queries containing group by (use having instead of where) |
|
Small |
|
Aggregate Queries |
Add support for SQL Resource queries UNION, UNION ALL, INTERSECT and MINUS |
|
Small |
|
Query Case Insensitivity |
Add search case sensitivity param per request. Also make this a global setting. |
Likely database-specific implementation |
Medium |
|
Attribute Validation |
Standard and custom attribute validation on inserts and updates. Declared in SQL Resource definition, e.g. number range, string length or format. |
|
Large |
|
Transaction Management |
Configurable transaction boundaries for multi-object requests |
|
Medium |
|
Optimistic Locking |
Lock optimistically on timestamps or sequence number, i.e. select for update where last_modified = 'xxx' |
|
Large |
|
Statistics |
Implement statistics like number current open requests, historical requests, errors, etc. Expose through HTTP and JMX. |
|
Medium |
|
XML Preferences |
Configurable to return columns as attributes or as elements |
Change Serializer, add restsql.properties property |
Small |
|
Request Schema Validation |
Validate request document if configured |
|
Small |
|
Dynamic Configuration Reloading |
Reload configuration on properties file change (general, database and logging) |
Config class |
Small |
|
More Flexible Classpath |
TriggerManager expects single file/dir in triggers.classpath |
|
Small |
|
Logging Client Hostnames |
Add configurable option to show hostnames instead of IPs in access, error and trace logs |
|
Small |
|
Configurable Cascade Delete |
Child or extension rows are currently deleted explicitly. Make this a configurable option to suppress deletion, per SQL Resource. |
|
Small |
|
Cascade Delete by Query |
Delete by query (non-pk column) will fail with hierarchical in many-to-many or one-to-many if there is no cascasde delete FK instruction in schema. Issue delete from child where fk in (select pk from parent where column = value). |
|
Medium |
|
Extension Updates by Query |
Updates/Deletes by query to extension rows only works if a column in the extension is queried. Use correlated subselect of values to affect extensions. |
|
Medium |
|
Extension Updates when Not Exists |
If extension doesn't exist, updates will fail silently to the extension. If rows affected = 0, convert to insert statement. |
|
Small |
|
Relative path support |
Support relative paths to restsql.properties, e.g. embedded in the restSQL webapp GitHub Issue #8, and in the properties file itself (GitHub Issue #14 ).
|
|
Small |
|
Parameterized database location |
See GitHub Issue #12 |
|
Small |
|
Maven accessibility |
See GitHub Issue #13 |
|
Small |
Interop |
Broader Database Support |
Test with Oracle |
Oracle's JDBC driver does provide in the meta data the table for each column in a select. Need to create column descriptors in the definition to capture full restSQL functionality, e.g. views. |
Large |
Performance |
Connection Pooling |
Use JEE container's connection pool |
|
Medium |
|
Improve read response time for XML generation for hierarchical SQL resources |
Build XML natively instead of using objects |
Change to SqlResourceImpl |
Medium |