@@ -171,32 +171,23 @@ private synchronized void openArray(
171
171
172
172
if (timestamp_start != null ) {
173
173
Util .checkBigIntegerRange (timestamp_start );
174
- try {
175
- ctx .handleError (
176
- tiledb .tiledb_array_set_open_timestamp_start (ctx .getCtxp (), _arrayp , timestamp_start ));
177
- } catch (TileDBError err ) {
178
- throw err ;
179
- }
174
+ ctx .handleError (
175
+ tiledb .tiledb_array_set_open_timestamp_start (ctx .getCtxp (), _arrayp , timestamp_start ));
180
176
}
181
177
182
178
if (timestamp_end != null ) {
183
179
Util .checkBigIntegerRange (timestamp_end );
184
- try {
185
- ctx .handleError (
186
- tiledb .tiledb_array_set_open_timestamp_end (ctx .getCtxp (), _arrayp , timestamp_end ));
187
- } catch (TileDBError err ) {
188
- throw err ;
189
- }
180
+ ctx .handleError (
181
+ tiledb .tiledb_array_set_open_timestamp_end (ctx .getCtxp (), _arrayp , timestamp_end ));
190
182
}
191
183
192
- ArraySchema _schema ;
193
184
try {
194
185
ctx .handleError (tiledb .tiledb_array_open (ctx .getCtxp (), _arrayp , query_type .toSwigEnum ()));
195
186
} catch (TileDBError err ) {
196
187
tiledb .delete_tiledb_array_tpp (_arraypp );
197
188
throw err ;
198
189
}
199
- _schema = new ArraySchema (ctx , uri );
190
+ ArraySchema _schema = new ArraySchema (ctx , uri );
200
191
201
192
this .ctx = ctx ;
202
193
this .uri = uri ;
@@ -514,12 +505,17 @@ public Pair<BigInteger, BigInteger> getNonEmptyDomainVarSizeFromIndex(long index
514
505
SWIGTYPE_p_int emptyp = tiledb .new_intp ();
515
506
SWIGTYPE_p_unsigned_long_long startSize = tiledb .new_ullp ();
516
507
SWIGTYPE_p_unsigned_long_long endSize = tiledb .new_ullp ();
508
+ try {
509
+ ctx .handleError (
510
+ tiledb .tiledb_array_get_non_empty_domain_var_size_from_index (
511
+ ctx .getCtxp (), arrayp , index , startSize , endSize , emptyp ));
517
512
518
- ctx .handleError (
519
- tiledb .tiledb_array_get_non_empty_domain_var_size_from_index (
520
- ctx .getCtxp (), arrayp , index , startSize , endSize , emptyp ));
521
-
522
- return new Pair (tiledb .ullp_value (startSize ), tiledb .ullp_value (endSize ));
513
+ return new Pair (tiledb .ullp_value (startSize ), tiledb .ullp_value (endSize ));
514
+ } finally {
515
+ tiledb .delete_ullp (startSize );
516
+ tiledb .delete_ullp (endSize );
517
+ tiledb .delete_intp (emptyp );
518
+ }
523
519
}
524
520
525
521
/**
@@ -558,11 +554,17 @@ public Pair<BigInteger, BigInteger> getNonEmptyDomainVarSizeFromName(String name
558
554
SWIGTYPE_p_unsigned_long_long startSize = tiledb .new_ullp ();
559
555
SWIGTYPE_p_unsigned_long_long endSize = tiledb .new_ullp ();
560
556
561
- ctx .handleError (
562
- tiledb .tiledb_array_get_non_empty_domain_var_size_from_name (
563
- ctx .getCtxp (), arrayp , name , startSize , endSize , emptyp ));
557
+ try {
558
+ ctx .handleError (
559
+ tiledb .tiledb_array_get_non_empty_domain_var_size_from_name (
560
+ ctx .getCtxp (), arrayp , name , startSize , endSize , emptyp ));
564
561
565
- return new Pair (tiledb .ullp_value (startSize ), tiledb .ullp_value (endSize ));
562
+ return new Pair (tiledb .ullp_value (startSize ), tiledb .ullp_value (endSize ));
563
+ } finally {
564
+ tiledb .delete_ullp (startSize );
565
+ tiledb .delete_ullp (endSize );
566
+ tiledb .delete_intp (emptyp );
567
+ }
566
568
}
567
569
568
570
/**
@@ -576,23 +578,23 @@ public Pair<BigInteger, BigInteger> getNonEmptyDomainVarSizeFromName(String name
576
578
*/
577
579
public Pair <String , String > getNonEmptyDomainVarFromIndex (long index ) throws TileDBError {
578
580
SWIGTYPE_p_int emptyp = tiledb .new_intp ();
579
-
580
581
Dimension dim = this .schema .getDomain ().getDimension (index );
581
582
Pair <BigInteger , BigInteger > size = this .getNonEmptyDomainVarSizeFromIndex (index );
582
583
583
584
Datatype dimType = dim .getType ();
584
585
int startSize = size .getFirst ().intValue ();
585
586
int endSize = size .getSecond ().intValue ();
587
+ try (NativeArray start = new NativeArray (ctx , startSize , dimType );
588
+ NativeArray end = new NativeArray (ctx , endSize , dimType )) {
589
+ ctx .handleError (
590
+ tiledb .tiledb_array_get_non_empty_domain_var_from_index (
591
+ ctx .getCtxp (), arrayp , index , start .toVoidPointer (), end .toVoidPointer (), emptyp ));
586
592
587
- NativeArray start = new NativeArray (ctx , startSize , dimType );
588
- NativeArray end = new NativeArray (ctx , endSize , dimType );
589
-
590
- ctx .handleError (
591
- tiledb .tiledb_array_get_non_empty_domain_var_from_index (
592
- ctx .getCtxp (), arrayp , index , start .toVoidPointer (), end .toVoidPointer (), emptyp ));
593
-
594
- return new Pair (
595
- new String ((byte []) start .toJavaArray ()), new String ((byte []) end .toJavaArray ()));
593
+ return new Pair (
594
+ new String ((byte []) start .toJavaArray ()), new String ((byte []) end .toJavaArray ()));
595
+ } finally {
596
+ tiledb .delete_intp (emptyp );
597
+ }
596
598
}
597
599
598
600
/**
@@ -615,15 +617,17 @@ public Pair<String, String> getNonEmptyDomainVarFromName(String name) throws Til
615
617
int startSize = size .getFirst ().intValue ();
616
618
int endSize = size .getSecond ().intValue ();
617
619
618
- NativeArray start = new NativeArray (ctx , startSize , dimType );
619
- NativeArray end = new NativeArray (ctx , endSize , dimType );
620
-
621
- ctx .handleError (
622
- tiledb .tiledb_array_get_non_empty_domain_var_from_name (
623
- ctx .getCtxp (), arrayp , name , start .toVoidPointer (), end .toVoidPointer (), emptyp ));
620
+ try (NativeArray start = new NativeArray (ctx , startSize , dimType );
621
+ NativeArray end = new NativeArray (ctx , endSize , dimType ); ) {
622
+ ctx .handleError (
623
+ tiledb .tiledb_array_get_non_empty_domain_var_from_name (
624
+ ctx .getCtxp (), arrayp , name , start .toVoidPointer (), end .toVoidPointer (), emptyp ));
624
625
625
- return new Pair (
626
- new String ((byte []) start .toJavaArray ()), new String ((byte []) end .toJavaArray ()));
626
+ return new Pair (
627
+ new String ((byte []) start .toJavaArray ()), new String ((byte []) end .toJavaArray ()));
628
+ } finally {
629
+ tiledb .delete_intp (emptyp );
630
+ }
627
631
}
628
632
629
633
/**
@@ -657,19 +661,22 @@ public NativeArray getMetadata(String key, Datatype nativeType) throws TileDBErr
657
661
? tiledb .new_tiledb_datatype_tp ()
658
662
: tiledb .copy_tiledb_datatype_tp (nativeType .toSwigEnum ());
659
663
660
- ctx .handleError (
661
- tiledb .tiledb_array_get_metadata (
662
- ctx .getCtxp (), arrayp , key , value_type , value_num , resultArrpp ));
663
-
664
- Datatype derivedNativeType = Datatype .fromSwigEnum (tiledb .tiledb_datatype_tp_value (value_type ));
665
-
666
- long value = tiledb .uintp_value (value_num );
667
- NativeArray result = new NativeArray (ctx , derivedNativeType , resultArrpp , (int ) value );
664
+ try {
665
+ ctx .handleError (
666
+ tiledb .tiledb_array_get_metadata (
667
+ ctx .getCtxp (), arrayp , key , value_type , value_num , resultArrpp ));
668
668
669
- tiledb . delete_uintp ( value_num );
670
- tiledb .delete_tiledb_datatype_tp (value_type );
669
+ Datatype derivedNativeType =
670
+ Datatype . fromSwigEnum ( tiledb .tiledb_datatype_tp_value (value_type ) );
671
671
672
- return result ;
672
+ long value = tiledb .uintp_value (value_num );
673
+ NativeArray result = new NativeArray (ctx , derivedNativeType , resultArrpp , (int ) value );
674
+ return result ;
675
+ } finally {
676
+ tiledb .delete_uintp (value_num );
677
+ tiledb .delete_tiledb_datatype_tp (value_type );
678
+ tiledb .delete_voidpArray (resultArrpp );
679
+ }
673
680
}
674
681
675
682
/**
@@ -697,13 +704,13 @@ public BigInteger getMetadataNum() throws TileDBError {
697
704
698
705
SWIGTYPE_p_unsigned_long_long value_num = tiledb .new_ullp ();
699
706
700
- ctx . handleError ( tiledb . tiledb_array_get_metadata_num ( ctx . getCtxp (), arrayp , value_num ));
701
-
702
- BigInteger value = tiledb .ullp_value (value_num );
703
-
704
- tiledb . delete_ullp ( value_num );
705
-
706
- return value ;
707
+ try {
708
+ ctx . handleError ( tiledb . tiledb_array_get_metadata_num ( ctx . getCtxp (), arrayp , value_num ));
709
+ BigInteger value = tiledb .ullp_value (value_num );
710
+ return value ;
711
+ } finally {
712
+ tiledb . delete_ullp ( value_num );
713
+ }
707
714
}
708
715
709
716
/**
@@ -735,22 +742,25 @@ public Pair<String, NativeArray> getMetadataFromIndex(BigInteger index) throws T
735
742
SWIGTYPE_p_unsigned_int value_num = tiledb .new_uintp ();
736
743
SWIGTYPE_p_p_void value = tiledb .new_voidpArray (0 );
737
744
738
- ctx .handleError (
739
- tiledb .tiledb_array_get_metadata_from_index (
740
- ctx .getCtxp (), arrayp , index , key , key_len , value_type , value_num , value ));
741
-
742
- String keyString = tiledb .charpp_value (key );
743
- long valueLength = tiledb .uintp_value (value_num );
744
- Datatype nativeType = Datatype .fromSwigEnum (tiledb .tiledb_datatype_tp_value (value_type ));
745
+ try {
746
+ ctx .handleError (
747
+ tiledb .tiledb_array_get_metadata_from_index (
748
+ ctx .getCtxp (), arrayp , index , key , key_len , value_type , value_num , value ));
745
749
746
- NativeArray result = new NativeArray (ctx , nativeType , value , (int ) valueLength );
750
+ String keyString = tiledb .charpp_value (key );
751
+ long valueLength = tiledb .uintp_value (value_num );
752
+ Datatype nativeType = Datatype .fromSwigEnum (tiledb .tiledb_datatype_tp_value (value_type ));
747
753
748
- tiledb .delete_uintp (value_num );
749
- tiledb .delete_uintp (key_len );
750
- tiledb .delete_charpp (key );
751
- tiledb .delete_tiledb_datatype_tp (value_type );
754
+ NativeArray result = new NativeArray (ctx , nativeType , value , (int ) valueLength );
755
+ return new Pair <String , NativeArray >(keyString , result );
752
756
753
- return new Pair <String , NativeArray >(keyString , result );
757
+ } finally {
758
+ tiledb .delete_uintp (value_num );
759
+ tiledb .delete_uintp (key_len );
760
+ tiledb .delete_charpp (key );
761
+ tiledb .delete_tiledb_datatype_tp (value_type );
762
+ tiledb .delete_voidpArray (value );
763
+ }
754
764
}
755
765
756
766
/**
@@ -765,13 +775,9 @@ public void deleteFragments(BigInteger timestampStart, BigInteger timestampEnd)
765
775
throws TileDBError {
766
776
Util .checkBigIntegerRange (timestampStart );
767
777
Util .checkBigIntegerRange (timestampEnd );
768
- try {
769
- ctx .handleError (
770
- tiledb .tiledb_array_delete_fragments (
771
- ctx .getCtxp (), getArrayp (), uri , timestampStart , timestampEnd ));
772
- } catch (TileDBError err ) {
773
- throw err ;
774
- }
778
+ ctx .handleError (
779
+ tiledb .tiledb_array_delete_fragments (
780
+ ctx .getCtxp (), getArrayp (), uri , timestampStart , timestampEnd ));
775
781
}
776
782
777
783
/**
@@ -808,15 +814,16 @@ public Boolean hasMetadataKey(String key) throws TileDBError {
808
814
SWIGTYPE_p_tiledb_datatype_t value_type = tiledb .new_tiledb_datatype_tp ();
809
815
SWIGTYPE_p_int has_key = tiledb .new_intp ();
810
816
811
- ctx .handleError (
812
- tiledb .tiledb_array_has_metadata_key (ctx .getCtxp (), arrayp , key , value_type , has_key ));
813
-
814
- Boolean result = tiledb .intp_value (has_key ) > 0 ;
815
-
816
- tiledb .delete_intp (has_key );
817
- tiledb .delete_tiledb_datatype_tp (value_type );
817
+ try {
818
+ ctx .handleError (
819
+ tiledb .tiledb_array_has_metadata_key (ctx .getCtxp (), arrayp , key , value_type , has_key ));
818
820
819
- return result ;
821
+ Boolean result = tiledb .intp_value (has_key ) > 0 ;
822
+ return result ;
823
+ } finally {
824
+ tiledb .delete_intp (has_key );
825
+ tiledb .delete_tiledb_datatype_tp (value_type );
826
+ }
820
827
}
821
828
822
829
/**
@@ -887,11 +894,10 @@ public long getOpenTimestampStart() throws TileDBError {
887
894
try {
888
895
ctx .handleError (
889
896
tiledb .tiledb_array_get_open_timestamp_start (ctx .getCtxp (), getArrayp (), start_t ));
890
- } catch (TileDBError err ) {
897
+ return tiledb .ullp_value (start_t ).longValue ();
898
+ } finally {
891
899
tiledb .delete_ullp (start_t );
892
- throw err ;
893
900
}
894
- return tiledb .ullp_value (start_t ).longValue ();
895
901
}
896
902
897
903
/**
@@ -904,21 +910,16 @@ public long getOpenTimestampEnd() throws TileDBError {
904
910
try {
905
911
ctx .handleError (
906
912
tiledb .tiledb_array_get_open_timestamp_end (ctx .getCtxp (), getArrayp (), end_t ));
907
- } catch (TileDBError err ) {
913
+ return tiledb .ullp_value (end_t ).longValue ();
914
+ } finally {
908
915
tiledb .delete_ullp (end_t );
909
- throw err ;
910
916
}
911
- return tiledb .ullp_value (end_t ).longValue ();
912
917
}
913
918
914
919
/** Sets the array config. */
915
920
public void setConfig (Config config ) throws TileDBError {
916
- try {
917
- ctx .handleError (
918
- tiledb .tiledb_array_set_config (ctx .getCtxp (), getArrayp (), config .getConfigp ()));
919
- } catch (TileDBError err ) {
920
- throw err ;
921
- }
921
+ ctx .handleError (
922
+ tiledb .tiledb_array_set_config (ctx .getCtxp (), getArrayp (), config .getConfigp ()));
922
923
}
923
924
924
925
/**
@@ -963,14 +964,14 @@ protected SWIGTYPE_p_tiledb_array_t getArrayp() {
963
964
964
965
/** Free's the native objects and closes the Array. */
965
966
public synchronized void close () {
967
+ if (schema != null ) {
968
+ schema .close ();
969
+ }
966
970
if (arrayp != null && arraypp != null ) {
967
971
tiledb .tiledb_array_close (ctx .getCtxp (), arrayp );
968
972
tiledb .tiledb_array_free (arraypp );
969
973
arrayp = null ;
970
974
arraypp = null ;
971
- if (schema != null ) {
972
- schema .close ();
973
- }
974
975
}
975
976
}
976
977
}
0 commit comments