Author: reschke
Date: Fri Nov 13 12:21:26 2015
New Revision: 1714196

URL: http://svn.apache.org/viewvc?rev=1714196&view=rev
Log:
OAK-3605: RDBBlob/DocumentStore: reduce class complexity (1/2) (ported to 1.0)

Modified:
    jackrabbit/oak/branches/1.0/   (props changed)
    
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
    
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java
    
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
    
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
    
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java
    
jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java

Propchange: jackrabbit/oak/branches/1.0/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Nov 13 12:21:26 2015
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.2:1695500,1700753,1709440,1714095
-/jackrabbit/oak/trunk:1584578,1584602,1584614,1584616,1584709,1584781,1584937,1585297,1585304-1585305,1585420,1585424,1585427,1585448,1585465,1585468,1585486,1585497,1585509,1585647,1585655-1585656,1585661,1585665-1585666,1585669-1585670,1585673,1585680,1585719,1585763,1585770,1585896,1585904,1585907,1585940,1585949,1585951,1585956,1585962-1585963,1586287,1586320,1586364,1586372,1586655,1586836,1587130,1587224,1587399,1587408,1587472,1587485,1587488,1587538,1587580,1587807,1588033,1588042,1588046,1588066,1588201,1589025,1589101,1589137,1589141,1589263,1589440,1589442,1589484,1589488,1589661,1589664,1589682,1589708,1589741,1589748,1589789,1589794,1589850,1589864,1590628,1590660,1590684,1590697,1590701,1590980,1590988,1591101,1591226,1591229,1591293,1591314,1591317,1591362,1591374,1591381,1591438,1591467,1591552,1591704,1591713,1591715,1591723,1591874,1592487,1592512,1592658,1592665,1592677,1592742,1592744,1592787,1592809,1592955,1593036,1593048,1593061,1593133,1593210-1593211,1593231
 
,1593245,1593250,1593294,1593304,1593317,1593342,1593554,1594158-1594164,1594166-1594167,1594169,1594237,1594800,1594808,1594835,1594888,1594987,1595147,1595186,1595457,1595856,1596241,1596474,1596534,1596844,1596889,1597569,1597795,1597854,1597860,1598292,1598302,1598352,1598369,1598595,1598631,1598696,1598732,1598797-1598798,1599160,1599299,1599332,1599416,1599434,1599671,1600088,1600935,1601309,1601388,1601578,1601649,1601676,1601757,1601768,1601814,1601833,1601838,1601853,1601878,1601888,1601922,1602156,1602170,1602174,1602179,1602183,1602201,1602207,1602227,1602256,1602261,1602342,1602796-1602797,1602800,1602809,1602853,1602872,1602914,1603155,1603307,1603401,1603441,1603748,1604166,1605030,1605036,1605038,1605292,1605447,1605526,1605670,1605725,1605831,1605852,1606077,1606079,1606087,1606638,1606641,1606644,1606708,1606711,1607031-1607032,1607077,1607127,1607141,1607152,1607185,1607196,1607331,1607362,1607366,1607392,1607526,1607557,1607664,1607737,1608560,1608731,1608783,1609
 
064,1609081,1609165,1609214,1609488,1610489,1610592,1610603,1610634,1610658,1610664,1611021,1611041,1611270,1611275,1611277,1611313,1611332,1611584,1612560,1612825,1612848,1612892,1612899,1612993,1613018,1613041,1614032,1614265,1614272,1614344-1614345,1614384-1614385,1614397,1614405-1614406,1614574,1614591,1614593,1614596,1614604,1614689,1614807,1614835,1614891,1615417-1615418,1616182,1616236,1616463,1616719,1617417,1617451,1617463,1617711,1618158,1618613,1618624,1618709,1619222,1619411,1619695,1619800,1619808,1619815,1619823-1619824,1620512,1620581,1620585,1620634,1620898,1620905,1621115,1621123-1621124,1621168,1621192,1621201,1621706,1621962,1622197,1622201,1622207,1622250,1622479,1623364,1623766,1623827,1623949,1623969,1623973,1624216,1624317,1624551,1624559,1624973,1624993-1624994,1625025,1625036,1625158,1625224,1625237,1625299,1625348,1625620,1625916,1625962-1625963,1626021,1626053,1626163,1626168,1626175,1626191,1626265,1626770,1627047,1627052,1627228,1627346,1627470,1627473,1
 
627479,1627503,1627586,1627590,1627715,1627731,1628180,1628198,1628262,1628447,1628608,1629629,1629688,1629840,1629858,1629917,1630055-1630057,1630156,1630299,1630338,1630773,1631283-1631284,1631333-1631334,1631617-1631619,1631630,1631699,1631704,1631711,1631967-1631969,1631986,1631990,1631999,1632002-1632003,1632017,1632258,1632264,1632270,1632293,1632303,1632592,1632605,1633315,1633327,1633389,1633559-1633560,1633562,1633567,1633571,1633598,1633608,1633641,1633687,1633697,1633768,1633783,1634505,1634513,1634774,1634779,1634781,1634792,1634803,1634814,1634816,1634838,1634841,1634852,1634864,1634896,1634898,1635044-1635045,1635060,1635077,1635089,1635102,1635108,1635178,1635218,1635387,1635435,1635518,1635563,1635586,1636336,1636348,1636505,1636585,1636799,1637368,1637382,1637413,1637651,1637815,1638779-1638783,1639260,1639577,1639622,1639963,1639966,1639973,1640134,1640143,1640523,1640555-1640556,1640694-1640695,1640715,1640722-1640723,1640728,1640863-1640872,1641340,1641346,164135
 
0,1641352,1641541,1641596-1641599,1641601,1641662,1641671,1641695,1641771,1641802,1641811,1641950,1642031,1642056,1642119,1642285,1642648,1642667,1642954,1642959,1643111,1643178,1643186,1643204,1643287,1643767,1643774,1643982,1644016,1644106,1644366,1644383,1644397-1644398,1644407,1644479,1644547,1644552,1644554,1644588,1644645,1644650,1644654,1644689,1644750,1645421,1645424,1645459,1645585,1645611,1645637,1645646,1645660-1645663,1645888,1645901,1645948,1645966,1645970-1645971,1646014,1646164,1646174,1646469,1646684,1646687,1646726-1646728,1646766,1646795,1646981,1649743,1649803,1650015,1650239,1650529,1650797,1651323,1651382,1651643,1651652,1651730,1651988-1651989,1651996,1652024,1652035,1652058-1652059,1652075,1652127,1652158,1652467,1652965,1652971,1652992,1653207,1653446,1653463,1653484,1653572,1653579,1653591,1653804,1653809,1653813,1653848-1653850,1653882,1654116,1654174,1654743,1654756,1654778,1655028,1655049,1655054-1655055,1655086,1655237,1655248,1655996,1656019,1656027,165
 
6033,1656303,1656394,1656400,1656425,1656427,1656432,1656453,1656628,1656678,1657128,1657132,1657163,1657188,1657265,1657511,1657766,1657804,1658470,1658977,1658983,1659285,1659483,1659527,1659550,1659578,1659765,1660100,1660154-1660155,1660383-1660384,1660409,1660426,1660676,1660870,1660872,1660897,1660903,1661069,1661122,1661146,1661158,1661226,1661630,1661643,1661645,1661988,1662313-1662315,1662323,1662381,1662450,1662456,1663241,1663275,1663288,1663448,1663526,1663528,1663565,1663578,1663614,1663666,1663705,1663730,1663753,1663854,1663927,1664038,1664184,1664228-1664229,1664231,1664381,1664569,1664947,1664987,1665184,1665257,1665271-1665272,1665274-1665275,1665436,1665604,1665634,1665758,1665835,1665892,1665897,1665910,1665918,1666100,1666102,1666177,1666218,1666220,1666351-1666352,1666381,1666384,1666426,1666491,1666787,1667062,1667184,1667293,1667462,1667498,1667502,1667573,1667590,1667696,1667782,1668160,1668275,1668624,1668641,1668645,1668649,1668665,1668671,1668683,1668688,
 
1668845,1669072,1669096,1669135,1669337,1669361,1669579,1669680,1669989,1670030,1670693,1670705,1671489,1671512,1671773,1671787,1671795,1672055,1672277,1672350,1672468,1672537,1672603,1672642,1672644,1672834-1672835,1673351,1673410,1673431,1673436,1673644,1673662-1673663,1673695,1673713,1673738,1673787,1673791,1674046,1674065,1674075,1674107,1674150,1674780,1675054,1675319,1675332,1675382,1675555,1675566,1676198,1676407,1676458,1676670,1676703,1677579,1677609,1677611,1677774,1677788,1677797,1677804,1677806,1677939,1677991,1678023,1678095-1678096,1678171,1678173,1678211,1678323,1678758,1678938,1678954,1679144,1679147,1679165,1679191,1679232,1679503,1679961,1680170,1680182,1680222,1680232,1680236,1680461,1680633,1680643,1680747,1680805-1680806,1680903,1681282,1681767,1681918,1681955,1682218,1682235,1682437,1682494,1682555,1682855,1682904,1683059,1683089,1683213,1683249,1683259,1683278,1683323,1683687,1683700,1684174,1684376,1684442,1684561,1684570,1684618,1684820,1684836,1684868,16850
 
23,1685075,1685370,1685552,1685589-1685590,1685840,1685964,1685977,1685989,1685999,1686023,1686032,1686097,1686229,1686234,1686253,1686414,1686780,1686854,1686857,1686971,1687053,1687175,1687196,1687198,1687220,1687239-1687240,1687301,1687441,1687553,1688090,1688179,1688349,1688421,1688436,1688453,1688622,1688636,1688817,1689003-1689004,1689008,1689577,1689581,1689623,1689774,1689810,1689828,1689831,1689833,1689903,1690017,1690043,1690047,1690057,1690247,1690249,1690634-1690637,1690650,1690669,1690674,1690941,1691139,1691159,1691167,1691183,1691188,1691210,1691307,1691331-1691333,1691345,1691384-1691385,1691401,1691509,1692065,1692133,1692156,1692250,1692274,1692363,1692382,1692478,1692955,1693030,1693209,1693421,1693525-1693526,1694007,1694393,1695050,1695122,1695280,1695299,1695492,1695540,1695905,1696194,1696242,1696285,1696578,1696759,1696916,1697363,1697373,1697410,1697582,1697589,1697616,1697672,1700191,1700231,1700397,1700506,1700571,1700727,1700749,1700769,1700775,1701619,17
 
01733,1701743,1701750,1701768,1701806,1701810,1701814,1701948,1701955,1701959,1701965,1702014,1702045,1702241,1702272,1702423,1702860,1702942,1702960,1703212,1703382,1703395,1703411,1703428,1703430,1703568,1703592,1703758,1703858,1703878,1704256,1704282,1704285,1704457,1704479,1704614,1704629,1704636,1704655,1704670,1704886,1705005,1705027,1705043,1705055,1705250,1705268,1705273,1705323,1705677,1705701,1705871,1706764,1706772,1707049,1707191,1707435,1708105,1708546,1708592,1709012,1709852,1709978,1710013,1710031,1710049,1710205,1710242,1710559,1710575,1710590,1710614,1710637,1710789,1710811,1710816,1710972,1711248,1711282,1712319,1712490,1712531,1712730,1712785,1712963,1713008,1713439,1713461,1713580,1713586,1713600,1713626,1713803,1714095
+/jackrabbit/oak/trunk:1584578,1584602,1584614,1584616,1584709,1584781,1584937,1585297,1585304-1585305,1585420,1585424,1585427,1585448,1585465,1585468,1585486,1585497,1585509,1585647,1585655-1585656,1585661,1585665-1585666,1585669-1585670,1585673,1585680,1585719,1585763,1585770,1585896,1585904,1585907,1585940,1585949,1585951,1585956,1585962-1585963,1586287,1586320,1586364,1586372,1586655,1586836,1587130,1587224,1587399,1587408,1587472,1587485,1587488,1587538,1587580,1587807,1588033,1588042,1588046,1588066,1588201,1589025,1589101,1589137,1589141,1589263,1589440,1589442,1589484,1589488,1589661,1589664,1589682,1589708,1589741,1589748,1589789,1589794,1589850,1589864,1590628,1590660,1590684,1590697,1590701,1590980,1590988,1591101,1591226,1591229,1591293,1591314,1591317,1591362,1591374,1591381,1591438,1591467,1591552,1591704,1591713,1591715,1591723,1591874,1592487,1592512,1592658,1592665,1592677,1592742,1592744,1592787,1592809,1592955,1593036,1593048,1593061,1593133,1593210-1593211,1593231
 
,1593245,1593250,1593294,1593304,1593317,1593342,1593554,1594158-1594164,1594166-1594167,1594169,1594237,1594800,1594808,1594835,1594888,1594987,1595147,1595186,1595457,1595856,1596241,1596474,1596534,1596844,1596889,1597569,1597795,1597854,1597860,1598292,1598302,1598352,1598369,1598595,1598631,1598696,1598732,1598797-1598798,1599160,1599299,1599332,1599416,1599434,1599671,1600088,1600935,1601309,1601388,1601578,1601649,1601676,1601757,1601768,1601814,1601833,1601838,1601853,1601878,1601888,1601922,1602156,1602170,1602174,1602179,1602183,1602201,1602207,1602227,1602256,1602261,1602342,1602796-1602797,1602800,1602809,1602853,1602872,1602914,1603155,1603307,1603401,1603441,1603748,1604166,1605030,1605036,1605038,1605292,1605447,1605526,1605670,1605725,1605831,1605852,1606077,1606079,1606087,1606638,1606641,1606644,1606708,1606711,1607031-1607032,1607077,1607127,1607141,1607152,1607185,1607196,1607331,1607362,1607366,1607392,1607526,1607557,1607664,1607737,1608560,1608731,1608783,1609
 
064,1609081,1609165,1609214,1609488,1610489,1610592,1610603,1610634,1610658,1610664,1611021,1611041,1611270,1611275,1611277,1611313,1611332,1611584,1612560,1612825,1612848,1612892,1612899,1612993,1613018,1613041,1614032,1614265,1614272,1614344-1614345,1614384-1614385,1614397,1614405-1614406,1614574,1614591,1614593,1614596,1614604,1614689,1614807,1614835,1614891,1615417-1615418,1616182,1616236,1616463,1616719,1617417,1617451,1617463,1617711,1618158,1618613,1618624,1618709,1619222,1619411,1619695,1619800,1619808,1619815,1619823-1619824,1620512,1620581,1620585,1620634,1620898,1620905,1621115,1621123-1621124,1621168,1621192,1621201,1621706,1621962,1622197,1622201,1622207,1622250,1622479,1623364,1623766,1623827,1623949,1623969,1623973,1624216,1624317,1624551,1624559,1624973,1624993-1624994,1625025,1625036,1625158,1625224,1625237,1625299,1625348,1625620,1625916,1625962-1625963,1626021,1626053,1626163,1626168,1626175,1626191,1626265,1626770,1627047,1627052,1627228,1627346,1627470,1627473,1
 
627479,1627503,1627586,1627590,1627715,1627731,1628180,1628198,1628262,1628447,1628608,1629629,1629688,1629840,1629858,1629917,1630055-1630057,1630156,1630299,1630338,1630773,1631283-1631284,1631333-1631334,1631617-1631619,1631630,1631699,1631704,1631711,1631967-1631969,1631986,1631990,1631999,1632002-1632003,1632017,1632258,1632264,1632270,1632293,1632303,1632592,1632605,1633315,1633327,1633389,1633559-1633560,1633562,1633567,1633571,1633598,1633608,1633641,1633687,1633697,1633768,1633783,1634505,1634513,1634774,1634779,1634781,1634792,1634803,1634814,1634816,1634838,1634841,1634852,1634864,1634896,1634898,1635044-1635045,1635060,1635077,1635089,1635102,1635108,1635178,1635218,1635387,1635435,1635518,1635563,1635586,1636336,1636348,1636505,1636585,1636799,1637368,1637382,1637413,1637651,1637815,1638779-1638783,1639260,1639577,1639622,1639963,1639966,1639973,1640134,1640143,1640523,1640555-1640556,1640694-1640695,1640715,1640722-1640723,1640728,1640863-1640872,1641340,1641346,164135
 
0,1641352,1641541,1641596-1641599,1641601,1641662,1641671,1641695,1641771,1641802,1641811,1641950,1642031,1642056,1642119,1642285,1642648,1642667,1642954,1642959,1643111,1643178,1643186,1643204,1643287,1643767,1643774,1643982,1644016,1644106,1644366,1644383,1644397-1644398,1644407,1644479,1644547,1644552,1644554,1644588,1644645,1644650,1644654,1644689,1644750,1645421,1645424,1645459,1645585,1645611,1645637,1645646,1645660-1645663,1645888,1645901,1645948,1645966,1645970-1645971,1646014,1646164,1646174,1646469,1646684,1646687,1646726-1646728,1646766,1646795,1646981,1649743,1649803,1650015,1650239,1650529,1650797,1651323,1651382,1651643,1651652,1651730,1651988-1651989,1651996,1652024,1652035,1652058-1652059,1652075,1652127,1652158,1652467,1652965,1652971,1652992,1653207,1653446,1653463,1653484,1653572,1653579,1653591,1653804,1653809,1653813,1653848-1653850,1653882,1654116,1654174,1654743,1654756,1654778,1655028,1655049,1655054-1655055,1655086,1655237,1655248,1655996,1656019,1656027,165
 
6033,1656303,1656394,1656400,1656425,1656427,1656432,1656453,1656628,1656678,1657128,1657132,1657163,1657188,1657265,1657511,1657766,1657804,1658470,1658977,1658983,1659285,1659483,1659527,1659550,1659578,1659765,1660100,1660154-1660155,1660383-1660384,1660409,1660426,1660676,1660870,1660872,1660897,1660903,1661069,1661122,1661146,1661158,1661226,1661630,1661643,1661645,1661988,1662313-1662315,1662323,1662381,1662450,1662456,1663241,1663275,1663288,1663448,1663526,1663528,1663565,1663578,1663614,1663666,1663705,1663730,1663753,1663854,1663927,1664038,1664184,1664228-1664229,1664231,1664381,1664569,1664947,1664987,1665184,1665257,1665271-1665272,1665274-1665275,1665436,1665604,1665634,1665758,1665835,1665892,1665897,1665910,1665918,1666100,1666102,1666177,1666218,1666220,1666351-1666352,1666381,1666384,1666426,1666491,1666787,1667062,1667184,1667293,1667462,1667498,1667502,1667573,1667590,1667696,1667782,1668160,1668275,1668624,1668641,1668645,1668649,1668665,1668671,1668683,1668688,
 
1668845,1669072,1669096,1669135,1669337,1669361,1669579,1669680,1669989,1670030,1670693,1670705,1671489,1671512,1671773,1671787,1671795,1672055,1672277,1672350,1672468,1672537,1672603,1672642,1672644,1672834-1672835,1673351,1673410,1673431,1673436,1673644,1673662-1673663,1673695,1673713,1673738,1673787,1673791,1674046,1674065,1674075,1674107,1674150,1674780,1675054,1675319,1675332,1675382,1675555,1675566,1676198,1676407,1676458,1676670,1676703,1677579,1677609,1677611,1677774,1677788,1677797,1677804,1677806,1677939,1677991,1678023,1678095-1678096,1678171,1678173,1678211,1678323,1678758,1678938,1678954,1679144,1679147,1679165,1679191,1679232,1679503,1679961,1680170,1680182,1680222,1680232,1680236,1680461,1680633,1680643,1680747,1680805-1680806,1680903,1681282,1681767,1681918,1681955,1682218,1682235,1682437,1682494,1682555,1682855,1682904,1683059,1683089,1683213,1683249,1683259,1683278,1683323,1683687,1683700,1684174,1684376,1684442,1684561,1684570,1684618,1684820,1684836,1684868,16850
 
23,1685075,1685370,1685552,1685589-1685590,1685840,1685964,1685977,1685989,1685999,1686023,1686032,1686097,1686229,1686234,1686253,1686414,1686780,1686854,1686857,1686971,1687053,1687175,1687196,1687198,1687220,1687239-1687240,1687301,1687441,1687553,1688090,1688179,1688349,1688421,1688436,1688453,1688622,1688636,1688817,1689003-1689004,1689008,1689577,1689581,1689623,1689774,1689810,1689828,1689831,1689833,1689903,1690017,1690043,1690047,1690057,1690247,1690249,1690634-1690637,1690650,1690669,1690674,1690941,1691139,1691159,1691167,1691183,1691188,1691210,1691307,1691331-1691333,1691345,1691384-1691385,1691401,1691509,1692065,1692133,1692156,1692250,1692274,1692363,1692382,1692478,1692955,1693030,1693209,1693421,1693525-1693526,1694007,1694393,1695050,1695122,1695280,1695299,1695492,1695540,1695905,1696194,1696242,1696285,1696578,1696759,1696916,1697363,1697373,1697410,1697582,1697589,1697616,1697672,1700191,1700231,1700397,1700506,1700571,1700727,1700749,1700769,1700775,1701619,17
 
01733,1701743,1701750,1701768,1701806,1701810,1701814,1701948,1701955,1701959,1701965,1702014,1702045,1702241,1702272,1702423,1702860,1702942,1702960,1703212,1703382,1703395,1703411,1703428,1703430,1703568,1703592,1703758,1703858,1703878,1704256,1704282,1704285,1704457,1704479,1704614,1704629,1704636,1704655,1704670,1704886,1705005,1705027,1705043,1705055,1705250,1705268,1705273,1705323,1705677,1705701,1705871,1706764,1706772,1707049,1707191,1707435,1708105,1708546,1708592,1709012,1709852,1709978,1710013,1710031,1710049,1710205,1710242,1710559,1710575,1710590,1710614,1710637,1710789,1710811,1710816,1710972,1711248,1711282,1712319,1712490,1712531,1712730,1712785,1712963,1713008,1713439,1713461,1713580,1713586,1713599-1713600,1713626,1713698,1713803,1713809,1714095
 /jackrabbit/trunk:1345480

Modified: 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java?rev=1714196&r1=1714195&r2=1714196&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
 (original)
+++ 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
 Fri Nov 13 12:21:26 2015
@@ -16,6 +16,9 @@
  */
 package org.apache.jackrabbit.oak.plugins.document.rdb;
 
+import static 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeResultSet;
+import static 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeStatement;
+
 import java.io.Closeable;
 import java.io.IOException;
 import java.security.MessageDigest;
@@ -84,7 +87,7 @@ public class RDBBlobStore extends Cachin
                         stmt = null;
                         con.commit();
                     } catch (SQLException ex) {
-                        this.ch.closeStatement(stmt);
+                        closeStatement(stmt);
                         LOG.debug("attempting to drop: " + tname);
                     }
                 } catch (SQLException ex) {
@@ -186,7 +189,7 @@ public class RDBBlobStore extends Cachin
                     con.commit();
                     tablesPresent.add(tableName);
                 } catch (SQLException ex) {
-                    this.ch.closeStatement(checkStatement);
+                    closeStatement(checkStatement);
  
                     // table does not appear to exist
                     con.rollback();
@@ -226,7 +229,7 @@ public class RDBBlobStore extends Cachin
 
             this.callStack = LOG.isDebugEnabled() ? new Exception("call stack 
of RDBBlobStore creation") : null;
         } finally {
-            this.ch.closeStatement(createStatement);
+            closeStatement(createStatement);
             this.ch.closeConnection(con);
         }
     }
@@ -420,7 +423,7 @@ public class RDBBlobStore extends Cachin
             prep.executeUpdate();
             prep.close();
         } finally {
-            this.ch.closeStatement(prep);
+            closeStatement(prep);
             con.commit();
             this.ch.closeConnection(con);
         }
@@ -470,10 +473,10 @@ public class RDBBlobStore extends Cachin
             minLastModified = 0;
             return count;
         } finally {
-            this.ch.closeResultSet(rs);
-            this.ch.closeStatement(prepCheck);
-            this.ch.closeStatement(prepDelMeta);
-            this.ch.closeStatement(prepDelData);
+            closeResultSet(rs);
+            closeStatement(prepCheck);
+            closeStatement(prepDelMeta);
+            closeStatement(prepDelData);
             con.commit();
             this.ch.closeConnection(con);
         }
@@ -522,13 +525,9 @@ public class RDBBlobStore extends Cachin
 
             prepMeta.execute();
             prepData.execute();
-            prepMeta.close();
-            prepMeta = null;
-            prepData.close();
-            prepData = null;
         } finally {
-            this.ch.closeStatement(prepMeta);
-            this.ch.closeStatement(prepData);
+            closeStatement(prepMeta);
+            closeStatement(prepData);
             con.commit();
             this.ch.closeConnection(con);
         }
@@ -612,8 +611,8 @@ public class RDBBlobStore extends Cachin
                     rs = null;
                     return !results.isEmpty();
                 } finally {
-                    this.ch.closeResultSet(rs);
-                    this.ch.closeStatement(prep);
+                    closeResultSet(rs);
+                    closeStatement(prep);
                     connection.commit();
                     this.ch.closeConnection(connection);
                 }

Modified: 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java?rev=1714196&r1=1714195&r2=1714196&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java
 (original)
+++ 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBConnectionHandler.java
 Fri Nov 13 12:21:26 2015
@@ -18,7 +18,6 @@ package org.apache.jackrabbit.oak.plugin
 
 import java.io.Closeable;
 import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -112,42 +111,6 @@ public class RDBConnectionHandler implem
     }
 
     /**
-     * Closes a {@link Statement}, logging potential problems.
-     * @return null
-     */
-    public <T extends Statement> T closeStatement(@CheckForNull T stmt) {
-        if (stmt != null) {
-            try {
-                stmt.close();
-            } catch (SQLException ex) {
-                LOG.debug("Closing statement", ex);
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Closes a {@link ResultSet}, logging potential problems.
-     * 
-     * @return null
-     */
-    public ResultSet closeResultSet(@CheckForNull ResultSet rs) {
-        if (rs != null) {
-            try {
-                rs.close();
-            } catch (SQLException ex) {
-                LOG.debug("Closing result set", ex);
-            }
-        }
-
-        return null;
-    }
-
-    public boolean isClosed() {
-        return this.ds == null;
-    }
-
-    /**
      * Return current schema name or {@code null} when unavailable
      */
     @CheckForNull
@@ -160,12 +123,17 @@ public class RDBConnectionHandler implem
         }
     }
 
+    public boolean isClosed() {
+        return this.ds == null;
+    }
+
     @Override
     public void close() throws IOException {
         this.ds = null;
         this.closedTime = System.currentTimeMillis();
     }
 
+    @Nonnull
     private DataSource getDataSource() throws IllegalStateException {
         DataSource result = this.ds;
         if (result == null) {

Modified: 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1714196&r1=1714195&r2=1714196&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
 (original)
+++ 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
 Fri Nov 13 12:21:26 2015
@@ -18,6 +18,9 @@ package org.apache.jackrabbit.oak.plugin
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static 
org.apache.jackrabbit.oak.plugins.document.UpdateUtils.checkConditions;
+import static 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeResultSet;
+import static 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeStatement;
+import static 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.createTableName;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -307,7 +310,7 @@ public class RDBDocumentStore implements
         Connection connection = null;
         PreparedStatement stmt = null;
         ResultSet rs = null;
-        String tableName = getTable(Collection.NODES);
+        String tableName = getTable(Collection.NODES).getName();
         long result;
         try {
             connection = this.ch.getROConnection();
@@ -343,8 +346,8 @@ public class RDBDocumentStore implements
             LOG.error("", ex);
             throw new DocumentStoreException(ex);
         } finally {
-            this.ch.closeResultSet(rs);
-            this.ch.closeStatement(stmt);
+            closeResultSet(rs);
+            closeStatement(stmt);
             this.ch.closeConnection(connection);
         }
     }
@@ -380,10 +383,10 @@ public class RDBDocumentStore implements
     }
 
     // table names
-    private static Map<Object, String> TABLEMAP;
+    private static Map<Collection<? extends Document>, String> TABLEMAP;
     private static List<String> TABLENAMES;
     static {
-        Map<Object, String> tmp = new HashMap<Object, String>();
+        Map<Collection<? extends Document>, String> tmp = new 
HashMap<Collection<? extends Document>, String>();
         tmp.put(Collection.CLUSTER_NODES, "CLUSTERNODES");
         tmp.put(Collection.JOURNAL, "JOURNAL");
         tmp.put(Collection.NODES, "NODES");
@@ -398,6 +401,43 @@ public class RDBDocumentStore implements
         return TABLENAMES;
     }
 
+    /**
+     * Holds the data about a table that can vary: name, whether the primary 
key
+     * is binary, and the estimated size of the "data" column.
+     */
+    private static class TableMetaData {
+
+        final String name;
+        boolean idIsBinary = false;
+        private int dataLimitInOctets = 16384;
+
+        public TableMetaData(String name) {
+            this.name = name;
+        }
+
+        public int getDataLimitInOctets() {
+            return this.dataLimitInOctets;
+        }
+
+        public String getName() {
+            return this.name;
+        }
+
+        public boolean isIdBinary() {
+            return this.idIsBinary;
+        }
+
+        public void setIdIsBinary(boolean idIsBinary) {
+            this.idIsBinary = idIsBinary;
+        }
+
+        public void setDataLimitInOctets(int dataLimitInOctets) {
+            this.dataLimitInOctets = dataLimitInOctets;
+        }
+    }
+
+    private final Map<Collection<? extends Document>, TableMetaData> tableMeta 
= new HashMap<Collection<? extends Document>, TableMetaData>();
+
     @Override
     public void dispose() {
         if (!this.tablesToBeDropped.isEmpty()) {
@@ -417,7 +457,7 @@ public class RDBDocumentStore implements
                     } catch (SQLException ex) {
                         LOG.debug("attempting to drop: " + tname, ex);
                     } finally {
-                        this.ch.closeStatement(stmt);
+                        closeStatement(stmt);
                     }
                 } catch (SQLException ex) {
                     LOG.debug("attempting to drop: " + tname, ex);
@@ -477,21 +517,12 @@ public class RDBDocumentStore implements
     // from options
     private Set<String> tablesToBeDropped = new HashSet<String>();
 
-    // table names
-    private String tnNodes, tnClusterNodes, tnSettings, tnJournal;
-
     // ratio between Java characters and UTF-8 encoding
     // a) single characters will fit into 3 bytes
     // b) a surrogate pair (two Java characters) will fit into 4 bytes
     // thus...
     private static final int CHAR2OCTETRATIO = 3;
 
-    // capacity of DATA column
-    private int dataLimitInOctets = 16384;
-
-    // whether the ID column is a binary type
-    private boolean isIdBinary = false;
-
     // number of retries for updates
     private static final int RETRIES = 10;
 
@@ -517,10 +548,14 @@ public class RDBDocumentStore implements
 
     private void initialize(DataSource ds, DocumentMK.Builder builder, 
RDBOptions options) throws Exception {
 
-        this.tnNodes = RDBJDBCTools.createTableName(options.getTablePrefix(), 
TABLEMAP.get(Collection.NODES));
-        this.tnClusterNodes = 
RDBJDBCTools.createTableName(options.getTablePrefix(), 
TABLEMAP.get(Collection.CLUSTER_NODES));
-        this.tnSettings = 
RDBJDBCTools.createTableName(options.getTablePrefix(), 
TABLEMAP.get(Collection.SETTINGS));
-        this.tnJournal = 
RDBJDBCTools.createTableName(options.getTablePrefix(), 
TABLEMAP.get(Collection.JOURNAL));
+        this.tableMeta.put(Collection.NODES,
+                new TableMetaData(createTableName(options.getTablePrefix(), 
TABLEMAP.get(Collection.NODES))));
+        this.tableMeta.put(Collection.CLUSTER_NODES,
+                new TableMetaData(createTableName(options.getTablePrefix(), 
TABLEMAP.get(Collection.CLUSTER_NODES))));
+        this.tableMeta.put(Collection.JOURNAL,
+                new TableMetaData(createTableName(options.getTablePrefix(), 
TABLEMAP.get(Collection.JOURNAL))));
+        this.tableMeta.put(Collection.SETTINGS,
+                new TableMetaData(createTableName(options.getTablePrefix(), 
TABLEMAP.get(Collection.SETTINGS))));
 
         this.ch = new RDBConnectionHandler(ds);
         this.callStack = LOG.isDebugEnabled() ? new Exception("call stack of 
RDBDocumentStore creation") : null;
@@ -566,7 +601,7 @@ public class RDBDocumentStore implements
                 con.commit();
             }
             finally {
-                this.ch.closeStatement(stmt);
+                closeStatement(stmt);
             }
         }
 
@@ -574,10 +609,14 @@ public class RDBDocumentStore implements
         List<String> tablesPresent = new ArrayList<String>();
         StringBuilder tableDiags = new StringBuilder();
         try {
-            createTableFor(con, Collection.CLUSTER_NODES, tablesCreated, 
tablesPresent, tableDiags);
-            createTableFor(con, Collection.NODES, tablesCreated, 
tablesPresent, tableDiags);
-            createTableFor(con, Collection.SETTINGS, tablesCreated, 
tablesPresent, tableDiags);
-            createTableFor(con, Collection.JOURNAL, tablesCreated, 
tablesPresent, tableDiags);
+            createTableFor(con, Collection.CLUSTER_NODES, 
this.tableMeta.get(Collection.CLUSTER_NODES), tablesCreated,
+                    tablesPresent, tableDiags);
+            createTableFor(con, Collection.NODES, 
this.tableMeta.get(Collection.NODES), tablesCreated, tablesPresent,
+                    tableDiags);
+            createTableFor(con, Collection.SETTINGS, 
this.tableMeta.get(Collection.SETTINGS), tablesCreated, tablesPresent,
+                    tableDiags);
+            createTableFor(con, Collection.JOURNAL, 
this.tableMeta.get(Collection.JOURNAL), tablesCreated, tablesPresent,
+                    tableDiags);
         } finally {
             con.commit();
             con.close();
@@ -591,7 +630,7 @@ public class RDBDocumentStore implements
             tableDiags.insert(0, ", ");
         }
 
-        String diag = db.getAdditionalDiagnostics(this.ch, this.tnNodes);
+        String diag = db.getAdditionalDiagnostics(this.ch, 
this.tableMeta.get(Collection.NODES).getName());
 
         LOG.info("RDBDocumentStore (" + OakVersion.getVersion() + ") 
instantiated for database " + dbDesc + ", using driver: "
                 + driverDesc + ", connecting to: " + dbUrl + (diag.isEmpty() ? 
"" : (", properties: " + diag))
@@ -609,14 +648,14 @@ public class RDBDocumentStore implements
         return sqlType == Types.VARBINARY || sqlType == Types.BINARY || 
sqlType == Types.LONGVARBINARY;
     }
 
-    private void obtainFlagsFromResultSetMeta(ResultSetMetaData met) throws 
SQLException {
+    private void obtainFlagsFromResultSetMeta(ResultSetMetaData met, 
TableMetaData tmd) throws SQLException {
         for (int i = 1; i <= met.getColumnCount(); i++) {
             String lcName = met.getColumnName(i).toLowerCase(Locale.ENGLISH);
             if ("id".equals(lcName)) {
-                this.isIdBinary = isBinaryType(met.getColumnType(i));
+                tmd.setIdIsBinary(isBinaryType(met.getColumnType(i)));
             }
             if ("data".equals(lcName)) {
-                this.dataLimitInOctets = met.getPrecision(i);
+                tmd.setDataLimitInOctets(met.getPrecision(i));
             }
         }
     }
@@ -716,19 +755,20 @@ public class RDBDocumentStore implements
             // well it was best-effort
             return "";
         } finally {
-            this.ch.closeResultSet(rs);
+            closeResultSet(rs);
         }
     }
 
-    private void createTableFor(Connection con, Collection<? extends Document> 
col, List<String> tablesCreated,
+    private void createTableFor(Connection con, Collection<? extends Document> 
col, TableMetaData tmd, List<String> tablesCreated,
             List<String> tablesPresent, StringBuilder diagnostics) throws 
SQLException {
         String dbname = this.db.toString();
         if (con.getMetaData().getURL() != null) {
             dbname += " (" + con.getMetaData().getURL() + ")";
         }
-        String tableName = getTable(col);
+        String tableName = tmd.getName();
+
+        PreparedStatement checkStatement = null, checkStatement2 = null;
 
-        PreparedStatement checkStatement = null;
         ResultSet checkResultSet = null;
         Statement creatStatement = null;
         try {
@@ -736,10 +776,11 @@ public class RDBDocumentStore implements
             checkStatement.setString(1, "0:/");
             checkResultSet = checkStatement.executeQuery();
 
-            if (col.equals(Collection.NODES)) {
-                // try to discover size of DATA column
-                ResultSetMetaData met = checkResultSet.getMetaData();
-                obtainFlagsFromResultSetMeta(met);
+            // try to discover size of DATA column and binary-ness of ID
+            ResultSetMetaData met = checkResultSet.getMetaData();
+            obtainFlagsFromResultSetMeta(met, tmd);
+
+            if (col == Collection.NODES) {
                 String tableInfo = RDBJDBCTools.dumpResultSetMeta(met);
                 diagnostics.append(tableInfo);
                 String indexInfo = dumpIndexData(con.getMetaData(), met, 
tableName);
@@ -767,12 +808,14 @@ public class RDBDocumentStore implements
 
                 tablesCreated.add(tableName);
 
-                if (col.equals(Collection.NODES)) {
-                    PreparedStatement pstmt = con.prepareStatement("select * 
from " + tableName + " where ID = ?");
-                    pstmt.setString(1, "0:/");
-                    ResultSet rs = pstmt.executeQuery();
-                    ResultSetMetaData met = rs.getMetaData();
-                    obtainFlagsFromResultSetMeta(met);
+                checkStatement2 = con.prepareStatement("select * from " + 
tableName + " where ID = ?");
+                checkStatement2.setString(1, "0:/");
+                ResultSet rs = checkStatement2.executeQuery();
+                // try to discover size of DATA column and binary-ness of ID
+                ResultSetMetaData met = rs.getMetaData();
+                obtainFlagsFromResultSetMeta(met, tmd);
+
+                if (col == Collection.NODES) {
                     String tableInfo = RDBJDBCTools.dumpResultSetMeta(met);
                     diagnostics.append(tableInfo);
                     String indexInfo = dumpIndexData(con.getMetaData(), met, 
tableName);
@@ -787,9 +830,10 @@ public class RDBDocumentStore implements
             }
         }
         finally {
-            this.ch.closeResultSet(checkResultSet);
-            this.ch.closeStatement(checkStatement);
-            this.ch.closeStatement(creatStatement);
+            closeResultSet(checkResultSet);
+            closeStatement(checkStatement);
+            closeStatement(checkStatement2);
+            closeStatement(creatStatement);
         }
     }
 
@@ -1044,12 +1088,11 @@ public class RDBDocumentStore implements
                 }
 
                 Connection connection = null;
-                String tableName = getTable(collection);
+                TableMetaData tmd = getTable(collection);
                 boolean success = false;
                 try {
                     connection = this.ch.getRWConnection();
-                    success = dbBatchedAppendingUpdate(connection, tableName, 
chunkedIds, modified, modifiedIsConditional,
-                            appendData);
+                    success = dbBatchedAppendingUpdate(connection, tmd, 
chunkedIds, modified, modifiedIsConditional, appendData);
                     connection.commit();
                 } catch (SQLException ex) {
                     success = false;
@@ -1165,7 +1208,7 @@ public class RDBDocumentStore implements
     private <T extends Document> List<T> internalQuery(Collection<T> 
collection, String fromKey, String toKey,
             String indexedProperty, long startValue, int limit) {
         Connection connection = null;
-        String tableName = getTable(collection);
+        TableMetaData tmd = getTable(collection);
         if (indexedProperty != null && 
(!INDEXEDPROPERTIES.contains(indexedProperty))) {
             String message = "indexed property " + indexedProperty + " not 
supported, query was '>= '" + startValue
                     + "'; supported properties are " + INDEXEDPROPERTIES;
@@ -1177,7 +1220,9 @@ public class RDBDocumentStore implements
             QueryContext qp = new QueryContext(fromKey, toKey);
             qmap.put(Thread.currentThread(), qp);
             connection = this.ch.getROConnection();
-            List<RDBRow> dbresult = dbQuery(connection, tableName, fromKey, 
toKey, indexedProperty, startValue, limit);
+            String from = collection == Collection.NODES && 
NodeDocument.MIN_ID_VALUE.equals(fromKey) ? null : fromKey;
+            String to = collection == Collection.NODES && 
NodeDocument.MAX_ID_VALUE.equals(toKey) ? null : toKey;
+            List<RDBRow> dbresult = dbQuery(connection, tmd, from, to, 
indexedProperty, startValue, limit);
             connection.commit();
 
             int size = dbresult.size();
@@ -1198,15 +1243,11 @@ public class RDBDocumentStore implements
         }
     }
 
-    private <T extends Document> String getTable(Collection<T> collection) {
-        if (collection == Collection.CLUSTER_NODES) {
-            return this.tnClusterNodes;
-        } else if (collection == Collection.NODES) {
-            return this.tnNodes;
-        } else if (collection == Collection.SETTINGS) {
-            return this.tnSettings;
-        } else if (collection == Collection.JOURNAL) {
-            return this.tnJournal;
+    @Nonnull
+    private <T extends Document> TableMetaData getTable(Collection<T> 
collection) {
+        TableMetaData tmd = this.tableMeta.get(collection);
+        if (tmd != null) {
+            return tmd;
         } else {
             throw new IllegalArgumentException("Unknown collection: " + 
collection.toString());
         }
@@ -1215,14 +1256,14 @@ public class RDBDocumentStore implements
     @CheckForNull
     private <T extends Document> T readDocumentUncached(Collection<T> 
collection, String id, NodeDocument cachedDoc) {
         Connection connection = null;
-        String tableName = getTable(collection);
+        TableMetaData tmd = getTable(collection);
         try {
             long lastmodcount = -1;
             if (cachedDoc != null) {
                 lastmodcount = modcountOf(cachedDoc);
             }
             connection = this.ch.getROConnection();
-            RDBRow row = dbRead(connection, tableName, id, lastmodcount);
+            RDBRow row = dbRead(connection, tmd, id, lastmodcount);
             connection.commit();
             if (row == null) {
                 return null;
@@ -1244,10 +1285,10 @@ public class RDBDocumentStore implements
 
     private <T extends Document> void delete(Collection<T> collection, String 
id) {
         Connection connection = null;
-        String tableName = getTable(collection);
+        TableMetaData tmd = getTable(collection);
         try {
             connection = this.ch.getRWConnection();
-            dbDelete(connection, tableName, Collections.singletonList(id));
+            dbDelete(connection, tmd, Collections.singletonList(id));
             connection.commit();
         } catch (Exception ex) {
             throw new DocumentStoreException(ex);
@@ -1258,12 +1299,12 @@ public class RDBDocumentStore implements
 
     private <T extends Document> int delete(Collection<T> collection, 
List<String> ids) {
         int numDeleted = 0;
+        TableMetaData tmd = getTable(collection);
         for (List<String> sublist : Lists.partition(ids, 64)) {
             Connection connection = null;
-            String tableName = getTable(collection);
             try {
                 connection = this.ch.getRWConnection();
-                numDeleted += dbDelete(connection, tableName, sublist);
+                numDeleted += dbDelete(connection, tmd, sublist);
                 connection.commit();
             } catch (Exception ex) {
                 throw new DocumentStoreException(ex);
@@ -1277,7 +1318,7 @@ public class RDBDocumentStore implements
     private <T extends Document> int delete(Collection<T> collection,
                                             Map<String, Map<Key, Condition>> 
toRemove) {
         int numDeleted = 0;
-        String tableName = getTable(collection);
+        TableMetaData tmd = getTable(collection);
         Map<String, Map<Key, Condition>> subMap = Maps.newHashMap();
         Iterator<Entry<String, Map<Key, Condition>>> it = 
toRemove.entrySet().iterator();
         while (it.hasNext()) {
@@ -1287,7 +1328,7 @@ public class RDBDocumentStore implements
                 Connection connection = null;
                 try {
                     connection = this.ch.getRWConnection();
-                    numDeleted += dbDelete(connection, tableName, subMap);
+                    numDeleted += dbDelete(connection, tmd, subMap);
                     connection.commit();
                 } catch (Exception ex) {
                     throw DocumentStoreException.convert(ex);
@@ -1303,7 +1344,7 @@ public class RDBDocumentStore implements
     private <T extends Document> boolean updateDocument(@Nonnull Collection<T> 
collection, @Nonnull T document,
             @Nonnull UpdateOp update, Long oldmodcount) {
         Connection connection = null;
-        String tableName = getTable(collection);
+        TableMetaData tmd = getTable(collection);
         String data = null;
         try {
             connection = this.ch.getRWConnection();
@@ -1321,9 +1362,9 @@ public class RDBDocumentStore implements
             // every 16th update is a full rewrite
             if (isAppendableUpdate(update) && modcount % 16 != 0) {
                 String appendData = SR.asString(update);
-                if (appendData.length() < this.dataLimitInOctets / 
CHAR2OCTETRATIO) {
+                if (appendData.length() < tmd.getDataLimitInOctets() / 
CHAR2OCTETRATIO) {
                     try {
-                        success = dbAppendingUpdate(connection, tableName, 
document.getId(), modified, modifiedIsConditional, hasBinary, deletedOnce,
+                        success = dbAppendingUpdate(connection, tmd, 
document.getId(), modified, modifiedIsConditional, hasBinary, deletedOnce,
                                 modcount, cmodcount, oldmodcount, appendData);
                         connection.commit();
                     } catch (SQLException ex) {
@@ -1335,7 +1376,7 @@ public class RDBDocumentStore implements
             }
             if (!success) {
                 data = SR.asString(document);
-                success = dbUpdate(connection, tableName, document.getId(), 
modified, hasBinary, deletedOnce, modcount, cmodcount,
+                success = dbUpdate(connection, tmd, document.getId(), 
modified, hasBinary, deletedOnce, modcount, cmodcount,
                         oldmodcount, data);
                 connection.commit();
             }
@@ -1346,7 +1387,7 @@ public class RDBDocumentStore implements
             if (RDBJDBCTools.matchesSQLState(ex, "22", "72")) {
                 byte[] bytes = asBytes(data);
                 addDiags = String.format(" (DATA size in Java characters: %d, 
in octets: %d, computed character limit: %d)",
-                        data.length(), bytes.length, this.dataLimitInOctets / 
CHAR2OCTETRATIO);
+                        data.length(), bytes.length, 
tmd.getDataLimitInOctets() / CHAR2OCTETRATIO);
             }
             String message = String.format("Update for %s failed%s", 
document.getId(), addDiags);
             LOG.debug(message, ex);
@@ -1387,10 +1428,10 @@ public class RDBDocumentStore implements
 
     private <T extends Document> boolean insertDocuments(Collection<T> 
collection, List<T> documents) {
         Connection connection = null;
-        String tableName = getTable(collection);
+        TableMetaData tmd = getTable(collection);
         try {
             connection = this.ch.getRWConnection();
-            boolean result = dbInsert(connection, tableName, documents);
+            boolean result = dbInsert(connection, tmd, documents);
             connection.commit();
             return result;
         } catch (SQLException ex) {
@@ -1429,7 +1470,7 @@ public class RDBDocumentStore implements
 
                 String m = String
                         .format(" (potential cause: long data for ID %s - 
longest octet DATA size in Java characters: %d, in octets: %d, computed 
character limit: %d)",
-                                id, longest, longestChars, 
this.dataLimitInOctets / CHAR2OCTETRATIO);
+                                id, longest, longestChars, 
tmd.getDataLimitInOctets() / CHAR2OCTETRATIO);
                 messages += m;
             }
 
@@ -1488,8 +1529,8 @@ public class RDBDocumentStore implements
         }
     }
 
-    private void setIdInStatement(PreparedStatement stmt, int idx, String id) 
throws SQLException {
-        if (this.isIdBinary) {
+    private static void setIdInStatement(TableMetaData tmd, PreparedStatement 
stmt, int idx, String id) throws SQLException {
+        if (tmd.isIdBinary()) {
             try {
                 stmt.setBytes(idx, id.getBytes("UTF-8"));
             } catch (UnsupportedEncodingException ex) {
@@ -1501,8 +1542,8 @@ public class RDBDocumentStore implements
         }
     }
 
-    private String getIdFromRS(ResultSet rs, int idx) throws SQLException {
-        if (this.isIdBinary) {
+    private static String getIdFromRS(TableMetaData tmd, ResultSet rs, int 
idx) throws SQLException {
+        if (tmd.isIdBinary()) {
             try {
                 return new String(rs.getBytes(idx), "UTF-8");
             } catch (UnsupportedEncodingException ex) {
@@ -1515,7 +1556,7 @@ public class RDBDocumentStore implements
     }
 
     @CheckForNull
-    private RDBRow dbRead(Connection connection, String tableName, String id, 
long lastmodcount) throws SQLException {
+    private RDBRow dbRead(Connection connection, TableMetaData tmd, String id, 
long lastmodcount) throws SQLException {
         PreparedStatement stmt;
 
         boolean useCaseStatement = lastmodcount != -1 && 
this.db.allowsCaseInSelect();
@@ -1524,12 +1565,12 @@ public class RDBDocumentStore implements
             // sent in case we already have it
             stmt = connection
                     .prepareStatement("select MODIFIED, MODCOUNT, CMODCOUNT, 
HASBINARY, DELETEDONCE, case MODCOUNT when ? then null else DATA end as DATA, "
-                            + "case MODCOUNT when ? then null else BDATA end 
as BDATA from " + tableName + " where ID = ?");
+                            + "case MODCOUNT when ? then null else BDATA end 
as BDATA from " + tmd.getName() + " where ID = ?");
         } else {
             // either we don't have a previous version of the document
             // or the database does not support CASE in SELECT
             stmt = connection.prepareStatement("select MODIFIED, MODCOUNT, 
CMODCOUNT, HASBINARY, DELETEDONCE, DATA, BDATA from "
-                    + tableName + " where ID = ?");
+                    + tmd.getName() + " where ID = ?");
         }
 
         try {
@@ -1538,7 +1579,7 @@ public class RDBDocumentStore implements
                 stmt.setLong(si++, lastmodcount);
                 stmt.setLong(si++, lastmodcount);
             }
-            setIdInStatement(stmt, si, id);
+            setIdInStatement(tmd, stmt, si, id);
 
             ResultSet rs = stmt.executeQuery();
             if (rs.next()) {
@@ -1568,25 +1609,23 @@ public class RDBDocumentStore implements
         }
     }
 
-    private List<RDBRow> dbQuery(Connection connection, String tableName, 
String minId, String maxId, String indexedProperty,
+    private List<RDBRow> dbQuery(Connection connection, TableMetaData tmd, 
String minId, String maxId, String indexedProperty,
             long startValue, int limit) throws SQLException {
-        boolean noLowerBound = tableName.equals(this.tnNodes) && 
minId.equals(NodeDocument.MIN_ID_VALUE);
-        boolean noUpperBound = tableName.equals(this.tnNodes) && 
maxId.equals(NodeDocument.MAX_ID_VALUE);
         long start = System.currentTimeMillis();
         StringBuilder selectClause = new StringBuilder();
         StringBuilder whereClause = new StringBuilder();
         if (limit != Integer.MAX_VALUE && this.db.getFetchFirstSyntax() == 
FETCHFIRSTSYNTAX.TOP) {
             selectClause.append("TOP " + limit +  " ");
         }
-        selectClause.append("ID, MODIFIED, MODCOUNT, CMODCOUNT, HASBINARY, 
DELETEDONCE, DATA, BDATA from ").append(tableName);
+        selectClause.append("ID, MODIFIED, MODCOUNT, CMODCOUNT, HASBINARY, 
DELETEDONCE, DATA, BDATA from ").append(tmd.getName());
 
         // dynamically build where clause
         String whereSep = "";
-        if (!noLowerBound) {
+        if (minId != null) {
             whereClause.append("ID > ?");
             whereSep = " and ";
         }
-        if (!noUpperBound) {
+        if (maxId != null) {
             whereClause.append(whereSep).append("ID < ?");
             whereSep = " and ";
         }
@@ -1635,11 +1674,11 @@ public class RDBDocumentStore implements
         long dataTotal = 0, bdataTotal = 0;
         try {
             int si = 1;
-            if (!noLowerBound) {
-                setIdInStatement(stmt, si++, minId);
+            if (minId != null) {
+                setIdInStatement(tmd, stmt, si++, minId);
             }
-            if (!noUpperBound) {
-                setIdInStatement(stmt, si++, maxId);
+            if (maxId != null) {
+                setIdInStatement(tmd, stmt, si++, maxId);
             }
 
             if (MODIFIED.equals(indexedProperty)) {
@@ -1650,11 +1689,11 @@ public class RDBDocumentStore implements
             }
             ResultSet rs = stmt.executeQuery();
             while (rs.next() && result.size() < limit) {
-                String id = getIdFromRS(rs, 1);
+                String id = getIdFromRS(tmd, rs, 1);
 
-                if (id.compareTo(minId) < 0 || id.compareTo(maxId) > 0) {
-                    throw new DocumentStoreException("unexpected query result: 
'" + minId + "' < '" + id + "' < '" + maxId
-                            + "' - broken DB collation?");
+                if ((minId != null && id.compareTo(minId) < 0) || (maxId != 
null && id.compareTo(maxId) > 0)) {
+                    throw new DocumentStoreException(
+                            "unexpected query result: '" + minId + "' < '" + 
id + "' < '" + maxId + "' - broken DB collation?");
                 }
                 long modified = rs.getLong(2);
                 long modcount = rs.getLong(3);
@@ -1686,10 +1725,10 @@ public class RDBDocumentStore implements
         return result;
     }
 
-    private boolean dbUpdate(Connection connection, String tableName, String 
id, Long modified, Boolean hasBinary,
+    private boolean dbUpdate(Connection connection, TableMetaData tmd, String 
id, Long modified, Boolean hasBinary,
             Boolean deletedOnce, Long modcount, Long cmodcount, Long 
oldmodcount, String data) throws SQLException {
         String t = "update "
-                + tableName
+                + tmd.getName()
                 + " set MODIFIED = ?, HASBINARY = ?, DELETEDONCE = ?, MODCOUNT 
= ?, CMODCOUNT = ?, DSIZE = ?, DATA = ?, BDATA = ? where ID = ?";
         if (oldmodcount != null) {
             t += " and MODCOUNT = ?";
@@ -1704,7 +1743,7 @@ public class RDBDocumentStore implements
             stmt.setObject(si++, cmodcount == null ? Long.valueOf(0) : 
cmodcount, Types.BIGINT);
             stmt.setObject(si++, data.length(), Types.BIGINT);
 
-            if (data.length() < this.dataLimitInOctets / CHAR2OCTETRATIO) {
+            if (data.length() < tmd.getDataLimitInOctets() / CHAR2OCTETRATIO) {
                 stmt.setString(si++, data);
                 stmt.setBinaryStream(si++, null, 0);
             } else {
@@ -1713,14 +1752,14 @@ public class RDBDocumentStore implements
                 stmt.setBytes(si++, bytes);
             }
 
-            setIdInStatement(stmt, si++, id);
+            setIdInStatement(tmd, stmt, si++, id);
 
             if (oldmodcount != null) {
                 stmt.setObject(si++, oldmodcount, Types.BIGINT);
             }
             int result = stmt.executeUpdate();
             if (result != 1) {
-                LOG.debug("DB update failed for " + tableName + "/" + id + " 
with oldmodcount=" + oldmodcount);
+                LOG.debug("DB update failed for " + tmd.getName() + "/" + id + 
" with oldmodcount=" + oldmodcount);
             }
             return result == 1;
         } finally {
@@ -1728,14 +1767,14 @@ public class RDBDocumentStore implements
         }
     }
 
-    private boolean dbAppendingUpdate(Connection connection, String tableName, 
String id, Long modified,
+    private boolean dbAppendingUpdate(Connection connection, TableMetaData 
tmd, String id, Long modified,
             boolean setModifiedConditionally, Boolean hasBinary, Boolean 
deletedOnce, Long modcount, Long cmodcount,
             Long oldmodcount, String appendData) throws SQLException {
         StringBuilder t = new StringBuilder();
-        t.append("update " + tableName + " set ");
+        t.append("update " + tmd.getName() + " set ");
         t.append(setModifiedConditionally ? "MODIFIED = case when ? > MODIFIED 
then ? else MODIFIED end, " : "MODIFIED = ?, ");
         t.append("HASBINARY = ?, DELETEDONCE = ?, MODCOUNT = ?, CMODCOUNT = ?, 
DSIZE = DSIZE + ?, ");
-        t.append("DATA = " + 
this.db.getConcatQueryString(this.dataLimitInOctets, appendData.length()) + " 
");
+        t.append("DATA = " + 
this.db.getConcatQueryString(tmd.getDataLimitInOctets(), appendData.length()) + 
" ");
         t.append("where ID = ?");
         if (oldmodcount != null) {
             t.append(" and MODCOUNT = ?");
@@ -1753,14 +1792,14 @@ public class RDBDocumentStore implements
             stmt.setObject(si++, cmodcount == null ? Long.valueOf(0) : 
cmodcount, Types.BIGINT);
             stmt.setObject(si++, 1 + appendData.length(), Types.BIGINT);
             stmt.setString(si++, "," + appendData);
-            setIdInStatement(stmt, si++, id);
+            setIdInStatement(tmd, stmt, si++, id);
 
             if (oldmodcount != null) {
                 stmt.setObject(si++, oldmodcount, Types.BIGINT);
             }
             int result = stmt.executeUpdate();
             if (result != 1) {
-                LOG.debug("DB append update failed for " + tableName + "/" + 
id + " with oldmodcount=" + oldmodcount);
+                LOG.debug("DB append update failed for " + tmd.getName() + "/" 
+ id + " with oldmodcount=" + oldmodcount);
             }
             return result == 1;
         } finally {
@@ -1768,14 +1807,14 @@ public class RDBDocumentStore implements
         }
     }
 
-    private boolean dbBatchedAppendingUpdate(Connection connection, String 
tableName, List<String> ids, Long modified,
+    private boolean dbBatchedAppendingUpdate(Connection connection, 
TableMetaData tmd, List<String> ids, Long modified,
             boolean setModifiedConditionally,
             String appendData) throws SQLException {
         StringBuilder t = new StringBuilder();
-        t.append("update " + tableName + " set ");
+        t.append("update " + tmd.getName() + " set ");
         t.append(setModifiedConditionally ? "MODIFIED = case when ? > MODIFIED 
then ? else MODIFIED end, " : "MODIFIED = ?, ");
         t.append("MODCOUNT = MODCOUNT + 1, DSIZE = DSIZE + ?, ");
-        t.append("DATA = " + 
this.db.getConcatQueryString(this.dataLimitInOctets, appendData.length()) + " 
");
+        t.append("DATA = " + 
this.db.getConcatQueryString(tmd.getDataLimitInOctets(), appendData.length()) + 
" ");
         t.append("where ID in (");
         for (int i = 0; i < ids.size(); i++) {
             if (i != 0) {
@@ -1794,11 +1833,11 @@ public class RDBDocumentStore implements
             stmt.setObject(si++, 1 + appendData.length(), Types.BIGINT);
             stmt.setString(si++, "," + appendData);
             for (String id : ids) {
-                setIdInStatement(stmt, si++, id);
+                setIdInStatement(tmd, stmt, si++, id);
             }
             int result = stmt.executeUpdate();
             if (result != ids.size()) {
-                LOG.debug("DB update failed: only " + result + " of " + 
ids.size() + " updated. Table: " + tableName + ", IDs:"
+                LOG.debug("DB update failed: only " + result + " of " + 
ids.size() + " updated. Table: " + tmd.getName() + ", IDs:"
                         + ids);
             }
             return result == ids.size();
@@ -1807,9 +1846,9 @@ public class RDBDocumentStore implements
         }
     }
 
-    private <T extends Document> boolean dbInsert(Connection connection, 
String tableName, List<T> documents) throws SQLException {
+    private <T extends Document> boolean dbInsert(Connection connection, 
TableMetaData tmd, List<T> documents) throws SQLException {
 
-        PreparedStatement stmt = connection.prepareStatement("insert into " + 
tableName +
+        PreparedStatement stmt = connection.prepareStatement("insert into " + 
tmd.getName() +
                 "(ID, MODIFIED, HASBINARY, DELETEDONCE, MODCOUNT, CMODCOUNT, 
DSIZE, DATA, BDATA) " +
                 "values (?, ?, ?, ?, ?, ?, ?, ?, ?)");
 
@@ -1822,14 +1861,14 @@ public class RDBDocumentStore implements
                 Long cmodcount = (Long) document.get(COLLISIONSMODCOUNT);
 
                 int si = 1;
-                setIdInStatement(stmt, si++, id);
+                setIdInStatement(tmd, stmt, si++, id);
                 stmt.setObject(si++, document.get(MODIFIED), Types.BIGINT);
                 stmt.setObject(si++, (hasBinary != null && 
hasBinary.intValue() == NodeDocument.HAS_BINARY_VAL) ? 1 : 0, Types.SMALLINT);
                 stmt.setObject(si++, (deletedOnce != null && deletedOnce) ? 1 
: 0, Types.SMALLINT);
                 stmt.setObject(si++, document.get(MODCOUNT), Types.BIGINT);
                 stmt.setObject(si++, cmodcount == null ? Long.valueOf(0) : 
cmodcount, Types.BIGINT);
                 stmt.setObject(si++, data.length(), Types.BIGINT);
-                if (data.length() < this.dataLimitInOctets / CHAR2OCTETRATIO) {
+                if (data.length() < tmd.getDataLimitInOctets() / 
CHAR2OCTETRATIO) {
                     stmt.setString(si++, data);
                     stmt.setBinaryStream(si++, null, 0);
                 } else {
@@ -1844,7 +1883,7 @@ public class RDBDocumentStore implements
             for (int i = 0; i < documents.size(); i++) {
                 int result = results[i];
                 if (result != 1 && result != Statement.SUCCESS_NO_INFO) {
-                    LOG.error("DB insert failed for {}: {}", tableName, 
documents.get(i).getId());
+                    LOG.error("DB insert failed for {}: {}", tmd.getName(), 
documents.get(i).getId());
                     success = false;
                 }
             }
@@ -1854,13 +1893,13 @@ public class RDBDocumentStore implements
         }
     }
 
-    private int dbDelete(Connection connection, String tableName, List<String> 
ids) throws SQLException {
+    private int dbDelete(Connection connection, TableMetaData tmd, 
List<String> ids) throws SQLException {
 
         PreparedStatement stmt;
         int cnt = ids.size();
 
         if (cnt == 1) {
-            stmt = connection.prepareStatement("delete from " + tableName + " 
where ID=?");
+            stmt = connection.prepareStatement("delete from " + tmd.getName() 
+ " where ID=?");
         } else {
             StringBuilder inClause = new StringBuilder();
             for (int i = 0; i < cnt; i++) {
@@ -1869,16 +1908,16 @@ public class RDBDocumentStore implements
                     inClause.append(',');
                 }
             }
-            stmt = connection.prepareStatement("delete from " + tableName + " 
where ID in (" + inClause.toString() + ")");
+            stmt = connection.prepareStatement("delete from " + tmd.getName() 
+ " where ID in (" + inClause.toString() + ")");
         }
 
         try {
             for (int i = 0; i < cnt; i++) {
-                setIdInStatement(stmt, i + 1, ids.get(i));
+                setIdInStatement(tmd, stmt, i + 1, ids.get(i));
             }
             int result = stmt.executeUpdate();
             if (result != cnt) {
-                LOG.debug("DB delete failed for " + tableName + "/" + ids);
+                LOG.debug("DB delete failed for " + tmd.getName() + "/" + ids);
             }
             return result;
         } finally {
@@ -1886,7 +1925,7 @@ public class RDBDocumentStore implements
         }
     }
 
-    private int dbDelete(Connection connection, String tableName,
+    private int dbDelete(Connection connection, TableMetaData tmd,
                          Map<String, Map<Key, Condition>> toDelete)
             throws SQLException, DocumentStoreException {
         String or = "";
@@ -1914,11 +1953,11 @@ public class RDBDocumentStore implements
         }
 
         PreparedStatement stmt= connection.prepareStatement(
-                "delete from " + tableName + " where " + whereClause);
+                "delete from " + tmd.getName() + " where " + whereClause);
         try {
             int i = 1;
             for (Entry<String, Map<Key, Condition>> entry : 
toDelete.entrySet()) {
-                setIdInStatement(stmt, i++, entry.getKey());
+                setIdInStatement(tmd, stmt, i++, entry.getKey());
                 for (Entry<Key, Condition> c : entry.getValue().entrySet()) {
                     if (c.getValue().type == Condition.Type.EQUALS) {
                         stmt.setLong(i++, (Long) c.getValue().value);

Modified: 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java?rev=1714196&r1=1714195&r2=1714196&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
 (original)
+++ 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
 Fri Nov 13 12:21:26 2015
@@ -16,6 +16,9 @@
  */
 package org.apache.jackrabbit.oak.plugins.document.rdb;
 
+import static 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeResultSet;
+import static 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeStatement;
+
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.PreparedStatement;
@@ -96,8 +99,8 @@ public enum RDBDocumentStoreDB {
             } catch (SQLException ex) {
                 LOG.debug("while getting diagnostics", ex);
             } finally {
-                ch.closeResultSet(rs);
-                ch.closeStatement(stmt);
+                closeResultSet(rs);
+                closeStatement(stmt);
                 ch.closeConnection(con);
             }
             return result.toString();
@@ -162,8 +165,8 @@ public enum RDBDocumentStoreDB {
             } catch (SQLException ex) {
                 LOG.debug("while getting diagnostics", ex);
             } finally {
-                ch.closeResultSet(rs);
-                ch.closeStatement(stmt);
+                closeResultSet(rs);
+                closeStatement(stmt);
                 ch.closeConnection(con);
             }
             return result.toString();
@@ -208,8 +211,8 @@ public enum RDBDocumentStoreDB {
             } catch (SQLException ex) {
                 LOG.debug("while getting diagnostics", ex);
             } finally {
-                ch.closeResultSet(rs);
-                ch.closeStatement(stmt);
+                closeResultSet(rs);
+                closeStatement(stmt);
                 ch.closeConnection(con);
             }
             return result.toString();
@@ -264,8 +267,8 @@ public enum RDBDocumentStoreDB {
             } catch (SQLException ex) {
                 LOG.debug("while getting diagnostics", ex);
             } finally {
-                ch.closeResultSet(rs);
-                ch.closeStatement(stmt);
+                closeResultSet(rs);
+                closeStatement(stmt);
                 ch.closeConnection(con);
             }
             return result.toString();
@@ -325,8 +328,8 @@ public enum RDBDocumentStoreDB {
             } catch (SQLException ex) {
                 LOG.debug("while getting diagnostics", ex);
             } finally {
-                ch.closeResultSet(rs);
-                ch.closeStatement(stmt);
+                closeResultSet(rs);
+                closeStatement(stmt);
                 ch.closeConnection(con);
             }
             return result.toString();

Modified: 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java?rev=1714196&r1=1714195&r2=1714196&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java
 (original)
+++ 
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBJDBCTools.java
 Fri Nov 13 12:21:26 2015
@@ -18,8 +18,10 @@ package org.apache.jackrabbit.oak.plugin
 
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
+import java.sql.Statement;
 import java.sql.Types;
 import java.util.ArrayList;
 import java.util.List;
@@ -27,13 +29,18 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.TreeMap;
 
+import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
+import org.slf4j.LoggerFactory;
+
 /**
  * Convenience methods dealing with JDBC specifics.
  */
 public class RDBJDBCTools {
 
+    private static final org.slf4j.Logger LOG = 
LoggerFactory.getLogger(RDBJDBCTools.class);
+
     protected static String jdbctype(String jdbcurl) {
         if (jdbcurl == null) {
             return null;
@@ -202,4 +209,35 @@ public class RDBJDBCTools {
             return "";
         }
     }
+
+    /**
+     * Closes a {@link Statement}, logging potential problems.
+     * @return null
+     */
+    protected static <T extends Statement> T closeStatement(@CheckForNull T 
stmt) {
+        if (stmt != null) {
+            try {
+                stmt.close();
+            } catch (SQLException ex) {
+                LOG.debug("Closing statement", ex);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Closes a {@link ResultSet}, logging potential problems.
+     * @return null
+     */
+    protected static ResultSet closeResultSet(@CheckForNull ResultSet rs) {
+        if (rs != null) {
+            try {
+                rs.close();
+            } catch (SQLException ex) {
+                LOG.debug("Closing result set", ex);
+            }
+        }
+
+        return null;
+    }
 }

Modified: 
jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java?rev=1714196&r1=1714195&r2=1714196&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java
 (original)
+++ 
jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStoreFriend.java
 Fri Nov 13 12:21:26 2015
@@ -16,6 +16,8 @@
  */
 package org.apache.jackrabbit.oak.plugins.document.rdb;
 
+import static 
org.apache.jackrabbit.oak.plugins.document.rdb.RDBJDBCTools.closeStatement;
+
 import java.io.IOException;
 import java.sql.Connection;
 import java.sql.PreparedStatement;
@@ -40,10 +42,8 @@ public class RDBBlobStoreFriend {
             prepDelMeta = con.prepareStatement("delete from " + ds.tnMeta + " 
where ID = ?");
             prepDelMeta.setString(1, id);
             prepDelMeta.execute();
-            prepDelMeta.close();
-            prepDelMeta = null;
         } finally {
-            ds.ch.closeStatement(prepDelMeta);
+            closeStatement(prepDelMeta);
             con.commit();
             ds.ch.closeConnection(con);
         }


Reply via email to