001package org.javasimon.jdbc4;
002
003import java.io.InputStream;
004import java.io.Reader;
005import java.math.BigDecimal;
006import java.net.URL;
007import java.sql.Array;
008import java.sql.Blob;
009import java.sql.Clob;
010import java.sql.Date;
011import java.sql.NClob;
012import java.sql.Ref;
013import java.sql.ResultSet;
014import java.sql.ResultSetMetaData;
015import java.sql.RowId;
016import java.sql.SQLException;
017import java.sql.SQLWarning;
018import java.sql.SQLXML;
019import java.sql.Statement;
020import java.sql.Time;
021import java.sql.Timestamp;
022import java.util.Calendar;
023import java.util.Map;
024
025import org.javasimon.SimonManager;
026import org.javasimon.Split;
027
028/**
029 * Simon JDBC proxy result set implementation class.
030 *
031 * @author Radovan Sninsky
032 * @author <a href="mailto:virgo47@gmail.com">Richard "Virgo" Richter</a>
033 * @since 2.4
034 */
035@SuppressWarnings("deprecation")
036public final class SimonResultSet implements ResultSet {
037        /**
038         * Stopwatch split measuring the lifespan of the statement until it is closed.
039         */
040        private Split split;
041
042        private final ResultSet rset;
043        private final WrapperSupport<ResultSet> wrapperSupport;
044        private SimonStatement stmt;
045        private String stmtPrefix;
046
047        /**
048         * Class constructor, initializes Simons (lifespan) related to result set.
049         *
050         * @param rset real resultset
051         * @param stmt Simon statement
052         * @param prefix hierarchy prefix for JDBC Simons
053         * @param stmtPrefix statement prefix
054         */
055        public SimonResultSet(ResultSet rset, SimonStatement stmt, String prefix, String stmtPrefix) {
056                this.rset = rset;
057                this.wrapperSupport = new WrapperSupport<>(rset, ResultSet.class);
058                this.stmt = stmt;
059                this.stmtPrefix = stmtPrefix;
060
061                split = SimonManager.getStopwatch(prefix + ".rset").start();
062        }
063
064        /**
065         * Measure next operation.
066         *
067         * @return {@code true} if the new current row is valid; {@code false} if there are no more rows
068         * @throws java.sql.SQLException if real next operation fails
069         */
070        @Override
071        public boolean next() throws SQLException {
072                try (Split ignored = SimonManager.getStopwatch(stmtPrefix + ".next").start()) {
073                        return rset.next();
074                }
075        }
076
077        /**
078         * Closes real result set, stops lifespan Simon.
079         *
080         * @throws java.sql.SQLException if real close operation fails
081         */
082        @Override
083        public void close() throws SQLException {
084                rset.close();
085                split.stop();
086        }
087
088        //// NOT MONITORED
089
090        @Override
091        public Statement getStatement() throws SQLException {
092                return stmt;
093        }
094
095        @Override
096        public boolean wasNull() throws SQLException {
097                return rset.wasNull();
098        }
099
100        @Override
101        public String getString(int columnIndex) throws SQLException {
102                return rset.getString(columnIndex);
103        }
104
105        @Override
106        public boolean getBoolean(int columnIndex) throws SQLException {
107                return rset.getBoolean(columnIndex);
108        }
109
110        @Override
111        public byte getByte(int columnIndex) throws SQLException {
112                return rset.getByte(columnIndex);
113        }
114
115        @Override
116        public short getShort(int columnIndex) throws SQLException {
117                return rset.getShort(columnIndex);
118        }
119
120        @Override
121        public int getInt(int columnIndex) throws SQLException {
122                return rset.getInt(columnIndex);
123        }
124
125        @Override
126        public long getLong(int columnIndex) throws SQLException {
127                return rset.getLong(columnIndex);
128        }
129
130        @Override
131        public float getFloat(int columnIndex) throws SQLException {
132                return rset.getFloat(columnIndex);
133        }
134
135        @Override
136        public double getDouble(int columnIndex) throws SQLException {
137                return rset.getDouble(columnIndex);
138        }
139
140        @Deprecated
141        @Override
142        public BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException {
143                return rset.getBigDecimal(columnIndex, scale);
144        }
145
146        @Override
147        public byte[] getBytes(int columnIndex) throws SQLException {
148                return rset.getBytes(columnIndex);
149        }
150
151        @Override
152        public Date getDate(int columnIndex) throws SQLException {
153                return rset.getDate(columnIndex);
154        }
155
156        @Override
157        public Time getTime(int columnIndex) throws SQLException {
158                return rset.getTime(columnIndex);
159        }
160
161        @Override
162        public Timestamp getTimestamp(int columnIndex) throws SQLException {
163                return rset.getTimestamp(columnIndex);
164        }
165
166        @Override
167        public InputStream getAsciiStream(int columnIndex) throws SQLException {
168                return rset.getAsciiStream(columnIndex);
169        }
170
171        @Deprecated
172        @Override
173        public InputStream getUnicodeStream(int columnIndex) throws SQLException {
174                return rset.getUnicodeStream(columnIndex);
175        }
176
177        @Override
178        public InputStream getBinaryStream(int columnIndex) throws SQLException {
179                return rset.getBinaryStream(columnIndex);
180        }
181
182        @Override
183        public String getString(String columnName) throws SQLException {
184                return rset.getString(columnName);
185        }
186
187        @Override
188        public boolean getBoolean(String columnName) throws SQLException {
189                return rset.getBoolean(columnName);
190        }
191
192        @Override
193        public byte getByte(String columnName) throws SQLException {
194                return rset.getByte(columnName);
195        }
196
197        @Override
198        public short getShort(String columnName) throws SQLException {
199                return rset.getShort(columnName);
200        }
201
202        @Override
203        public int getInt(String columnName) throws SQLException {
204                return rset.getInt(columnName);
205        }
206
207        @Override
208        public long getLong(String columnName) throws SQLException {
209                return rset.getLong(columnName);
210        }
211
212        @Override
213        public float getFloat(String columnName) throws SQLException {
214                return rset.getFloat(columnName);
215        }
216
217        @Override
218        public double getDouble(String columnName) throws SQLException {
219                return rset.getDouble(columnName);
220        }
221
222        @Deprecated
223        @Override
224        public BigDecimal getBigDecimal(String columnName, int scale) throws SQLException {
225                return rset.getBigDecimal(columnName, scale);
226        }
227
228        @Override
229        public byte[] getBytes(String columnName) throws SQLException {
230                return rset.getBytes(columnName);
231        }
232
233        @Override
234        public Date getDate(String columnName) throws SQLException {
235                return rset.getDate(columnName);
236        }
237
238        @Override
239        public Time getTime(String columnName) throws SQLException {
240                return rset.getTime(columnName);
241        }
242
243        @Override
244        public Timestamp getTimestamp(String columnName) throws SQLException {
245                return rset.getTimestamp(columnName);
246        }
247
248        @Override
249        public InputStream getAsciiStream(String columnName) throws SQLException {
250                return rset.getAsciiStream(columnName);
251        }
252
253        @Deprecated
254        @Override
255        public InputStream getUnicodeStream(String columnName) throws SQLException {
256                return rset.getUnicodeStream(columnName);
257        }
258
259        @Override
260        public InputStream getBinaryStream(String columnName) throws SQLException {
261                return rset.getBinaryStream(columnName);
262        }
263
264        @Override
265        public SQLWarning getWarnings() throws SQLException {
266                return rset.getWarnings();
267        }
268
269        @Override
270        public void clearWarnings() throws SQLException {
271                rset.clearWarnings();
272        }
273
274        @Override
275        public String getCursorName() throws SQLException {
276                return rset.getCursorName();
277        }
278
279        @Override
280        public ResultSetMetaData getMetaData() throws SQLException {
281                return rset.getMetaData();
282        }
283
284        @Override
285        public Object getObject(int columnIndex) throws SQLException {
286                return rset.getObject(columnIndex);
287        }
288
289        @Override
290        public Object getObject(String columnName) throws SQLException {
291                return rset.getObject(columnName);
292        }
293
294        @Override
295        public int findColumn(String columnName) throws SQLException {
296                return rset.findColumn(columnName);
297        }
298
299        @Override
300        public Reader getCharacterStream(int columnIndex) throws SQLException {
301                return rset.getCharacterStream(columnIndex);
302        }
303
304        @Override
305        public Reader getCharacterStream(String columnName) throws SQLException {
306                return rset.getCharacterStream(columnName);
307        }
308
309        @Override
310        public BigDecimal getBigDecimal(int columnIndex) throws SQLException {
311                return rset.getBigDecimal(columnIndex);
312        }
313
314        @Override
315        public BigDecimal getBigDecimal(String columnName) throws SQLException {
316                return rset.getBigDecimal(columnName);
317        }
318
319        @Override
320        public boolean isBeforeFirst() throws SQLException {
321                return rset.isBeforeFirst();
322        }
323
324        @Override
325        public boolean isAfterLast() throws SQLException {
326                return rset.isAfterLast();
327        }
328
329        @Override
330        public boolean isFirst() throws SQLException {
331                return rset.isFirst();
332        }
333
334        @Override
335        public boolean isLast() throws SQLException {
336                return rset.isLast();
337        }
338
339        @Override
340        public void beforeFirst() throws SQLException {
341                rset.beforeFirst();
342        }
343
344        @Override
345        public void afterLast() throws SQLException {
346                rset.afterLast();
347        }
348
349        @Override
350        public boolean first() throws SQLException {
351                return rset.first();
352        }
353
354        @Override
355        public boolean last() throws SQLException {
356                return rset.last();
357        }
358
359        @Override
360        public int getRow() throws SQLException {
361                return rset.getRow();
362        }
363
364        @Override
365        public boolean absolute(int row) throws SQLException {
366                return rset.absolute(row);
367        }
368
369        @Override
370        public boolean relative(int rows) throws SQLException {
371                return rset.relative(rows);
372        }
373
374        @Override
375        public boolean previous() throws SQLException {
376                return rset.previous();
377        }
378
379        @Override
380        public void setFetchDirection(int direction) throws SQLException {
381                rset.setFetchDirection(direction);
382        }
383
384        @Override
385        public int getFetchDirection() throws SQLException {
386                return rset.getFetchDirection();
387        }
388
389        @Override
390        public void setFetchSize(int rows) throws SQLException {
391                rset.setFetchSize(rows);
392        }
393
394        @Override
395        public int getFetchSize() throws SQLException {
396                return rset.getFetchSize();
397        }
398
399        @Override
400        public int getType() throws SQLException {
401                return rset.getType();
402        }
403
404        @Override
405        public int getConcurrency() throws SQLException {
406                return rset.getConcurrency();
407        }
408
409        @Override
410        public boolean rowUpdated() throws SQLException {
411                return rset.rowUpdated();
412        }
413
414        @Override
415        public boolean rowInserted() throws SQLException {
416                return rset.rowInserted();
417        }
418
419        @Override
420        public boolean rowDeleted() throws SQLException {
421                return rset.rowDeleted();
422        }
423
424        @Override
425        public void updateNull(int columnIndex) throws SQLException {
426        }
427
428        @Override
429        public void updateBoolean(int columnIndex, boolean x) throws SQLException {
430        }
431
432        @Override
433        public void updateByte(int columnIndex, byte x) throws SQLException {
434        }
435
436        @Override
437        public void updateShort(int columnIndex, short x) throws SQLException {
438        }
439
440        @Override
441        public void updateInt(int columnIndex, int x) throws SQLException {
442        }
443
444        @Override
445        public void updateLong(int columnIndex, long x) throws SQLException {
446        }
447
448        @Override
449        public void updateFloat(int columnIndex, float x) throws SQLException {
450        }
451
452        @Override
453        public void updateDouble(int columnIndex, double x) throws SQLException {
454        }
455
456        @Override
457        public void updateBigDecimal(int columnIndex, BigDecimal x) throws SQLException {
458        }
459
460        @Override
461        public void updateString(int columnIndex, String x) throws SQLException {
462        }
463
464        @Override
465        public void updateBytes(int columnIndex, byte x[]) throws SQLException {
466        }
467
468        @Override
469        public void updateDate(int columnIndex, Date x) throws SQLException {
470        }
471
472        @Override
473        public void updateTime(int columnIndex, Time x) throws SQLException {
474        }
475
476        @Override
477        public void updateTimestamp(int columnIndex, Timestamp x) throws SQLException {
478        }
479
480        @Override
481        public void updateAsciiStream(int columnIndex, InputStream x, int length) throws SQLException {
482        }
483
484        @Override
485        public void updateBinaryStream(int columnIndex, InputStream x, int length) throws SQLException {
486        }
487
488        @Override
489        public void updateCharacterStream(int columnIndex, Reader x, int length) throws SQLException {
490        }
491
492        @Override
493        public void updateObject(int columnIndex, Object x, int scale) throws SQLException {
494        }
495
496        @Override
497        public void updateObject(int columnIndex, Object x) throws SQLException {
498        }
499
500        @Override
501        public void updateNull(String columnName) throws SQLException {
502        }
503
504        @Override
505        public void updateBoolean(String columnName, boolean x) throws SQLException {
506        }
507
508        @Override
509        public void updateByte(String columnName, byte x) throws SQLException {
510        }
511
512        @Override
513        public void updateShort(String columnName, short x) throws SQLException {
514        }
515
516        @Override
517        public void updateInt(String columnName, int x) throws SQLException {
518        }
519
520        @Override
521        public void updateLong(String columnName, long x) throws SQLException {
522        }
523
524        @Override
525        public void updateFloat(String columnName, float x) throws SQLException {
526        }
527
528        @Override
529        public void updateDouble(String columnName, double x) throws SQLException {
530        }
531
532        @Override
533        public void updateBigDecimal(String columnName, BigDecimal x) throws SQLException {
534        }
535
536        @Override
537        public void updateString(String columnName, String x) throws SQLException {
538        }
539
540        @Override
541        public void updateBytes(String columnName, byte x[]) throws SQLException {
542        }
543
544        @Override
545        public void updateDate(String columnName, Date x) throws SQLException {
546        }
547
548        @Override
549        public void updateTime(String columnName, Time x) throws SQLException {
550        }
551
552        @Override
553        public void updateTimestamp(String columnName, Timestamp x) throws SQLException {
554        }
555
556        @Override
557        public void updateAsciiStream(String columnName, InputStream x, int length) throws SQLException {
558        }
559
560        @Override
561        public void updateBinaryStream(String columnName, InputStream x, int length) throws SQLException {
562        }
563
564        @Override
565        public void updateCharacterStream(String columnName, Reader reader, int length) throws SQLException {
566        }
567
568        @Override
569        public void updateObject(String columnName, Object x, int scale) throws SQLException {
570        }
571
572        @Override
573        public void updateObject(String columnName, Object x) throws SQLException {
574        }
575
576        @Override
577        public void insertRow() throws SQLException {
578        }
579
580        @Override
581        public void updateRow() throws SQLException {
582        }
583
584        @Override
585        public void deleteRow() throws SQLException {
586        }
587
588        @Override
589        public void refreshRow() throws SQLException {
590        }
591
592        @Override
593        public void cancelRowUpdates() throws SQLException {
594        }
595
596        @Override
597        public void moveToInsertRow() throws SQLException {
598        }
599
600        @Override
601        public void moveToCurrentRow() throws SQLException {
602        }
603
604        @Override
605        public Object getObject(int i, Map<String, Class<?>> map) throws SQLException {
606                return rset.getObject(i, map);
607        }
608
609        @Override
610        public Ref getRef(int i) throws SQLException {
611                return rset.getRef(i);
612        }
613
614        @Override
615        public Blob getBlob(int i) throws SQLException {
616                return rset.getBlob(i);
617        }
618
619        @Override
620        public Clob getClob(int i) throws SQLException {
621                return rset.getClob(i);
622        }
623
624        @Override
625        public Array getArray(int i) throws SQLException {
626                return rset.getArray(i);
627        }
628
629        @Override
630        public Object getObject(String colName, Map<String, Class<?>> map) throws SQLException {
631                return rset.getObject(colName, map);
632        }
633
634        @Override
635        public Ref getRef(String colName) throws SQLException {
636                return rset.getRef(colName);
637        }
638
639        @Override
640        public Blob getBlob(String colName) throws SQLException {
641                return rset.getBlob(colName);
642        }
643
644        @Override
645        public Clob getClob(String colName) throws SQLException {
646                return rset.getClob(colName);
647        }
648
649        @Override
650        public Array getArray(String colName) throws SQLException {
651                return rset.getArray(colName);
652        }
653
654        @Override
655        public Date getDate(int columnIndex, Calendar cal) throws SQLException {
656                return rset.getDate(columnIndex, cal);
657        }
658
659        @Override
660        public Date getDate(String columnName, Calendar cal) throws SQLException {
661                return rset.getDate(columnName, cal);
662        }
663
664        @Override
665        public Time getTime(int columnIndex, Calendar cal) throws SQLException {
666                return rset.getTime(columnIndex, cal);
667        }
668
669        @Override
670        public Time getTime(String columnName, Calendar cal) throws SQLException {
671                return rset.getTime(columnName, cal);
672        }
673
674        @Override
675        public Timestamp getTimestamp(int columnIndex, Calendar cal) throws SQLException {
676                return rset.getTimestamp(columnIndex, cal);
677        }
678
679        @Override
680        public Timestamp getTimestamp(String columnName, Calendar cal) throws SQLException {
681                return rset.getTimestamp(columnName, cal);
682        }
683
684        @Override
685        public URL getURL(int columnIndex) throws SQLException {
686                return rset.getURL(columnIndex);
687        }
688
689        @Override
690        public URL getURL(String columnName) throws SQLException {
691                return rset.getURL(columnName);
692        }
693
694        @Override
695        public void updateRef(int columnIndex, Ref x) throws SQLException {
696                rset.updateRef(columnIndex, x);
697        }
698
699        @Override
700        public void updateRef(String columnName, Ref x) throws SQLException {
701                rset.updateRef(columnName, x);
702        }
703
704        @Override
705        public void updateBlob(int columnIndex, Blob x) throws SQLException {
706                rset.updateBlob(columnIndex, x);
707        }
708
709        @Override
710        public void updateBlob(String columnName, Blob x) throws SQLException {
711                rset.updateBlob(columnName, x);
712        }
713
714        @Override
715        public void updateClob(int columnIndex, Clob x) throws SQLException {
716                rset.updateClob(columnIndex, x);
717        }
718
719        @Override
720        public void updateClob(String columnName, Clob x) throws SQLException {
721                rset.updateClob(columnName, x);
722        }
723
724        @Override
725        public void updateArray(int columnIndex, Array x) throws SQLException {
726                rset.updateArray(columnIndex, x);
727        }
728
729        @Override
730        public void updateArray(String columnName, Array x) throws SQLException {
731                rset.updateArray(columnName, x);
732        }
733
734        @Override
735        public RowId getRowId(int columnIndex) throws SQLException {
736                return rset.getRowId(columnIndex);
737        }
738
739        @Override
740        public RowId getRowId(String columnLabel) throws SQLException {
741                return rset.getRowId(columnLabel);
742        }
743
744        @Override
745        public void updateRowId(int columnIndex, RowId x) throws SQLException {
746                rset.updateRowId(columnIndex, x);
747        }
748
749        @Override
750        public void updateRowId(String columnLabel, RowId x) throws SQLException {
751                rset.updateRowId(columnLabel, x);
752        }
753
754        @Override
755        public int getHoldability() throws SQLException {
756                return rset.getHoldability();
757        }
758
759        @Override
760        public boolean isClosed() throws SQLException {
761                return rset.isClosed();
762        }
763
764        @Override
765        public void updateNString(int columnIndex, String nString) throws SQLException {
766                rset.updateNString(columnIndex, nString);
767        }
768
769        @Override
770        public void updateNString(String columnLabel, String nString) throws SQLException {
771                rset.updateNString(columnLabel, nString);
772        }
773
774        @Override
775        public void updateNClob(int columnIndex, NClob nClob) throws SQLException {
776                rset.updateNClob(columnIndex, nClob);
777        }
778
779        @Override
780        public void updateNClob(String columnLabel, NClob nClob) throws SQLException {
781                rset.updateNClob(columnLabel, nClob);
782        }
783
784        @Override
785        public NClob getNClob(int columnIndex) throws SQLException {
786                return rset.getNClob(columnIndex);
787        }
788
789        @Override
790        public NClob getNClob(String columnLabel) throws SQLException {
791                return rset.getNClob(columnLabel);
792        }
793
794        @Override
795        public SQLXML getSQLXML(int columnIndex) throws SQLException {
796                return rset.getSQLXML(columnIndex);
797        }
798
799        @Override
800        public SQLXML getSQLXML(String columnLabel) throws SQLException {
801                return rset.getSQLXML(columnLabel);
802        }
803
804        @Override
805        public void updateSQLXML(int columnIndex, SQLXML xmlObject) throws SQLException {
806                rset.updateSQLXML(columnIndex, xmlObject);
807        }
808
809        @Override
810        public void updateSQLXML(String columnLabel, SQLXML xmlObject) throws SQLException {
811                rset.updateSQLXML(columnLabel, xmlObject);
812        }
813
814        @Override
815        public String getNString(int columnIndex) throws SQLException {
816                return rset.getNString(columnIndex);
817        }
818
819        @Override
820        public String getNString(String columnLabel) throws SQLException {
821                return rset.getNString(columnLabel);
822        }
823
824        @Override
825        public Reader getNCharacterStream(int columnIndex) throws SQLException {
826                return rset.getNCharacterStream(columnIndex);
827        }
828
829        @Override
830        public Reader getNCharacterStream(String columnLabel) throws SQLException {
831                return rset.getNCharacterStream(columnLabel);
832        }
833
834        @Override
835        public void updateNCharacterStream(int columnIndex, Reader x, long length) throws SQLException {
836                rset.updateNCharacterStream(columnIndex, x, length);
837        }
838
839        @Override
840        public void updateNCharacterStream(String columnLabel, Reader reader, long length) throws SQLException {
841                rset.updateNCharacterStream(columnLabel, reader, length);
842        }
843
844        @Override
845        public void updateAsciiStream(int columnIndex, InputStream x, long length) throws SQLException {
846                rset.updateAsciiStream(columnIndex, x, length);
847        }
848
849        @Override
850        public void updateBinaryStream(int columnIndex, InputStream x, long length) throws SQLException {
851                rset.updateBinaryStream(columnIndex, x, length);
852        }
853
854        @Override
855        public void updateCharacterStream(int columnIndex, Reader x, long length) throws SQLException {
856                rset.updateCharacterStream(columnIndex, x, length);
857        }
858
859        @Override
860        public void updateAsciiStream(String columnLabel, InputStream x, long length) throws SQLException {
861                rset.updateAsciiStream(columnLabel, x, length);
862        }
863
864        @Override
865        public void updateBinaryStream(String columnLabel, InputStream x, long length) throws SQLException {
866                rset.updateBinaryStream(columnLabel, x, length);
867        }
868
869        @Override
870        public void updateCharacterStream(String columnLabel, Reader reader, long length) throws SQLException {
871                rset.updateCharacterStream(columnLabel, reader, length);
872        }
873
874        @Override
875        public void updateBlob(int columnIndex, InputStream inputStream, long length) throws SQLException {
876                rset.updateBlob(columnIndex, inputStream, length);
877        }
878
879        @Override
880        public void updateBlob(String columnLabel, InputStream inputStream, long length) throws SQLException {
881                rset.updateBlob(columnLabel, inputStream, length);
882        }
883
884        @Override
885        public void updateClob(int columnIndex, Reader reader, long length) throws SQLException {
886                rset.updateClob(columnIndex, reader, length);
887        }
888
889        @Override
890        public void updateClob(String columnLabel, Reader reader, long length) throws SQLException {
891                rset.updateClob(columnLabel, reader, length);
892        }
893
894        @Override
895        public void updateNClob(int columnIndex, Reader reader, long length) throws SQLException {
896                rset.updateNClob(columnIndex, reader, length);
897        }
898
899        @Override
900        public void updateNClob(String columnLabel, Reader reader, long length) throws SQLException {
901                rset.updateNClob(columnLabel, reader, length);
902        }
903
904        @Override
905        public void updateNCharacterStream(int columnIndex, Reader x) throws SQLException {
906                rset.updateNCharacterStream(columnIndex, x);
907        }
908
909        @Override
910        public void updateNCharacterStream(String columnLabel, Reader reader) throws SQLException {
911                rset.updateNCharacterStream(columnLabel, reader);
912        }
913
914        @Override
915        public void updateAsciiStream(int columnIndex, InputStream x) throws SQLException {
916                rset.updateAsciiStream(columnIndex, x);
917        }
918
919        @Override
920        public void updateBinaryStream(int columnIndex, InputStream x) throws SQLException {
921                rset.updateBinaryStream(columnIndex, x);
922        }
923
924        @Override
925        public void updateCharacterStream(int columnIndex, Reader x) throws SQLException {
926                rset.updateCharacterStream(columnIndex, x);
927        }
928
929        @Override
930        public void updateAsciiStream(String columnLabel, InputStream x) throws SQLException {
931                rset.updateAsciiStream(columnLabel, x);
932        }
933
934        @Override
935        public void updateBinaryStream(String columnLabel, InputStream x) throws SQLException {
936                rset.updateBinaryStream(columnLabel, x);
937        }
938
939        @Override
940        public void updateCharacterStream(String columnLabel, Reader reader) throws SQLException {
941                rset.updateCharacterStream(columnLabel, reader);
942        }
943
944        @Override
945        public void updateBlob(int columnIndex, InputStream inputStream) throws SQLException {
946                rset.updateBlob(columnIndex, inputStream);
947        }
948
949        @Override
950        public void updateBlob(String columnLabel, InputStream inputStream) throws SQLException {
951                rset.updateBlob(columnLabel, inputStream);
952        }
953
954        @Override
955        public void updateClob(int columnIndex, Reader reader) throws SQLException {
956                rset.updateClob(columnIndex, reader);
957        }
958
959        @Override
960        public void updateClob(String columnLabel, Reader reader) throws SQLException {
961                rset.updateClob(columnLabel, reader);
962        }
963
964        @Override
965        public void updateNClob(int columnIndex, Reader reader) throws SQLException {
966                rset.updateNClob(columnIndex, reader);
967        }
968
969        @Override
970        public void updateNClob(String columnLabel, Reader reader) throws SQLException {
971                rset.updateNClob(columnLabel, reader);
972        }
973
974        @Override
975        public <T> T getObject(int columnIndex, Class<T> type) throws SQLException {
976                return rset.getObject(columnIndex, type);
977        }
978
979        @Override
980        public <T> T getObject(String columnLabel, Class<T> type) throws SQLException {
981                return rset.getObject(columnLabel, type);
982        }
983
984        @Override
985        public <T> T unwrap(Class<T> iface) throws SQLException {
986                return wrapperSupport.unwrap(iface);
987        }
988
989        @Override
990        public boolean isWrapperFor(Class<?> iface) throws SQLException {
991                return wrapperSupport.isWrapperFor(iface);
992        }
993}