EclipseLink Summit 2010

In an effort to increase the community of committers and contributors with in-depth knowledge of EclipseLink we have decided to host a 3-day Summit. The goal of this Summit will be to exchange detailed technical information and discuss future direction for the project and its persistence services.

All interested parties are welcome to participate.

More info on Summit is available here.


ruby-plsql 0.4.2 – better support for object types and types in packages

I just released ruby-plsql version 0.4.2 which mainly adds support for more PL/SQL procedure parameter types. See change history file for more detailed list of changes.

Object types and object methods

Now you can use ruby-plsql to construct PL/SQL objects and call methods on these object. For example, if you have the following type defined:

  street    VARCHAR2(50),
  city      VARCHAR2(50),
  country   VARCHAR2(50),
  CONSTRUCTOR FUNCTION t_address(p_full_address VARCHAR2)
  MEMBER FUNCTION display_address(p_separator VARCHAR2  (more...)

ActiveRecord Oracle enhanced adapter version 1.2.4

I have released maintenance version of ActiveRecrod Oracle enhanced adapter with some bug fixes and some new features. This is the last maintenance version for Rails 2, I have already done majority of work to support also Rails 3 in next adapter versions, but that deserves another post when it will be ready :).

Detailed changes can be found in change history file and commit log, here I will point out the main changes.

Schema and structure dump

There are several improvements in schema (rake db:schema:dump) and structure dump (rake db:structure:dump) tasks. Now structure dump is (more...)

Screencasts of Oracle PL/SQL unit testing with Ruby

In my previous post I already described how to do Oracle PL/SQL unit testing with Ruby. I now have named it as ruby-plsql-spec unit testing framework. But probably you didn’t want to read such long text or maybe it seemed for you too difficult to try it out therefore I prepared two screencasts to show how easy and fun it is :)

Testing simple function

The first example is based on classic BETWNSTR function example from utPLSQL tutorial.

Testing procedure that changes tables

Second example is based on Quest Code Tester (more...)

ruby-plsql 0.4.1 – support for package variables, views, dbms_output and more

Based on feedback from using ruby-plsql for PL/SQL unit testing I have release new version 0.4.1 with several new features. You can read about initial versions of ruby-plsql in previous blog posts.

Package variables

When you call methods on plsql Ruby object then ruby-plsql uses all_procedures and all_arguments data dictionary views to search for procedures and their argument metadata to construct corresponding PL/SQL block for execution. Unfortunately there are no corresponding data dictionary views for package variables (sometimes called “global variables”) that are defined in package specifications. Therefore there was no support for package variables in (more...)

Oracle PL/SQL unit testing with Ruby

Current PL/SQL unit testing options

Unit testing and TDD (test driven development) practices are nowadays one of the key software development practices. It is especially important if you are doing agile software development in small iterations where you need to automate unit testing as much as possible, as you cannot do manual regression testing of all existing and new functionality at the end of each iteration.

In some languages (like Java, Ruby, Python, C# etc.) there is quite good tools and frameworks support for unit testing and as a result there is quite high testing culture among top (more...)

More Oracle data types supported by ruby-plsql gem

I have just released ruby-plsql gem version 0.4.0 which provides many new features. You can read about initial versions of ruby-plsql in previous blog posts.

Oracle complex data type support

Initial versions of ruby-plsql supported just simple Oracle types like NUMBER, VARCHAR2, DATE, TIMESTAMP, CLOB, BLOB as PL/SQL procedure parameters. Now support for many more complex data types is added. See examples below how to call PL/SQL procedures with these complex data types.

PL/SQL Record

Let’s assume you have PL/SQL procedure with PL/SQL record type parameter (which most (more...)

Notes from Oracle OpenWorld 2009


Last week I participated in annual Oracle OpenWorld 2009 conference. There is quite wide coverage of conference in various web sites and blogs therefore I will write just some personal notes that I wanted to highlight.

For me the most value was meeting with different interesting people. At first thanks to Justin Kestelyn and all OTN team for Oracle community support. Oracle ACE dinner, bloggers meetup, OTN lounge and unconference were great places where to meet and discuss with interesting and active Oracle community members.

It was nice to meet Kuassi Mensah and Christopher Jones who are supporters of (more...)

New features in ActiveRecord Oracle enhanced adapter version 1.2.2

During the last months many new features have been implemented for ActiveRecord Oracle enhanced adapter which are now included in Oracle enhanced adapter version 1.2.2. You can find full list in change history file, here I will tell about the main ones.


Now Oracle enhanced adapter has improved RDoc documentation for all public methods. So you can go to RDoc documentation of installed gem or go and view published documentation on-line.

Schema definition

There are many new features in schema definition methods that you can use in migration files:

  • When you use add_index then ActiveRecord is (more...)

How to install Oracle Database 10g on Mac OS X Snow Leopard

sl_oracle.jpgOracle Database 10g is not yet officially supported on new Mac OS X 10.6 Snow Leopard but thanks to comments at my previous tutorial I managed to do Oracle 10g installation on fresh Mac OS X Snow Leopard.

If you have upgraded from Leopard with Oracle 10g installation to Snow Leopard then most probably Oracle 10g should work fine and you should not do anything. These instructions are just for fresh installation of Snow Leopard.

And also please take in mind that Oracle 10g on Snow Leopard is not supported yet by Oracle and therefore please do not run (more...)

How to setup Ruby and Oracle Instant Client on Snow Leopard


Mac OS X Snow Leopard is out and many Rubyists are rushing to upgrade to it. The main difference for Ruby after upgrading to Snow Leopard is that Ruby installation has been changed from 32-bit to 64-bit program and version has changed from 1.8.6 to 1.8.7. And it means that all Ruby gems with C extensions should be reinstalled and recompiled using 64-bit external libraries.

After upgrading to Snow Leopard the first thing to do is to follow instructions on official Ruby on Rails blog. After that follow instructions below.

Installing 64-bit Oracle Instant Client (more...)

Initial version of DataMapper Oracle adapter


What is DataMapper?

DataMapper is Ruby Object/Relational Mapper that is similar to ActiveRecord (component of Ruby on Rails) but still it handles several things differently than ActiveRecord.

I got interested in DataMapper because I liked better some of its design decisions when compared with ActiveRecord. And in particular DataMapper architecture can suite better if you need to work with legacy Oracle database schemas – that is the area where I use Ruby on Rails a lot and for these purposes I also created Oracle enhanced adapter for ActiveRecord.

But as there were no Oracle adapter available for DataMapper I (more...)

EclipseLink in Galileo: Persistence at your fingertips

The Eclipse Galileo release signifies another important milestone for the EclipseLink project. The Galileo release makes EclipseLink 1.1.2 available and easier to use for the entire Eclipse community. Developers using the Java EE or Modeling Tools distributions of the Eclipse IDE will find EclipseLink included and available for use in Equinox OSGi, RCP, EMF, Java EE, and Java SE applications.

The EclipseLink 1.1.2 release includes a comprehensive set of persistence services:

  • EclipseLink JPA: Java Persistence API support for object-relational mapping with many advanced mapping, performance, and scalability features targeting Java EE, Java SE, and OSGi (more...)

ruby-plsql new version – Ruby 1.9.1 support and more

I have released ruby-plsql gem (Ruby API for Oracle PL/SQL procedure calls) new version 0.3.0 which includes several new features.

Ruby 1.9.1

Probably the most important is support for Ruby 1.9.1 – now you can use both Oracle enhanced adapter and ruby-plsql gem on all three major Ruby plaforms:

  • MRI 1.8.6 with ruby-oci8 1.0.x library or gem
  • Ruby/YARV 1.9.1 with ruby-oci8 2.0 library or gem (currently just trunk version of ruby-oci8 2.0 contains the last bug fixes for Ruby 1.9.1)
  • JRuby (so (more...)

How to install Oracle Database 10g on Mac OS X Intel

UPDATE: Created instructions how to install Oracle 10g on Mac OS X Snow Leopard

Couple days ago Oracle developers on Mac OS X received Easter present – finally Oracle Database 10g was released for Mac OS X 10.5 Intel platform. This download includes installation guide for Mac OS X but as any Oracle installation guide it is quite long and contains a lot of unnecessary information for first time install as well as does not contain some necessary information.

Therefore I am posting here my shorter tutorial how to install it. And this tutorial is targeted to developers (more...)

SDO 2.1.1 (JSR-235) Releases with EclipseLink as the Reference Implementation

I am happy to announce that SDO 2.1.1 (JSR-235) has been approved by the JCP, and EclipseLink SDO is the reference implementation.

EclipseLink Download

Reference Implementation Download

SDO is a generic structure to represent data from many sources such as XML and relational databases, most commonly associated with SCA.

EclipseLink SDO was implemented as a thin layer on top of EclipseLink's object-to-XML layer (which is also the base for EclipseLink JAXB). EclipseLink SDO can be used alone, or as a means to expose POJOs as DataObjects so that (more...)

New EclipseLink Logo

We have wrapped up our EclipseLink logo contest and we have a winner.

Thanks to everyone who submitted a logo, commented on the submissions, or voted for their favorite. You can see the image in use on the home page.


ActiveRecord Oracle enhanced adapter also on JRuby and Ruby 1.9

So far if you wanted to use Ruby on Rails on Oracle database you needed to use different adapters depending on the Ruby platform that you wanted to use. If you used original MRI (Matz Ruby interpreter) 1.8.6 then hopefully you were using Oracle enhanced adapter. But if you wanted to use JRuby then you needed to use JDBC adapter that is maintained by JRuby team (and which sometimes might work differently than Oracle enhanced adapter). And if you wanted to use new Ruby 1.9.1 then you were out of luck as no adapter supported it.


EclipseLink 1.1.0 Released!

I am happy to announce that EclipseLink 1.1.0 is now available for download.

There are some useful links off of the download page including a 'getting started page', and the 'release notes' for 1.1.0.

As well as bug fixes, 1.1.0 introduces feature enhancements in the following areas:

The first release of EclipseLink DBWS allows developers to easily and efficiently expose database constructs (tables, SQL, stored procedures).

EclipseLink 1.1.0 JPA support is extended to introduce:

  • a new 1:M mapping that doesn't require a back pointer or a separate join table to (more...)

EclipseLink at EclipseCon

EclipseCon is fast approaching. It occurs between March 23 and March 26. There
are a number of sessions that would be of interest to EclipseLink users.

There is one tutorial:

Four talks: