Following is a listing of possible features collected over the years and known bugs. These are listed in no particular order. There may also be feature requests and bugs on the GitHub issues website.

We are actively looking for help in growing the framework. The Framework Developer Guide (local raw or pretty) will help you kickstart. Contribute using the GitHub-hosted restsql project. Contact support@restsql.org for more assistance.

Features

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

Bugs

Issue Description Impact Effort Priority
Metadata PKs Incorrect for non-parent tables Fix PK representations for extensions and child tables SqlResourceMetaData Small 2
Incorrect delete scope when parent PK name incorrect in request body See GitHub Issue #10 SqlBuilderImpl? Small 2