public List < Column > getColumns ( ) throws SQLException { synchronized ( getColumnsLock ) { if ( getColumnsCache == null ) { SortedMap < String , Column > columnMap = getColumnMap ( ) ; List < Column > newColumns = new ArrayList <> ( columnMap . size ( ) ) ; for ( int i = 0 ; i < columnMap . size ( ) ; i ++ ) newColumns . ( null ) ; for ( Column column : columnMap . values ( ) ) { int ordinalPosition = column . getOrdinalPosition ( ) ; if ( newColumns . set ( ordinalPosition - 1 , column ) != null ) throw new SQLException ( "Duplicate ordinal position: " + ordinalPosition ) ; } for ( int i = 0 ; i < newColumns . size ( ) ; i ++ ) { if ( newColumns . get ( i ) == null ) throw new SQLException ( "Missing ordinal position: " + ( i + 1 ) ) ; } getColumnsCache = AoCollections . optimalUnmodifiableList ( newColumns ) ; } return getColumnsCache ; } }
Gets all columns for this schema in their ordinal position order . Column with ordinal position one is at index zero .