public ResultSetMetaData getMetaData() throws SQLException {

        checkClosed();

        if (resultSetMetaData == null) {
            boolean isUpdatable = rsConcurrency == ResultSet.CONCUR_UPDATABLE;

            resultSetMetaData = new JDBCResultSetMetaData(resultMetaData,
                    isUpdatable, rsInsertability, connProperties);
        }

        return resultSetMetaData;
    }
public ResultSetMetaData getMetaData ( ) throws SQLException { checkClosed ( ) ; if ( resultSetMetaData == null ) { boolean isUpdatable = rsConcurrency == ResultSet . CONCUR_UPDATABLE ; resultSetMetaData = new JDBCResultSetMetaData ( resultMetaData , isUpdatable , rsInsertability , connProperties ) ; } return resultSetMetaData ; }
<!-- start generic documentation -->
Retrieves the  number, types and properties of
this <code>ResultSet</code> object's columns.
<!-- end generic documentation -->

<!-- start release-specific documentation -->
<div class="ReleaseSpecificDocumentation">
<h3>HSQLDB-Specific Information:</h3> <p>

<B>Example:</B> <p>

The following code fragment creates a <code>ResultSet</code> object rs,
creates a <code>ResultSetMetaData</code> object rsmd, and uses rsmd
to find out how many columns rs has and whether the first column
in rs can be used in a <code>WHERE</code> clause. <p>

<pre class="JavaCodeExample">
ResultSet rs   = stmt.<b>executeQuery</b>(<span class="JavaStringLiteral">"SELECT a, b, c FROM TABLE2"</span>);
ResultSetMetaData rsmd = rs.<b>getMetaData</b>();<br>
int numberOfColumns = rsmd.<b>getColumnCount</b>();<br>
boolean b = rsmd.<b>isSearchable</b>(1);<br>
</pre>

<hr>

<B>Changes:</B> <p>

With version 1.9.0, the engine's SQL implementation has been
completely rewritten. Changes to this class and the implementation of
ResultSetMetaData reflect the engine's new capabilities and provide
more accurate information. <p>

changes to consider: <p>

<ol>
<li>isAutoIncrement(int) <i>always</i> returned <code>false</code></li>
<li>isNullable(int) returns the nullability of a real table or view
column in the ResultSet and returns
<code>columnNoNulls</code> for non-base-column ResultSet columns
(columns of the ResultSet that are based on expressions or
aggregates).</li>
<li>getColumnDisplaySize(int) returns correct results even for expression
columns.</li>
<li>getPrecision(int) returns the correct precision even for expression
columns.</li>
<li>getScale(int) returns the correct precision even for expression
columns.</li>
<li>getCatalogName(int) returns the catalog name of the database.</li>
</ol> <p>

<hr>
</div>
<!-- end release-specific documentation -->

@return the description of this <code>ResultSet</code> object's columns
@exception SQLException if a database access error occurs or this method is
called on a closed result set
@see JDBCResultSetMetaData