0.1.0

First release of orax, forked from jamdb_oracle 0.5.12.

Breaking changes from jamdb_oracle

  • The project is renamed: the Hex package and OTP application are :orax, Erlang modules jamdb_oracle_* are orax_*, Jamdb.Oracle is Orax and the Ecto adapter is Ecto.Adapters.Orax. Application config moves from config :jamdb_oracle to config :orax.
  • Supported servers are Oracle Database 19c and 26ai (23ai).
  • Requires Elixir 1.18, OTP 27 and ecto_sql 3.14 or later.
  • The JSON library defaults to Elixir's built-in JSON instead of Jason. Set config :orax, :json_library, Jason to keep Jason.
  • The default app_name sent to the server, shown as the program in V$SESSION, is "orax" instead of "jamdb".
  • The :read_timeout parameter is removed. Responses are read until the protocol marks their end.
  • Autocommit is off inside Repo.transaction/2 until COMMIT or ROLLBACK.

Protocol

  • Read responses until the protocol marks their end, using the end of response marker of 26ai when the server offers it, instead of relying on read_timeout.
  • Decode row headers repeated between rows in FOR UPDATE fetches.
  • Fix TLS socket options and decode chunked RPA keywords.
  • Fix RAW binds corrupting the binds that follow them.

Ecto adapter

  • Support insert/8, identity primary keys and RETURNING binds, returned as rows.
  • Support values/2 sources.
  • Translate json_extract_path to JSON_VALUE.
  • Add configurable identifier quoting (config :orax, quote_identifiers: true).
  • Reject select, joins and CTEs in update_all and delete_all.
  • Report bare, Ecto-cased constraint names in to_constraints.
  • Load Oracle DATE values into :date fields.
  • Return integers for integral unconstrained NUMBER values and map unconstrained decimal columns to NUMBER.
  • Convert type/2 :string with TO_CHAR instead of CAST.
  • Fix text and binary handling and parameterized intervals.