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);
}