Skip to content

Releases: CapsicoHealth/Tilda

v2.5.1

07 Jun 19:54
Compare
Choose a tag to compare

Tilda v2.5.1 is a large release due to the elapse time since v2.4. Due to the work, v2.5.0 was not even released publically.

In additional to many miscellaneous features and bug fixes, the focus of this release covered three areas:

  • Major generalization of datetime and timezone handling
  • Powerful new tools for data exchange between PG and BigQuery
  • Masking enhancements on the heals of v2.4

New Features

DATETIME extensions

Dealing with date/times is always VERY complicated, and people claiming it's easy don't know what they are talking about. In particular, many developers trade-off short term gains with long-term pain when brushing away timezone concerns and datetime storage. In this modern age of more powerful traditional databases such as Postgres or cloud-scale databases such as BigQuery, the rule is always to use timestamps with time zones (https://wiki.postgresql.org/wiki/Don%27t_Do_This#Don.27t_use_timestamp_.28without_time_zone.29).

Tilda since the beginning took the approach of enforcing this view and ALL datetimes are stored as timestamp-with-time-zone (or equivalent) and an additional timezone field would be generated and stored so that timestamps could be retrieved and displayed with the expected timezone for an application. In this release, we have added more flexibility to how datetimes with timezones are handled in Tilda with far reaching impact. See this documentation for details. We think that these new capabilities give Tilda world-class timezone handling capabilities.

That being said, there is still work to be done, especially around migration. We would like in particular to enable moving between column and row-based TZ methodologies automatically. This is for a future release.

#780 tzMode: row/column -> Allow the storage of TZ columns to be specified.
#805 Adding comparators to QueryHelper for DateTime vs Date
#815 Add microseconds to timestamp exports (BREAKING CHANGE)
#817 Provide a flag to indicate whether a "DATETIME" column should be handled as a timestampz or just timestamp.

Data Exchange

We have been working with projects that handle more mixed environments between Postgres and BigQuery and needed a simpler high-performing way to move data back and forth. There are lots of tools out there and all, but having a simple mechanism as part of Tilda ready to use has proven to be a nice feature.
#814 Rewrite of Export utility to focus on PG<->BQ data transfers
#813 BigQuery To Postgres Streaming Utility
#789 Enable generic export from ANY table (not necessarily from a TILDA defined table).

Masking enhancements

In v2.1, we introduced masking capabilities to allow applications to dynamically implement rule-based masking of data. In this release, we implemented a number of improvements and fixed a few issues.
#776 Make masking work through views
#724 Allow masking to be turned on/off at the thread level.
#774 Add masking capabilities to JSON data type
#710 Masks for dates and datetimes are not working
#775 DATE and DATETIME Truncate capabilities to Year/Quarter/Month for masking
#799 Masks fail with view aggregate, transforming the data from a single value to an array.

Others

#821 Primary/Foreign key definitions for BigQuery (NOT ENFORCED)
#812 allowEmpty: currently, all "not-null" Strings are enforced to be not-empty either. With this feature, one can specify that a column is not-null but still allows empty string ''. By default, it's false.
#809 Allow empty strings for default values
#808 QueryHelper requires calling where() when creating a select clause. This makes dynamic clauses harder than needed. Need to make where() automated.
#782 Migration support for adding not-null columns
#801 Reverse support for BigQuery
#793 Allow STRING to CHAR migrations
#803 Renaming ClassStaticInit to ClassUtils
#810 Adding "salting" abilities to EncryptionUtil
#785 CheckDB enhancements

Build

Tilda is currently built using Eclipse-based build capabilities, which sucks. We are transitioning to a command-line approach using Gradle and getting rid in particular of dependencies we currently have around Eclipse plugins that are no longer supported (e.g., the Google Tools Plugin). This is an ongoing effort, but we are starting on this journey in this release. All library dependencies have been updated as of June 2024.
#820 Removing dependency on Google tools plugin and full update of all JAR dependencies.
#818 Move to 2_5 Tilda version
#802 Upgrade to Log4J 2.22
#794 Upgrade to Log4J 2.20
#787 JavaDocs update
#783 Update Postgres JDBC driver to postgresql-42.6.0.jar

Bug Fixes

#804 RS.absolute(Start) causes an exception when Start is invalid (i.e., in the past).
#788 Misleading error message when a foreign key is not automatically found
#800 Aggregates over a column with values generates invalid Java code
#798 Catalog and Acl updates during migrate are very long and causes massive query output to the logs which is not useful AND slows down things a lot.
#797 CODE_ONLY Views are being migrated causing errors.
#795 Column names in column expressions are not escaped properly.
#778 Calling newLine() right after the QueryHelper constructor causes syntax errors
#784 LookupWhereXXX methods can generate compile errors if a column is named "start" or "size"
#792 Migration for column renaming (and perhaps not-nulls as well) doesn't handle HIST patterns. Also check for clones.
#790 Queries over very large tables are not finishing and consuming all memory.
#786 CSHelper file download caching optimization
#779 check and map methods not generated properly for CHAR columns with valuesets
#807 Generated code for runSelect in Factory classes is not flexible enough to handle full select queries as well as where-clause-only queries.

v2.4.0

23 Jun 13:24
bed95b0
Compare
Choose a tag to compare

This release provides a focus on Migration and Tilda enhancements to manage larger data models and enhance the meta-data that's available. This is a large release so please take the time to read the notes below.

Documentation remains on the Wiki (https://github.com/CapsicoHealth/Tilda/wiki).

Breaking

First of all, there are three breaking changes. In particular, we are finally moving to Java 11 from V8, which is a big jump Java-wise. Update your build and runtime environment accordingly. We expect to move to Java 17 early 2024.

  • #772 Move to Java 11.

We also made a decision to change some of the code-gen for nullable attributes. Lots of complaints and usability issues with the way things were. We figured the change is easily automatable with regular expressions across a code-base, and so we took the jump. Instructions are in the ticket itself.

  • #518 Revisit the decision of doing setXyzNull vs setNullXyz and isXyzNull Vs isNullXyz.

Finally, this is a change from v2.3 when we introduced the "tag" construct. Very customers used that feature so we felt the impact was minimal. Once again as well, the changes are trivial to implement.

  • #751 Change "tag" to "referenceTag" as that is closer to "referenceUrl" in what it does and how it works. also update enbedding in descriptions form ${TAG} to ${REFERENCE_TAG}.

Migration Enhancements

Several enhancements to the Migration process, in particular, the maintenance of the data catalog and full logging of migration actions in a table and in generated .sql files.

  • #742 Automatically create data catalog for all Tilda assets. Extend from Tilda formulas and so on.
  • #589 Track migration actions in a table.
  • #767 Generate an SQL file to capture the queries to be run for a Migrate session.
  • #771 The Migrations and cloneAs features don't work properly together.
  • #754 In some cases, migration fails for the Tilda helpers start script due to not being able to detect First/Last aggregates.

Tilda Enhancements

A number of simple and useful enhancements to the modeling capabilities of Tilda, in particular, the addition of STRING_AGG, clustering flag for indices, and entity classifications.

  • #766 Enhancement for declaring STRING types.
  • #761 Add support for customizing created/lastUpdated/deleted as part of conventions.
  • #755 Add NTHVALUE as an alias to NTH_VALUE.
  • #750 entityClass support to classify entities in a schema, for better grouping and documentation.
  • #749 Table "cloneFrom" to be a mirror of "cloneAs".
  • #745 Add support for STRING_AGG as an aggregate.
  • #630 Add clustering flag to indices.
  • #746 Revisit decision to show missing invariant field for PK columns as an error vs simply defaulting and only show an error if someone explicitly set it to false.

Thank you!

Database Utilities

In this release, we have built more database-oriented utilities. In particular, a brand new utility to do smart reorg of a databaase that is resumable and smarter than the standard Postgres vaccuum full.

  • #748 Smart Reorg utility.
  • #758 Tilda.RetireTable helper function.
  • #763 Reverse Improvements.
  • #760 CheckDB Helper command line utility.
  • #707 Export needs to be able to work off any ad-hoc table/view in a db without requiring Tilda mappings.

Minor Library Enhancements

  • #759 Connection executeSelectLong() and executeSelectString() helper functions.
  • #743 QueryHelper: add coalesce capabilities to comparison operators... for example, equals(col, val, coalesceVal) or something like that.

Infrastructure

  • #765 Move html2text from custom to JSOUP.
  • #753 JDBC driver update to postgresql-42.5.3.jar.
  • #764 Adding India time zone info built-in.

Bug Fixes

  • #768 Array parameters in queries are not handled properly if the passed in value is NULL.
  • #762 Docs shows many errors even if it seems to be completing successfully.
  • #757 Pivots do not allow multiple pivot aggregates on a single columns.
  • #756 Cleanup field JavaDoc description.
  • #752 __INITIALIZED element in Factory generated classes is not a good idea: Type Boolean is a value-based type which is a discouraged argument for the synchronized statement.
  • #744 Code Gen error when dealing with TreeSets vs Lists for array columns. See ClaimInpatientView for example.

v2.3.0

04 Jan 15:42
4f266ea
Compare
Choose a tag to compare

This release provides a few new features and some bug fixes consolidating the gains of V2.2.

Documentation remains on the Wiki (https://github.com/CapsicoHealth/Tilda/wiki).

New Features

A .sql file is now generated that targets BQ.
#715 BQ SQL file generation

The ability to use "type":"STRING(100)" instead of "type":"STRING", "size":100. And the runtime ability to now get the string size information, which can then be used for error handling during input checking, or UI workflows.
#738 Enhanced String size notation
#736 Add String size to ColumnDefinition for runtime meta-data

"tag" support for tables
#732 Tag to complement documentation generation for ReferenceUrl

Updates to the cloneAs capability, as per https://github.com/CapsicoHealth/Tilda/wiki/Tilda-JSON-Syntax%3A-Object-Cloning.
#733 cloneAs Enhancements

Runtime capabilities to get access to system-generated messages when running BQ jobs.
#740 Enable BQJobs to return messages from the backend such as errors, warnings or statuses.

Misc niceties added to the Gen utility
#728 Add more stats to Gen's final Woohoo! message... For example, how many objects and views have been created.
#727 Allow for Gen to skip some files provided in the command line

Runtime updates
#726 Upgrade to postgresql-42.5.1.jar

Bug fixes

#739 Many failures when using Reverse on an SQLServer database
#737 Migration of Tilda.Connection table fails because connection deadlock
#735 Default NULL setters not activated at creation time
#725 Add support for LocalDate to JsonPrinter

V2.2.0

02 Oct 19:45
992e4b8
Compare
Choose a tag to compare

This release provides a few new major features and some bug fixes.

Documentation remains on the Wiki (https://github.com/CapsicoHealth/Tilda/wiki).

"Breaking" Changes

The build has moved to Java 11. The code generated is still completely Java 8 compatible though. So it is not really a breaking change per se, but expect V3 to move off of Java 8 completely and require Java 11.

Major New Features

History Pattern

Built-in capabilities to create mirror audit tables and track row-level changes. Documentation can be found in the Wiki at https://github.com/CapsicoHealth/Tilda/wiki/Tilda-JSON-Syntax:-History-Pattern.
#713 History Pattern
#720 History Pattern enhancements

Conventions

Enforce a number of conventions across a project. Documentation can be found in the Wiki at https://github.com/CapsicoHealth/Tilda/wiki/Tilda-JSON-Syntax%3A-Conventions.
#712 Conventions

Documentation

Documentation is central in the testing of Tilda and this release sees a number of important enhancements

Enhancements

#722 Upgrade to Log4j2 V2.19.0
#721 Add "regular indices" to generated HTML documentation.
#412 Add "Generated On..." timestamps for generated HTML documentation.
#714 Allow FK definitions over arrays.
#719 Google FHIR Jar Update to google-api-services-healthcare-v1-rev20220818-2.0.0.jar
#708 Upgrade to ANTLR 4.10.1

Bug fixes

#711 extra comma in index list in json definition causes nullptr exception in Gen
#706 extra comma in FK list in json definition causes nullptr exception in Migrator.java
#699 Updating GSON suppoer for modern JDKs where built-in classes such as LocalDate or LocalDateTime can no longer be introspected automatically.
#520 In a view column's aggregate's orderBy, we cannot specify the table/view name.

Thank you!

V2.1.0

06 Jul 13:54
992e4b8
Compare
Choose a tag to compare

This release provides a few new major features and some bug fixes.

Documentation remains on the Wiki (https://github.com/CapsicoHealth/Tilda/wiki).

Major New Features

Value Masking

Documentation can be found in the Wiki at https://github.com/CapsicoHealth/Tilda/wiki/Tilda-JSON-Syntax:-Field-Masking.
#696 Value Masking

Window and Aggregate Functions

Documentation can be found in the Wiki at https://github.com/CapsicoHealth/Tilda/wiki/Tilda-Aggregate-And-Window-Functions.
#678 Need to introduce window functions such as LEAD, LAG, ROWNUMBER.
#689 Add support for range for aggregates
#688 Add support for Partition By on aggregates
#687 Aliases for column and aggregate types

Breaking changes

#693 FHIR base classes updates (BREAKING)

Enhancements

#703 Allow incremental Refill functions to take in '1111-11-11' for a full refill, the same as what NULL would do.
#702 Enable Export to target new tables in BQ
#694 Add "postfix" ability to defining .* view columns
#698 ValueHelper enhancements
#697 TILDA.array_sort DB helper function
#682 Upgrade to postgresql-42.3.3.jar
#675 NUMERIC enhancements

Bug fixes

#700 Updating array_cat aggregate definition for Postgres to use the new anycompatiblearray
#692 Loader doesn't work in silent mode with dataset names
#681 Pivoting logic fails when reusing the same column multiple times for multiple aggregates... for example, min/max/avg of the same set of values.
#680 Pivoting "globals" attribute seems to not be working

Thank you!

V2.0.0

03 Feb 21:54
f079d89
Compare
Choose a tag to compare

Tilda has matured so much over the past year and been deployed across a variety of production systems, so we decided to jump to V2, reflecting large new features and a couple of breaking changes in architecture.

Documentation remains on the Wiki (https://github.com/CapsicoHealth/Tilda/wiki) and has been updated to reflect most of the new features. More will be done in coming weeks to update all the JSON syntax tree (https://github.com/CapsicoHealth/Tilda/wiki/Tilda-JSON-Syntax).

Major New Features

Enhanced Pivoting

Pivoting was enhanced with some new major features doe more expressive power and more performance. In particular, the interplay between pivoting and aggregates has been greatly improved.

#659 Array aggregates in Pivot tables are not properly realized: they are not realized as arrays.
#661 DateTime aggregates in Pivot tables are not properly handled.
#592 Coalesce on an aggregate used in a pivot is not working as expected.
#660 New pivots.globals option to block main aggregates to be repeated in final view outside of any specified pivot value.
#658 New pivots.aggregates.aggregate option for nested aggregates.

These features are documented in the Wiki: https://github.com/CapsicoHealth/Tilda/wiki/Tilda-JSON-Syntax%3A-View-Pivots.

BigQuery

We have added a series of helper classes to manage connectivity to and from a BigQuery instance, including authentication, querying, job management and costing, Soon, we hope to have codegen to handle queries more automatically like we do for Postgres. At some point, schema management will also happen for Bigquery.

#668 BQ logic for job costing can't handle NULLs coming back from queries.
#640 Update from TILDA.BQJobDetails to TILDA.BQJobDetailsView for job meta-data info.
#627 Refactoring of BQHelper functionality for more GCP capabilities.
#605 BQHelper utility class.
#607 Export utility needs to enable exporting directly to BQ.

FHIR

Generic connector capability and basic functionality to connect to the Google FHIR store. Over time, this functionality will be generalized to connect to any FHIR store.

#645 Generic FHIR entity.
#628 FHIR and Google Cloud Healthcare capabilities.

Enhanced Dynamic Capabilities

Many client-side applications want the ability to be more dynamic with respect to the definition of tables and views they receive. For example, getting a JSON data feed with row data is insufficient in some cases and additional meta-data about columns would be necessary for live, always up to date, documentation. Those capabilities also allow for more dynamic Java coding in processing data.

#644 Add column values in ColumnDefinition meta-data.
#646 Add ObjectMode='NONE' for mapping objects that only exist for meta-data purpose.
#633 Enhancement to Tilda Meta Data feature to retrieve column definitions by name.

General Enhancements

Tilda's powerful Realization capability always suffered from one weakness: it always refilled a whole data set every time. Now, you have the ability to specify rules for incremental refills. In production for large datasets, this was essential and results in major performance scalability.

#636 Incremental realization and refill (documented in https://github.com/CapsicoHealth/Tilda/wiki/Tilda-JSON-Syntax:-View-Realization).

Migration Automation

End-to-end schema management and automating migration from any point to the current state has always been a goal for Tilda. We now have the capability to a lot of moving and renaming of schemas, tables and columns. We also now output a "reverse Diff" file to show tables/views/columns in the database that are not in the model, i.e., left-overs. An administrator can use that information to carefully clean up heir database if needed.

#275 Ability to rename columns as part of a migration.
#57 Add table/view renaming capability to data model definition.
#608 Should be able to migrate a column from DATE to DATETIME.
#616 Add ability for Reverse to target a single table vs a whole schema.
#629 Migration should output a "reverse diff" file to indicate which schemas, tables, columns and views are in the database, but not in the model.

Documentation can be fond here: https://github.com/CapsicoHealth/Tilda/wiki/Tilda-JSON-Syntax:-Migration

Breaking Changes

There are several breaking changes in this release. Each issue below provides details as to the nature of the impact and how to "upgrade" your code.

#672 BREAKING CHANGE: Tilda classes cannot be used until the whole Tilda environment has been initialized.
#521 Collision for Array Columns when generating init methods for both invariant and DATETIME "Str_" json columns .
#601 Need methods to dynamically introspect the Tilda meta-data in code BREAKING CHANGES.
#606 RecordProcessor API change (BACKWARD-INCOMPATIBLE CHANGE).

Major Bugs

#603 __Nulls is incorrectly being reset after a write().
#596 Tilda Docs: Some columns are not showing in the search.
#585 Remove implicit casts from Tilda db library.

Minor Features

#643 Add java docs for lookup methods (indices, queries) to show columns, description and orderBy details.
#657 DateTime columns without TZ (e.g., lastUpdated) should be aggregatable by MIN/MAX.
#370 Performance improvement when reading schema metadata.
#650 Add "checkXXX" method for column with values to help check a value is correct.
#647 Show performance numbers for Schema-initialization steps to inform of slowdowns in app start-up time.
#651 Simplify generation of select statement to generate more compact and better performing code.
#58 Ability to "drop" columns/tables/views as part of migration capabilities.
#622 New Helper methods for JSONUtil and JsonPrinter for partial objects, lists and arrays output.
#617 TildaDocs enhancements (formulas and linking).
#613 Add "exclude" capability to OutputMaps.
#624 Create a default JSON/CSV * outputmap for Objects and Views if none is specified.
#621 Create a default "All" query for Objects if none is specified.
#618 Add "fullName" to cloner element.
#609 Formula noCoalesce feature.
#595 Tilda Docs: animation pulse effect when clicking a search result.
#594 Tilda Docs: Cleanup of search bar.
#587 Some Gen environments include resources in addition to source code. Need to allow Gen to only include source code and not resources.
#586 Misc convenience methods added.
#584 Helper methods on Connection to getCurrentTimestamp and getCurrentDate.
#581 Need a Tilda function for a random exponential distribution.
#604 New LinePrint/LineSplit utilities.

Minor Bugs

#673 JSONPrinter cannot output a raw array.
#669 copyTo method doesn't handle invariants properly.
#656 DB Function Tilda.getDependenciesDDLs is incorrectly using the pg_depend table and is missing refclassid = 'pg_class'::regclass clause to avoid duplicate rows.
#654 Passing a Null value to a query with a String[] causes a database error.
#639 Column renaming fails with case_sensitive columns.
#543 The "mode":"DB_ONLY" doesn't seem to be respected: views and objects are created in Java, including Realized artifacts.
#421 mode is not implemented for Views. Should be moved to Base and replace dbOnly.
#525 When an Aggregates defines an expression and a type, the type override is not respected in the code generated.
#548 Migrating STRING -> JSON is not working.
#648 Missing support for SHORT data type in QueryHelper.
#649 Missing Type_FloatCollection and Type_FloatCollectionNull.
#582 Creating a view with a .* construct and also an aggregate yields improper results.
#652 Missing support for UUID, Short and BigDecimal in JSON helpers and other places.
#637 Strengthen copyTo to handle deserialized objects properly.
#626 There are some reserved words in Java which need to be forbidden for column names.
#611 Query placement ?[] doesn't seem to work with refnums.
#610 setString instead of setArray in Query code gen when using array placement ?[].
#614 Adding support for SHORT in queryHelper.
#600 SHORT datatype not handled properly for default values.
#599 Tilda Docs: Full formula dependencies are not highlighted in HTML docs.
#598 Null values for columns for primitive types such as Integer, Float... are not handled right.
#593 Tilda Docs: fix issue with display of row when hitting a search result.
#602 copyTo method doesn't handle NULL field values.

Dependencies updates

We have a lot of dependencies ranging from newly introduced GCP capabilities such as FHIR and BigQuery, to the Postgres JDBC driver and our trusted Apache Commons and other dependencies we have had since day one. This release has updated all those dependencies to be current as of Jan 2022.

One change that may affect you if you relied on those dependencies is moving from JAVAX Mail to Jakarta Mail. You are covered if you used tilda.utils.MailUtil directly, but if you depended specifically on other JAVAX APIs, then you have to update your code.

Other than that, all the below are either upgrades to pre-existing dpendencies of new additions.

#667 Removing dependency to commons-email and moving to jakarta-mail.
#666 Library dependency updates (Q1 2022).
#662 Upgrade to postgresql-42.3.1.jar.
#653 Log4Shell vulnerability patch.
#642 Upgrade to postgresql-42.2.24.jar.
#635 Reverting to Log4J2 v12.
#623 Refresh Apache Commons library dependencies.
#615 Adding commons-math3-3.6.1.jar to dependencies.

V0.9.2

24 Dec 19:02
e066e79
Compare
Choose a tag to compare

This is a large release with a many new features and many bug fixes. In particular, because of several new features (like #544) and enhancements in code-generation, it is recommended that you gen and migrate your projects as soon as you upgrade to this version.

Note: There are no compatibility breaks, so all those changes are under the covers cleanups and improvements but will cause a large migration script possibly containing hundreds of actions based on your project size to be generated at the database level: all views and associated generated code will be redeployed.

Major Fixes
#576 TimeSeries view element not handled properly
#574 When creating a Query with an array parameter, the code generated is incorrect.
#571 Regression: Migration of text columns when sizes change seems to no longer work
#569 The code generation for upsert adds a semicolon after the if statement which breaks the code.
#567 When using "skipValidation": false in tilda.config, we get an error related to a SavePoint not being found.
#561 toJson methods on Factory and Data generated classes doesn't pass in the "lead" parameter for lists.
#541 Proper handling of setFetchSize on a per query level in generated code.
#497 CSVExport doesn't handle SHORT type properly.

Major Features
#556 Short Aliases.
#555 Index Templates.
#552 Change timestamp with timezone json output format.
#551 Generalize ExportToCSV as Export and add support for JSON and JSONL output formats.
#550 No null array output for toJson.
#544 Keep track of refill performance
#542 Generic CSV Exporter.
#540 Auto-generate an "all" query if none is provided.
#526 BigQuery Schema Output.
#515 DBAnalyzer Utility.
#514 Incremental Realization.
#500 Need Tilda.in for booleans.
#498 LAL (Left-Anchored-Like) support for indices.

Features
#568 Need more conversion functions in Postgres to convert text representation of arrays to real, double, integer and bigint.
#566 DateTimeUtil.printDateTimeForJSON with new forceISOZDT param.
#564 TILDA.ArrayPick database function.
#560 Ability to pass in Header name/value pairs to FileUtil getXXXFromUrl() methods.
#559 Add TextUtil.printJsonQuotedStringValue().
#558 Add hmacSHA1 helper in EncryptionUtil.
#553 Add UT generated classes to build to avoid unnecessary compile errors for new projects.
#549 Ability to move tables and views to another schema as part of migration.
#547 QueryHelper lacks ability to do an "exists" sub query.
#538 Add closeAll and commitAll methods to Connection.
#534 Stand-alone docs flag.
#532 Improve Gen performance by caching validated schemas.
#531 OrderBy in aggregates cannot specify a non-selected column in the final view, even if the column exists in the sub-views.
#530 Allow realization to target a table in another schema.
#528 Adding support for nulls first/last for orderBy spec.
#509 Order of expanded columns set (outputMaps, .* views...) should be maintained.
#508 Add arrayTrunc helper db function.
#506 Update Postgres JDBC Driver.
#501 Logging improvement for all main utilities.

Fixes
#565 Not setting fetch size in JDBCHelper.executeSelect().
#563 MailUtil.send() incorrectly sets the smtp port.
#562 Add 'formula' and deprecate 'expr' from FormulaTemplate TEMPLATE.
#539 Generic CSV logic was not generated fully compared to generic JSON capabilities.
#537 validateDeserialization doesn't handle enum-mapped columns.
#536 View columns don't pass down aggregate types properly.
#527 Coalesce with an aggregate doesn't work as expected.
#524 ARRAY aggregates of DATE columns is not working.
#522 Cannot export arrays through JSONUtil.
#512 Renaming a unique index fails migration.
#510 Helper utility function TextUtil.sanitizeName doesn't handle brackets.
#507 touch() method shouldn't be generated for READONLY objects.
#499 Better support of rowset scrolling.
#495 Dependency updates for 0.9 release.
#491 Logging and error handling improvements.
#411 Migrate fails when updating realized views that depend on *_R proxy flattened views.

V0.9.1

18 Dec 15:46
972f35a
Compare
Choose a tag to compare

This Tilda release is a big one, preparing the code-base for a 1.0 release. This release contains several breaking changes: see #444 for details. Major changes are:

  • #495 Dependency updates for 0.9 release
  • #489 tougher error reporting on output map col definitions
  • #482 There is no way to enforce non-null auto-columns to be set at create time.
  • #474 Sync protocol for output maps should handle the "ghost" scenario.
  • #461 Adding Confidentiality to email sending base utility.
  • #446 Change Realized tables to be full read-write.
  • #444 Update code generator to generate methods starting with a lower case and merge JSON methods into FACTORY class - BREAKS COMPATIBILITY.

Additional fixes and enhancements are:

  • #491 Logging and error handling improvements
  • #486 Index name size incorrectly checked.
  • #483 Cleanup of Perf APIs.
  • #481 touch() method declaration is not generated in app-level class when required.
  • #479 Add Tilda DB Helper functions to ease dealing with arrays of ranges.
  • #478 Misc Docs enhancements.
  • #475 NVP OutputMaps with "nvpSrc":"ROWS" can generate code that fails if the first col is not nullable.
  • #473 toCSV output methods for sync output maps are not generated.
  • #471 Enhance the ObjectProcessor to look more like RecordProcessor with start/end methods.
  • #470 It's possible to define a query with a name and signature that will conflict with an index, resulting in duplicate lookup methods being created.
  • #466 Better debugging of resource dependency check when loading Tilda.
  • #463 Better logging for group value mismatches in mappers.
  • #458 Change transaction management for migration to be table/view-based.
  • #455 Tilda.Migrate doesn't see String size expansions from VARCHAR to TEXT.
  • #454 NoSuchFieldException when a model declares a field and the java code hasn't been updated.
  • #452 Simple upsert method.
  • #450 ARRAYCAT aggregate.
  • #441 NullPtr exception in DatetimeUtils.printDate and printDateForJSON.
  • #438 Documentation improvements.
  • #433 Clean up the "docs" folder that is exported on gitpages.
  • #429 Aggregate DateTime columns are realized without TZs.
  • #349 When generating SQL for orderBy on an aggregate column for a column that exists in multiple tables, the output omits the table name.
  • #347 There should be a streaming version of all LookupXXX methods.
  • #345 Generic Mass-assignment Initialization.
  • #306 Verify toJSON generated code with null or empty lists.

Most of this is the result of the team working hard on Tutorials and double- and triple-checking the APIs and feature set of the framework. Three major tutorials are now available so please, make sure you check them out as they contain a ton of information. Contact us if you find any factual error that would need correcting.

Finally:

v0.8.3

25 Sep 14:54
165ea6d
Compare
Choose a tag to compare

Minor release to fix a few bugs found in 0.8.2, and 2 new features:

  • Allow for table definition cloning with new "cloneAs" element
  • Allow for schema dependencies to be declared and skipped from migration

The individual issues are:
#433 Clean up the "docs" folder that is exported on gitpages
#426 Reverse command line utility doesn't output good logs
#425 A count aggregate of BOOLEAN is yielding a BOOLEAN view column which is incorrect
#405 Allow for table definition cloning
#380 Exclude schemas from runtime migration/checks
#317 Tilda factory initialization only occurs for main database and is not executed for each tenant

v0.8.2

08 Sep 04:42
2aca0f0
Compare
Choose a tag to compare

A small release with several bug fixes and a few new features. In particular:

  • Tilda's type system was extended to support UUID, SHORT and DECIMAL.
  • Added APIs to detect query cancelations from the DB side as well as asynchronous notifications.
  • General API enhancements, cleanups and documentation
  • Expression capabilities on view columns

New Features

#417 Cannot easily set a column to current_timestamp using update query helper.
#392 Added new append method to CollectionUtil, and test cases.
#389 Ability to detect CANCELATIONS when a query fails.
#387 Asynchronous Mechanism for notifications from DB.
#386 Documentation improvements.
#363 Add "expression" capability to ViewColumn, mirroring how it's done for ViewPivotValue.
#344 Support for UUID Data Type.
#307 Add support for 16bit SHORT (to supplement 32bit INTEGER and 64bit LONG).
#305 Add support for NUMERIC/DECIMAL data types.
#237 Add ability to batch Alter statements.

Bug fixes

#419 Expression in a view column doesn't handle [] or {} in types properly.
#414 WriteBatch method will not write data to the DB if the list passed in only has one entry.
#408 Move Tilda ER Tooling out of main repo.
#398 Aggregate columns in Realized views are not properly output in the generated Java code for the realized table.
#396 Negative default values for number columns are not seen by migration.
#395 GroupBy logic in base views with aggregates can be incorrect based on fields.
#394 JSON Write() methods doesn't handle default values for columns of types float/double/long.
#388 Cleanup method case for JDBCHelper and Connection methods.
#383 JavaDocs breaks with bad @generated tags.