1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902
|
4.2.3 - 7 Mar 2025
Total issues resolved: 0
Total pull requests resolved: 7
Total contributors: 4
Foreign Keys,Schema Management,Test Suite
6825: Add an integration test for replacing a foreign key constraint thanks to @morozov
Primary Keys,Test Suite
6820: Convert some unit tests to integration tests thanks to @morozov
6819: Fix SchemaManagerFunctionalTestCase::testSwitchPrimaryKeyOrder() thanks to @morozov
Bug,Oracle
6816: Do not over increment identitiy sequence on Oracle thanks to @morozov
Bug,Error Handling,Transactions
6812: Convert driver exceptions when starting transactions thanks to @lcobucci
Documentation
6776: Fix link in docs thanks to @HypeMC
6700: [DOCS] Fix binary type format documentation thanks to @jaapio
4.2.2 - 16 Jan 2025
Total issues resolved: 1
Total pull requests resolved: 18
Total contributors: 12
Static Analysis
6697: Cleanup obsolete PHPStan ignore rules thanks to @derrabus
6574: Remove non thrown exception from phpdoc thanks to @Tofandel
Bug,PostgreSQL,Schema Comparison
6693: Enable platformOptions to be considered for ColumnDiff (PostgreSQL jsonb support) thanks to @DanielBadura
Test Suite
6692: PHPUnit 10.5.39 thanks to @derrabus
Documentation
6688: Remove documentation of legacy types thanks to @derrabus
Bug,Schema Management
6668: Fix creation of unnamed unique constraints thanks to @morozov
CI
6661: Create website schema validation workflow thanks to @SenseException
6632: Source IBM DB2 CLI driver from GitHub thanks to @morozov
6625: Rework continuous integration for v4 thanks to @greg0ire
Bug,Connecting,Connections,PDO,PHP
6623: Revert workaround for persistent PDO connections thanks to @derrabus
Bug,Quoting,SQL Server,Schema Management
6602: Fix renaming to quoted names on SQL Server thanks to @morozov
Bug,PostgreSQL,Quoting,Schema Management
6599: Fix dropping the PK on a PostgreSQL table with quoted name thanks to @morozov
Bug,Prepared Statements,oci8
6596: Use exception in OCI8 driver, instead of relying on assert thanks to @segrax
Connecting,Drivers,New Feature,Oracle
6593: Added support to override the protocol used when connecting to Oracle. thanks to @martinedge
Bug,Type Mapping
6579: Fix max string length resolution in AbstractPlatform::getEnumDeclaration() thanks to @davidxkurka
Bug,Cache
6552: Query Cache mangled if saved by-reference thanks to @Slamdunk
6546: Fix incorrect transactional() handling when DB auto-rolled back the transaction (v4) thanks to @simPod
Bug,Type Conversion
6410: Fix bigint PHP_INT_MIN/PHP_INT_MAX string to int convert thanks to @mvorisek
Changes from Lower Branches
This release contains all changes of the 3.9.4 release.
4.2.1 - 10 Oct 2024
Total issues resolved: 0
Total pull requests resolved: 0
Total contributors: 0
4.2.0 - 10 Oct 2024
Total issues resolved: 0
Total pull requests resolved: 6
Total contributors: 3
CI
6537: CI: remove duplicate key thanks to @derrabus
MariaDB,MySQL,New Feature,Schema Introspection,Schema Management,Types
6536: Implement an EnumType for MySQL/MariaDB thanks to @derrabus
Connecting,Connections,New Feature,PDO
6532: Leverage the new PDO subclasses thanks to @derrabus
New Feature,PostgreSQL,Schema Introspection
6516: Passive support for partitioned tables on Postgres thanks to @nikophil
Cache,Improvement,Results
6510: Invalidate old query cache format thanks to @derrabus
Cache,New Feature,Results
6504: Handle cached result column names and rows separately thanks to @morozov
4.1.1 - 3 Sep 2024
Total issues resolved: 0
Total pull requests resolved: 6
Total contributors: 2
Bug,Connecting,Drivers,PDO
6513: PDO: Raise a proper exception if user or password is false thanks to @derrabus
Bug,Results
6505: Raise a proper exception when calling getColumnName() with negative index thanks to @derrabus
Test Suite
6503: Remove beStrictAboutTodoAnnotatedTests from PHPUnit configuration thanks to @morozov
6499: PHPUnit 10.5.30 thanks to @derrabus
6497: Remove obsolete PHP version check thanks to @derrabus
Static Analysis
6500: Psalm 5.25.0 thanks to @derrabus
Changes from Lower Branches
This release contains all changes of the 3.9.1 release.
4.1.0 - 15 Aug 2024
Total issues resolved: 0
Total pull requests resolved: 13
Total contributors: 8
Deprecation,Platforms,PostgreSQL
6495: Deprecate support for Postgres 10 and 11 thanks to @derrabus
Bug,PostgreSQL,Schema Comparison
6490: Ensure PostgreSQL field length change is executed again thanks to @sbuerk
Deprecation,New Feature,Schema Management
6482: Add deprecation layer for TableDiff methods thanks to @derrabus
Test Suite
6481: Fix tests thanks to @derrabus
New Feature,Type Mapping,Types
6471: Add SmallFloat type thanks to @berkut1
Improvement,QueryBuilder
6439: Default to distinct union queries thanks to @derrabus
Deprecation,Drivers,New Feature,Results
6428: Add the Result::getColumnName method thanks to @stof
Improvement
6376: Remove internal flag on DriverException thanks to @gitomato
6326: Remove redundant variable thanks to @michalbundyra
New Feature,QueryBuilder
6369: Add QueryBuilder support for UNION clause thanks to @sbuerk
Deprecation,MariaDB,MySQL,Platforms
6343: Deprecate MariaDB 10.4 and MySQL 5.7 support thanks to @derrabus
Static Analysis
6301: Establish link between isConnected() and _conn thanks to @greg0ire
New Feature,Schema Management
6280: Add explicit renameColumn method thanks to @Tofandel
Changes from Lower Branches
This release contains all changes of the 3.9.0 release.
4.0.5 - Aug 7
Total issues resolved: 0
Total pull requests resolved: 5
Total contributors: 4
Test Suite
6477: PHPUnit 10.5.28 thanks to @derrabus
Documentation
6470: Fix update/delete aliases in documentation thanks to @PrinsFrank
6460: Docs: update custom platform example to use middlewares thanks to @janedbal
CI
6458: ci: nightly - php-8.1 only + workflow_dispatch thanks to @grooverdan
6457: ci: nightly - php-8.1 min version thanks to @grooverdan
This release includes changes from 3.8.7 as well
4.0.4 - 19 Jun 2024
Total issues resolved: 0
Total pull requests resolved: 2
Total contributors: 1
Test Suite
6454: PHPUnit 10.5.22 thanks to @derrabus
6447: PHPUnit 10.5.21 thanks to @derrabus
Changes from Lower Branches
This release contains all changes of the 3.8.6 release.
4.0.3 - 12 Jun 2024
Total issues resolved: 0
Total pull requests resolved: 6
Total contributors: 5
Test Suite
6431: Display warnings when running PHPUnit in CI thanks to @stof
6400: PHPUnit 10.5.20 thanks to @derrabus
Bugfix
6418: Fix foreign key name change detection thanks to @achterin
Static Analysis
6401: Psalm 5.24.0 thanks to @derrabus
Documentation
6394: Fix example for QB delete and update in doc block thanks to @Metabor
Code Style
6381: Fix SQLiteSchemaManagerTest case thanks to @mvorisek
Changes from 3.8.5 are included as well.
4.0.2 - 25 Apr 2024
Total issues resolved: 0
Total pull requests resolved: 4
Total contributors: 3
Documentation
6340: [Documentation] Fixing markup thanks to @ThomasLandauer
6339: Remove older versions from the docs thanks to @SenseException
6336: [Documentation] Adding "versionadded" thanks to @ThomasLandauer
6333: Update UPGRADE.md thanks to @kalifg
Changes from Lower Branches
This release contains all changes of the 3.8.4 release.
4.0.1 - 3 Mar 2024
Total issues resolved: 0
Total pull requests resolved: 7
Total contributors: 4
Documentation
6318: Remove Type::canRequireSQLConversion from docs thanks to @SchmidtClaudia
6298: Fix typo in UPGRADE.md thanks to @txptr
6293: Update branch metadata thanks to @derrabus
Test Suite
6312: Use native intersection types in test suite thanks to @derrabus
6311: Migrate PHPUnit test suite to attributes thanks to @derrabus
Documentation,PostgreSQL
6305: [Documentation] Adding exact command for Postgres serial migration thanks to @ThomasLandauer
Static Analysis
6294: Psalm 5.21.1 thanks to @derrabus
Changes from Lower Branches
This release contains all changes of the 3.8.3 release.
4.0.0 - 4 Feb 2024
This is a major release that includes breaking changes. Please refer to the upgrade guide for more details.
API Improvements and Cleanup
Strict scalar type declarations (#2854).
Scalar parameter and return value types (#3511, #3569 and others).
Disallow empty CompositeExpression #3868 and make it immutable #3858
Improved error handling in prepared statements:
Transaction-related Statement methods return void and throw an exception
Converted Connection and Statement methods which returned false in case of a failure into void
Improved behavior of Connection::getDatabase() (#3606)
Autoincrement via identity columns on PostgreSQL
Use native syntax for Top-N queries on Oracle (#5150) and IBM DB2 (#5156)
Handle lost connection during commit #4713
Reworked AbstractPlatform::get*Expression() methods #3498
Do not require a WHERE in update() and delete() Connection operations #5567
Improvements in exception hierarchy and semantics
Remove defaults for MySQL table charset, collation and engine
Convert ParameterType to enum
Convert enum-like classes to enums #5554
Improved Schema Diff API (no more public properties, almost immutable)
Major Backward Compatibility Breaks
Get rid of hard-coded default values of maximum field lengths (#3586).
Column precision no longer defaults to 10. Scale and precision must be explicitly specified for decomal columns (#3348).
Made the OFFSET in LIMIT queries non-nullable integer defaulting to 0
Connection::quote() can only quote strings. Note that using this method is discouraged. Use prepared statements instead.
Getting rid of the column name index #3583
Represent table columns as list in the order of declaration #4777
Drop support for SQL Server 2016 and older
Drop support for Postgres 9
Drop support for MySQL 5.6 and older and MariaDB 10.2.6 and older
Drop support for MariaDB 10.4.2 and older
Drop support for Oracle 12c and older
Remove AbstractPlatform::hasNative*Type() methods and Type::requiresSQLCommentHint()
Removed support for driver name aliases
Removed extension via Doctrine Event Manager
Major Bugfixes
Removed Connection::$_schemaManager() and ::getSchemaManager() (#4518)
Removed Connection::$_expr (#4516) and ::getExpressionBuilder() (#4540)
4.0.0-RC2 - 25 Jan 2024
Breaking Changes
Remove deprecated lock-related methods by @derrabus in #6219
Remove AbstractMySQLPlatform::getColumnTypeSQLSnippets() by @ausi in #6214
Remove API to disable column comments by @derrabus in #6222
Improvements
Move getJsonTypeDeclarationSQL() to AbstractMySQLPlatform by @derrabus in #6216
Relax return types of getExceptionConverter() implementations by @derrabus in #6221
Changes from Lower Branches
Enable establishing exclusive oci8 connections by @morozov in #6182
Add QueryBuilder::resetOrderBy() by @mbabker in #6190
Make the type annotation for CompositeExpression::count more specific by @oliverklee in #6188
Remove irrelevant details from the savepoint name by @morozov in #6197
MySQLSchemaManager: Check expected database type for json columns only by @cgknx in #6189
Fix MariaDB list columns performance by @ausi in #6202
Enable skipping locked rows in QueryBuilder by @morozov in #6191
Move schema part to the index by @greg0ire in #6226
Use different toctrees for different sections by @greg0ire in #6240
Switch to absolute paths by @greg0ire in #6241
Keep NVARCHAR(MAX) length as -1 by @kitloong in #6251
4.0.0-RC1 - 9 Oct 2023
Breaking Changes
Cast BIGINT values to int if possible by @cizordj and @derrabus in #6177
Improvements
PHPUnit 10.4.0 by @derrabus and @morozov in #6123
Changes from Lower Branches
[CI] Leverage built-in healthcheck for "db2" service by @phansys in #6159
Fix comparator type detection by @ausi in #6168
Correct Column->getDefault() annotation by @lolli42 in #6125
PHPStan 1.10.38 by @derrabus in #6178
4.0.0-beta3 - 27 Sep 2023
What's Changed
Use "numeric-string" return type for methods that return integers as strings by @phansys in #5905
Use closures in portability converter by @derrabus in #5936
Remove unused private platform methods by @derrabus in #5944
Remove the legacy execution and fetch API by @derrabus in #5956
More upgrade documentation for OraclePlatform::getSubstringExpression() by @morozov in #5978
Update Psalm to 5.12.0 by @morozov in #6061
SchemaDiff detecting errors in column definition when using custom type in 4.0.x by @janedbal in #5988
Update PHPUnit to 10 by @morozov in #6065
Psalm 5.13.1 by @derrabus in #6075
Restore reverse lookup determinism by @greg0ire in #6097
Drop support for MariaDB 10.2 and 10.3 by @derrabus in #6122
Psalm 5.14.1, PHPStorm Stubs 2023.2 by @derrabus in #6124
Remove composer-runtime-api dependency by @derrabus in #6155
Stricter DateTime types by @derrabus in #6161
Psalm 5.15.0 by @derrabus in #6167
4.0.0-beta2 - 8 Feb 2023
What's Changed
Update project metadata by @morozov in #5790
Revert "Clean up MySQL version detection logic" by @greg0ire in #5795
Fix typo in exception message by @derrabus in #5799
Run tests with MariaDB 10.9 by @derrabus in #5798
Remove unwanted suffix by @greg0ire in #5801
Bump dev tools by @derrabus in #5806
PHPStan 1.9.1 by @derrabus in #5807
Merge tests for fetch behavior of freed results by @derrabus in #5810
Document breaking changes about serverVersion by @greg0ire in #5797
Bump tools and workflows by @derrabus in #5828
Doctrine CS 11.0 by @derrabus in #5831
Document tuple return type of generateCacheKeys() by @derrabus in #5834
Update Branch metadata by @derrabus in #5840
Introduce a ArrayParameterType enum by @derrabus in #5838
Restore Connection::ARRAY_PARAM_OFFSET by @derrabus in #5842
Introduce a ArrayParameterType enum by @derrabus in #5839
Trigger a deprecation for versions that will be parsed differently by @derrabus in #5844
PHPStan 1.9.4 by @derrabus in #5845
Standalone DSN parser by @derrabus in #5843
Fix test cases for URL parsing by @derrabus in #5848
Remove database URLs from tests by @derrabus in #5852
Remove the url connection param by @derrabus in #5850
Allow to explicitly set the wrapper class to the default one by @derrabus in #5851
Use a narrower return type for DriverManager::getAvailableDrivers() by @MidnightDesign in #5853
Test the return type of DriverManager::getAvailableDrivers() by @MidnightDesign in #5854
Reuse the Params type alias for getConnection() by @derrabus in #5855
Use narrower return types for convertTo*Value methods by @MidnightDesign in #5856
Formally allow url in DriverManager::getConnection() by @someniatko in #5857
fix platform comparator issues when using compareTables by @dmaicher in #5861
Allow passing url to override params by @keulinho in #5862
PHPStan 1.9.11, PHPUnit 9.5.28, Doctrine CS 11.1 by @derrabus in #5864
Flag parameters as sensitive if they could contain the database password by @derrabus in #5866
PHPStan 1.9.14 by @derrabus in #5871
Add missing doc blocks to Index and UniqueConstraint by @derrabus in #5875
Use psalm-assert to get rid of assert() calls by @derrabus in #5877
Explain why the number of affected rows can be a string by @GromNaN in #5872
[Docs] Add IBM DB2 to configuration.rst by @phansys in #5881
Make sure only PDO parameter types are passed to PDO methods by @derrabus in #5883
Add the PgSQL driver by @derrabus in #5880
Introduce the SchemaManagerFactory interface by @derrabus in #5876
Optimize pgsql queries without parameters by @derrabus in #5889
Raise exception if pg_send_*() calls fail by @derrabus in #5888
Deallocate prepared statements in destructor by @derrabus in #5893
Make PDO transaction methods throw PDOException&DriverException by @maxm86545 in #5890
PHPUnit 9.6.0 by @derrabus in #5899
Close pgsql connection in destructor by @derrabus in #5892
Widen the return type of Result::rowCount() by @derrabus in #5879
Remove InvalidParameterType exception by @derrabus in #5896
Use TestLogger instead of mocks by @derrabus in #5903
Modernize pgsql driver for PHP 8.1 by @derrabus in #5904
PHPUnit 9.6.3 by @derrabus in #5907
Free pgsql results on destruct by @derrabus in #5908
Bump laminas/automatic-releases to 1.24.0 by @derrabus in #5910
Fix type assumptions about Connection::lastInsertId() by @phansys in #5909
Prepare release 3.6.0 by @derrabus in #5878
Run tests with MariaDB 10.10 by @derrabus in #5913
4.0.0-beta1 - 22 Oct 2022
Total issues resolved: 31
Total pull requests resolved: 198
Total contributors: 18
BC Break,QueryBuilder
5789: Remove QueryBuilder::getConnection() thanks to @morozov
BC Break,Connecting,Events,Schema Introspection,Schema Management,Transactions
5788: Remove extension via Doctrine Event Manager thanks to @morozov
Error Handling
5777: Remove irrelevant @throws annotations thanks to @morozov
BC Break,Schema Comparison
5775: Remove Comparator::diffTable() thanks to @morozov
5683: Remove TableDiff::$name and getName() thanks to @morozov
5677: Remove support for renaming tables via TableDiff thanks to @morozov
5676: Remove SchemaDiff::$fromSchema thanks to @morozov
5649: Remove property-based schema comparison APIs thanks to @morozov
5647: Remove ColumnDiff::$oldColumnName and ::getOldColumnName() thanks to @morozov
4786: Require the original column to be set on the column diff thanks to @morozov
BC Break,Schema Comparison,Schema Management
5774: Remove SchemaDiff::toSql() and SchemaDiff::toSaveSql() thanks to @morozov
5763: Remove handling orphaned foreign keys thanks to @morozov
BC Break,Schema Management
5769: Remove the APIs deprecated in DBAL 3.x thanks to @morozov
5464: Make AbstractSchemaManager::_getPortableTableForeignKeyDefinition() abstract thanks to @morozov
5456: Non-public API cleanup in AbstractSchemaManager thanks to @morozov
5441: Remove AbstractSchemaManager::getDatabasePlatform() thanks to @morozov
Improvement,Schema Comparison
5768: Rename parameters of the diff-related methods thanks to @morozov
Schema Comparison
5767: Declare internal properties of SchemaDiff as private thanks to @morozov
5753: Declare internal properties of TableDiff as private thanks to @morozov
5684: Mark ColumnDiff properties as private and read-only thanks to @morozov
5652: Make internal Comparator methods protected thanks to @morozov
BC Break,SQLite
5759: Remove user defined SQLite functions thanks to @derrabus
BC Break,Drivers,SQLite,pdo_sqlite
5744: Remove deprecated API to register custom SQLite functions thanks to @derrabus
BC Break,Error Handling,Improvement
5735: Convert Doctrine\DBAL\Schema\SchemaException to an interface thanks to @morozov
5726: Convert Doctrine\DBAL\Exception to an interface thanks to @morozov
3124: Split DBALException into smaller specific exceptions, consider dropping "Exception" suffixes thanks to @Majkl578
BC Break,Foreign Keys,Primary Keys,Schema Management
5733: Remove Table methods thanks to @morozov
BC Break,Error Handling,Schema Management
5730: Remove SchemaException error codes thanks to @morozov
Error Handling,Improvement
5727: Clarify semantics of logic exceptions thanks to @morozov
3536: Improve consistency of exception message formatting. thanks to @jwage
Error Handling,Schema Definition
5725: Improve ergonomics of invalid colum declaration exceptions thanks to @morozov
BC Break
5724: Removing deprecated isFullfilledBy() method thanks to @nexxai
5337: Remove the doctrine-dbal binary thanks to @derrabus
5255: Drop support for collate option thanks to @greg0ire
5067: Remove Platform API about commented types thanks to @greg0ire
BC Break,Configuration,Connections,PostgreSQL
5711: Remove PostgreSQL-specific connection parameters and behavior thanks to @morozov
SQLite,Schema Comparison,Schema Management
5710: Remove property-based false-positive diff workaround from SQLite schema manager thanks to @morozov
BC Break,Configuration,Connections,Platform Detection
5709: Remove platform detection fallback thanks to @morozov
BC Break,Configuration,Connections
5704: Remove driver name aliases thanks to @morozov
5703: Remove platform parameter of wrapper Connection thanks to @morozov
Error Handling,PHP,PostgreSQL
5696: Remove workaround for PHP bug in PostgreSQL exception handler thanks to @morozov
BC Break,Platforms,SQL Server
5679: Remove leftovers of renaming default contraints thanks to @morozov
Foreign Keys,MySQL,Schema Introspection
5675: Remove conditional comments for MySQL older than 5.1.16 thanks to @morozov
BC Break,Foreign Keys,MySQL,Schema Management
5664: Remove leftovers of handling foreign keys on non-InnoDB engines for MySQL thanks to @morozov
BC Break,Default Values,Improvement,SQL Server,Schema Management
5662: Introspect default constraint name thanks to @morozov
BC Break,Columns
5655: Remove support for "unique" and "check" column properties thanks to @morozov
BC Break,Schema Introspection
5648: Remove AbstractSchemaManager::createSchema() thanks to @morozov
5605: Remove AbstractSchemaManager::listTableDetails() thanks to @morozov
5289: Remove $database from AbstractSchemaManager::list*() methods thanks to @morozov
5280: Declare abstract AbstractSchemaManager methods as such thanks to @morozov
PostgreSQL,Schema Management
5641: Do not use ColumnDiff::$changedProperties in PostgreSQLPlatform::getAlterTableSQL() thanks to @morozov
SQL Server,Schema Management
5640: Do not use ColumnDiff::$changedProperties in SQLServerPlatform::getAlterTableSQL() thanks to @morozov
BC Break,Columns,Schema Definition
5631: Require precision and scale for decimal columns thanks to @morozov
Schema Management
5630: Rework AbstractSchemaManager::_execSql() thanks to @morozov
Schema Management,Test Suite
5629: Clean up test scenarios related to altering columns thanks to @morozov
Oracle,Schema Management
5623: Do not use ColumnDiff::$changedProperties in OraclePlatform::getAlterTableSQL() thanks to @morozov
5620: Remove code compensating for a schema comparison flaw thanks to @morozov
4598: [GH-4503] Make OracleSchemaManager::dropAutoincrement() protected thanks to @morozov
BC Break,Connection...
3.5.1 - 24 Oct 2022
Total issues resolved: 0
Total pull requests resolved: 1
Total contributors: 1
Bug,Regression
5795: Revert "Clean up MySQL version detection logic" thanks to @greg0ire
3.5.0 - 22 Oct 2022
Total issues resolved: 1
Total pull requests resolved: 40
Total contributors: 5
Connecting,Deprecation,Events,Transactions
5786: Deprecate extension via Doctrine Event Manager thanks to @morozov
Deprecation,Events,Schema Introspection,Schema Management
5785: Deprecate extension via certain types of events thanks to @morozov
Deprecation,Events
5784: Deprecate extension via Doctrine Event Manager thanks to @morozov
Deprecation,QueryBuilder
5780: Deprecate QueryBuilder::getConnection() thanks to @morozov
MariaDB,MySQL,Platform Detection
5779: Clean up MySQL version detection logic thanks to @morozov
Deprecation,Improvement,Schema Comparison
5770: Non-nullabe result of comparing tables thanks to @morozov
5642: Introduce property-specific ColumnDiff methods thanks to @morozov
Deprecation,Schema Comparison,Schema Management
5766: Deprecate SchemaDiff::toSql() and SchemaDiff::toSaveSql() thanks to @morozov
5761: Improve error message for index SQL creation thanks to @radar3301
Deprecation,Schema Comparison
5758: Mark SchemaDiff public properties internal thanks to @morozov
5717: Mark TableDiff public properties internal thanks to @morozov
5678: Deprecate not passing $fromColumn to TableDiff thanks to @morozov
5666: Deprecate SchemaDiff::$fromSchema thanks to @morozov
5663: Deprecate renaming tables via TableDiff thanks to @morozov
5657: Mark ColumnDiff public properties as internal thanks to @morozov
5650: Deprecate and mark internal APIs related to schema comparison thanks to @morozov
5622: Schema Diff API cleanup thanks to @morozov
Platforms,SQLite
5755: Use the % operator instead of MOD() in SQLite thanks to @derrabus
Dependencies
5750: Allow doctrine/event-manager 2 thanks to @derrabus
Deprecation,Platforms,SQLite
5749: Deprecate LOCATE() emulation on SQLite thanks to @derrabus
Deprecation,Schema Management
5747: Deprecate Table::changeColumn() thanks to @morozov
5612: Mark AbstractSchemaManager::_execSql() as internal thanks to @morozov
Schema Comparison,Schema Management,Test Suite
5746: Rework some tests that instantiate TableDiff thanks to @morozov
5714: Rework some tests that instantiate TableDiff thanks to @morozov
Deprecation,Drivers,pdo_sqlite
5742: Deprecated the userDefinedFunctions driver option for pdo_sqlite thanks to @derrabus
Drivers,New Feature,SQLite,sqlite3
5737: New driver: SQLite3 thanks to @derrabus
Deprecation,Foreign Keys,Primary Keys,Schema Management
5731: Deprecate Table methods thanks to @morozov
Deprecation,Error Handling,Schema Management
5728: Deprecate SchemaException codes thanks to @morozov
Deprecation
5721: Deprecating misspelled isFullfilledBy() method thanks to @nexxai
Configuration,Connections,Platform Detection
5707: Deprecate fallback connection to determine platform thanks to @morozov
Configuration,Connections,Deprecation,PostgreSQL
5705: Deprecate PostgreSQL-specific connection parameters and behavior thanks to @morozov
Configuration,Connections,Deprecation
5699: Deprecate platform parameter of wrapper Connection thanks to @morozov
5697: Deprecate driver name aliases thanks to @morozov
Logging,Transactions
5686: fix: always log savepoint release thanks to @simPod
SQLite,Schema Management,Test Suite
5660: Remove implementation of alterTable() for SQLite thanks to @morozov
Columns,Deprecation
5656: Deprecate "unique" and "check" column properties thanks to @morozov
Platforms
5654: Reduce duplication of collation declaration code thanks to @morozov
Columns,Deprecation,Schema Definition
5637: Deprecate default precision and scale for decimal columns thanks to @morozov
IBM DB2,Schema Management
5621: Remove redundant condition from DB2 platform thanks to @morozov
Deprecation,Schema Introspection
5613: Deprecate AbstractSchemaManager::createSchema() in favor of introspectSchema() thanks to @morozov
5595: Deprecate AbstractSchemaManager::listTableDetails() thanks to @morozov
3.4.6 - 22 Oct 2022
Total issues resolved: 0
Total pull requests resolved: 9
Total contributors: 4
CI,PostgreSQL
5782: Run tests with Postgres 15 thanks to @derrabus
Static Analysis
5772: PHPStan 1.8.10, Psalm 4.29.0 thanks to @derrabus
Documentation
5771: Add 3.5 and 4.0 to .doctrine-project.json thanks to @derrabus
Bug,PostgreSQL,Regression,Schema Introspection
5765: Use default schema if $tableName has no namespace. thanks to @kitloong
SQL Server,Test Suite
5752: Rename SQL Server platform unit test thanks to @morozov
SQLite,Test Suite,pdo_sqlite
5738: Enable testReturnsDatabaseNameWithoutDatabaseNameParameter for SQLite thanks to @derrabus
Dependencies,Static Analysis,Test Suite
5736: Bump dev dependencies thanks to @derrabus
Improvement
5716: Fixed various typos thanks to @nexxai
Dependencies
5713: Update PHPStan to 1.8.6 thanks to @morozov
3.4.5 - 24 Sep 2022
Total issues resolved: 1
Total pull requests resolved: 4
Total contributors: 3
Documentation
5688: Use rst syntax thanks to @greg0ire
5672: Remove unwanted plural in pull request url pattern thanks to @greg0ire
Bug,PostgreSQL,Regression,Schema Introspection
5687: Do not list tables required by extensions thanks to @morozov and @lmichelin
Bug,MySQL,Performance,Regression,Schema Introspection
5667: Optimize MySQLSchemaManager::selectForeignKeyColumns() thanks to @morozov
3.4.4 - 6 Sep 2022
Total issues resolved: 1
Total pull requests resolved: 3
Total contributors: 3
Dependencies,Test Suite
5646: Bump sa tools thanks to @greg0ire
Bug,MySQL,Performance,Regression
5639: Optimize MySQLSchemaManager::selectTableColumns() thanks to @m-vo
Static Analysis,Test Suite
5636: PHPUnit 9.5.24, Psalm 4.26.0 thanks to @derrabus
3.4.3 - 30 Aug 2022
Total issues resolved: 0
Total pull requests resolved: 2
Total contributors: 2
Code Style
5624: Upgrade to doctrine/coding-standard 10 thanks to @greg0ire
Bug,Portability,Regression,SQLite,Schema Introspection
5617: Fix database detection on SQLite with PORTABILITY_EMPTY_TO_NULL thanks to @morozov
3.4.2 - 22 Aug 2022
Total issues resolved: 2
Total pull requests resolved: 3
Total contributors: 3
Bug,Namespaces,PostgreSQL,Regression,Schema Management,Sequences
5604: Fix DropSchemaObjectsSQLBuilder issues thanks to @morozov and @HypeMC
PostgreSQL,Test Suite
5599: Fix condition in PostgreSQL only test thanks to @HypeMC
Bug,Foreign Keys,SQLite,Schema Introspection
5597: Fix parsing SQLite FK reference not containing whitepace thanks to @morozov and @oraslaci
3.4.1 - 17 Aug 2022
Total issues resolved: 7
Total pull requests resolved: 9
Total contributors: 9
Oracle,Schema Introspection,Test Suite
5591: Add a test for quoting table names in schema thanks to @morozov and @mondrake
Documentation,Schema Comparison
5590: Update documentation on schema comparison thanks to @morozov
Columns,Static Analysis
5589: Allow to call $column1->setColumnDefinition($column2->getColumnDefinition()) thanks to @VincentLanglet
Bug,Namespaces,PostgreSQL,Regression,Schema Introspection
5586: Index components for listTables() by portable table definition thanks to @morozov and @NoiseByNorthwest
Bug,Drivers,Static Analysis,pdo_sqlsrv,sqlsrv
5585: Expect an SQLServerPlatform instance in AbstractSQLServerDriver thanks to @morozov and @elavrom
Bug,Regression,SQL Server,Schema Introspection
5581: Filter out the "sysdiagrams" table on SQL Server thanks to @morozov and @lampi87
Bug,MySQL,Oracle,Regression,Schema Introspection
5580: Filter MySQL and Oracle columns by table type thanks to @morozov and @dmolineus
Bug,Foreign Keys,Regression,SQLite
5577: Do not add artificial name to anonymous SQLite constraint thanks to @morozov and @simonworkhouse
Bug,Foreign Keys,Identifiers,Indexes,PostgreSQL,Quoting,Regression,Reserved Keywords,Schema Introspection
5576: Rework introspection of table indexes and foreign keys on Postgres thanks to @morozov and @acirulis
3.4.0 - 07 Aug 2022
Total issues resolved: 8
Total pull requests resolved: 71
Total contributors: 11
Documentation,Platforms,Schema Introspection
5568: Mark remaining schema introspection platform methods as internal thanks to @morozov
Deprecation,Prepared Statements
5563: Deprecate Statement::bindParam() thanks to @morozov
5558: Deprecate not passing parameter type to bindParam() and bindValue() thanks to @morozov
5556: Deprecate passing parameters to Statement::execute*() thanks to @morozov
5550: Deprecate using NULL as prepared statement parameter type thanks to @morozov
Documentation
5555: Fix upgrade note thanks to @derrabus
5279: Nest deprecations for 3.4 under 3.4 thanks to @greg0ire
Deprecation,QueryBuilder
5551: Deprecate QueryBuilder APIs exposing its internal state thanks to @morozov
Documentation,Prepared Statements
5549: Mark Connection::ARRAY_PARAM_OFFSET internal thanks to @morozov
Cache,New Feature,QueryBuilder
5539: Added result caching for QueryBuilder thanks to @twoleds
Static Analysis,Test Suite
5536: Enforce property types in tests thanks to @derrabus
Deprecation,Platforms,Schema Management
5529: Deprecate passing assets as names thanks to @morozov
Deprecation,Platforms
5527: Deprecate internal AbstractPlatform methods or mark them as such thanks to @morozov
5392: Additional documentation for prior deprecations thanks to @morozov
5388: Deprecate AbstractPlatform methods exposing quote characters thanks to @morozov
5385: Deprecate passing date interval parameters as integers thanks to @morozov
5373: Deprecate AbstractPlatform::getVarcharTypeDeclarationSQL() thanks to @morozov
5230: Deprecated AbstractPlatform::getListTableConstraintsSQL() thanks to @morozov
Platforms,SQLite
5517: Allow to disable schema emulation on SQLite thanks to @mvorisek
5486: Do not drop table indexes before dropping SQLite table thanks to @mvorisek
Databases,Deprecation,Platforms,Schema,Sequences
5513: Deprecate internal and non-portable AbstractPlatform methods thanks to @morozov
Deprecation,SQLite,Types
5511: Deprecate SqlitePlatform::getTinyIntTypeDeclarationSQL() and ::getMediumIntTypeDeclarationSQL() thanks to @morozov
Deprecation,Platforms,Types
5509: Deprecate AbstractPlatform::hasNative*Type() and Type::requiresSQLCommentHint() thanks to @morozov
CI,Dependencies
5504: Bump Symfony components to supported version ranges thanks to @derrabus
SQLite,Schema Management
5500: Table schema clone is not needed in SqlitePlatform thanks to @mvorisek
5488: AbstractSchemaManager::listTableForeignKeys() should support listing for all tables at once thanks to @mvorisek
5419: Remove SchemaDiffVisitor thanks to @morozov
5397: Remove redundant (array) casts thanks to @morozov
Configuration,Deprecation,Schema Introspection
5483: Deprecate NULL schema asset filter thanks to @morozov
Bug,Regression,Schema Introspection,Tables
5482: Fix filtering tables according to the configuration thanks to @morozov
Configuration,Deprecation,Logging
5480: Deprecate Configuration::getSQLLogger() and setSQLLogger() thanks to @morozov
Columns,Deprecation
5476: Deprecate custom schema options thanks to @morozov
Deprecation,Types
5470: Deprecate array and object column types thanks to @morozov
5049: Deprecate Type::getName() thanks to @greg0ire
Improvement,PHP
5461: Add native property types thanks to @derrabus
Code Style
5460: Use the null-coalescing assignment operator thanks to @derrabus
PHP
5459: Drop support for PHP 7.3 thanks to @morozov
Deprecation,Drivers,Improvement,Schema Management
5458: Deprecate Driver::getSchemaManager() in favor of AbstractPlatform::createSchemaManager() thanks to @morozov
Improvement,Schema Introspection
5457: Implement AbstractSchemaManager::_getPortableTableForeignKeyDefinition() across platforms thanks to @morozov
PostgreSQL,Sequences
5453: Remove PostgreSQLSchemaManager::_getPortableSequencesList() thanks to @morozov
5244: Diff command with PostgreSQLPlatform fails when there is a sequence thanks to @maxm86545
Schema Introspection
5452: Rework introspection of table names thanks to @morozov
5281: Reimplement more Schema Manager listTable*() methods with the new API thanks to @morozov
IBM DB2
5451: Rework listing table names for DB2 thanks to @morozov
5450: Rework table introspection for DB2 thanks to @morozov
Improvement,PostgreSQL
5449: Optimize introspection of table comments on PostgreSQL thanks to @morozov
Deprecation,Tools
5439: Deprecate ConsoleRunner thanks to @morozov
Deprecation,Schema
5435: Deprecate Visitor API thanks to @morozov
Deprecation,Reserved Keywords
5433: Deprecate KeywordList::getName() thanks to @morozov
Deprecation,Namespaces,Schema Management
5432: Deprecate removal of namespaced assets from schema thanks to @morozov
Deprecation,Reserved Keywords,Tools
5431: Deprecate checking keywords in schema object names thanks to @morozov
Bug,Platforms,SQL Server
5428: Fix NCHAR typo for MSSQL thanks to @mvorisek
Deprecation,Foreign Keys,Improvement,SQLite
5427: Mark SQLite platform as supporting foreign keys thanks to @morozov
Bug,SQLite,Schema Comparison
5425: Fix redundant orphaned foreign key thanks to @morozov
Deprecation,Improvement,Schema Management
5416: Replace schema SQL collectors with SQL builders thanks to @morozov
Deprecation,Foreign Keys,MySQL,Schema Management
5414: Deprecate ignoring foreign keys DDL on non-InnoDB MySQL thanks to @morozov
Bug,Foreign Keys,Improvement,SQLite
5404: Run more foreign key tests on SQLite thanks to @morozov
Improvement,SQLite,Schema Introspection
5402: Natural order of SQLite foreign keys thanks to @morozov
Bug,PostgreSQL,Schema Management
5394: Remove PostgreSQLPlatform::isNumericType() thanks to @morozov
Deprecation,Schema Management
5387: Deprecate AbstractSchemaManager::getDatabasePlatform() thanks to @morozov
Deprecation
5383: Deprecate transaction nesting without savepoints thanks to @greg0ire
5222: Signal deprecation at runtime thanks to @greg0ire
5204: Deprecate methods related to type comments thanks to @greg0ire
Static Analysis
5378: Use more precise phpdoc thanks to @greg0ire
5333: Leverage int-mask-of to make types more precise thanks to @greg0ire
Deprecation,IBM DB2,MySQL,Oracle,SQL Server,Schema Definition
5377: Add runtime deprecations for default string column length thanks to @morozov
Foreign Keys,SQLite
5365: SQLite should properly check if foreign keys are supported and/or omit foreign key statements when a table diff is analyzed thanks to @BigMichi1
Static Analysis,Transactions
5357: Make transacional function return type generic thanks to @snapshotpl
Default Values,Improvement,MariaDB
5332: Support TEXT/BLOB default values on MariaDB thanks to @morozov and @gregor-tb
Platforms
5290: Remove user related methods from the schema manager thanks to @morozov
Deprecation,Schema Introspection
5287: Deprecate passing $database to AbstractSchemaManager::list*() thanks to @morozov
Deprecation,Improvement,Performance,Schema Introspection
5268: Optimize schema managers' ::listTables() methods thanks to @morozov and @mathieubouchard
Improvement,Platforms,PostgreSQL
5256: Single PostgreSQLPlatform::getListSequencesSQL thanks to @maxm86545
Test Suite
5181: Delete run-all.sh thanks to @mvorisek
Bug,PostgreSQL,Schema Comparison,Schema Management
4745: Improper management of autoincrement sequence in PostgreSQL platform thanks to @morozov
Bug,Foreign Keys,Improvement,Platforms,SQLite
1204: DBAL-1253: Sqlite: inconsistent (non-)support of foreign keys thanks to @doctrinebot
3.3.8 - 07 Aug 2022
Total issues resolved: 1
Total pull requests resolved: 12
Total contributors: 6
Bug,Type Conversion
5566: Do not treat deprecation level as errors thanks to @wouterj
Test Suite
5535: Use assertCount() when possible thanks to @derrabus
Dependencies
5533: Update PHPStan to 1.8.2 thanks to @morozov
Documentation,Schema Comparison
5503: Fix link in deprecation message thanks to @derrabus
Code Style
5479: Fix AbstractMySQLPlatform comment typo thanks to @mvorisek
5475: Use double quotes for strings containing contractions thanks to @morozov
Documentation
5478: Refer to the correct parameter in comment thanks to @greg0ire
Bug,Schema Comparison,Schema Management
5471: Infer omitted column charset from collation thanks to @morozov
Static Analysis,Test Suite
5469: Bump dev tools thanks to @derrabus
Bug,Prepared Statements,ibm_db2
5467: Fix order of binding parameters on ibm_db2 thanks to @morozov
Bug,Prepared Statements,oci8
5466: Bind only non-NULL BLOB values as BLOB on oci8 and ibm_db2 thanks to @morozov and @eisberg
CI,PHP
5442: Run tests on PHP 8.2 thanks to @derrabus
3.3.7 - 17 Jun 2022
Total issues resolved: 1
Total pull requests resolved: 8
Total contributors: 6
Code Style,Static Analysis
5444: PHP CodeSniffer 3.7, PHPStan 1.7.13 thanks to @derrabus
Static Analysis
5426: PHPStan 1.7.9 thanks to @derrabus
5417: Run Psalm with language level PHP 8.1 thanks to @morozov
Documentation,Type Mapping
5415: Update documentation for the guid type thanks to @kaznovac
Bug,PostgreSQL,Schema Management
5395: Check integer types via PhpIntegerMappingType thanks to @morozov and @umherirrender
Bug,PHP,PostgreSQL
5381: Fix using deprecated syntax thanks to @nicolas-grekas
Documentation
5379: Refresh docs about transactions thanks to @greg0ire
CI
5374: Remove CA bundle from AppVeyor thanks to @morozov
3.3.6 - 02 May 2022
Total issues resolved: 1
Total pull requests resolved: 5
Total contributors: 4
Dependencies
5371: Allow doctrine/deprecations 1.0 thanks to @derrabus
Static Analysis
5370: Psalm 4.23, PHPStan 1.6.3 thanks to @derrabus
Static Analysis,Test Suite
5362: PHPStan 1.6.0, PHPUnit 9.5.20 thanks to @derrabus
Connections,Static Analysis,ibm_db2
5356: Update JetBrains PhpStorm stubs to 2022.1 thanks to @morozov
Bug,Events,Platforms
5320: Inject EventManager when using a custom platform thanks to @spideyfusion and @zerocrates
3.3.5 - 05 Apr 2022
Total issues resolved: 0
Total pull requests resolved: 1
Total contributors: 1
Bug
5345: Redact connection URL from logs as it may contain sensitive data thanks to @andrew-demb
3.3.4 - 24 Mar 2022
Total issues resolved: 2
Total pull requests resolved: 2
Total contributors: 3
Bugfixes
5326: Source column defaults from its own table thanks to @morozov and @surikman
5325: Fix assertion in AbstractPostgreSQLDriver::getSchemaManager() thanks to @morozov and @astronom
3.3.3 - 9 Mar 2022
Total issues resolved: 0
Total pull requests resolved: 6
Total contributors: 3
Documentation
5294: Modernize array syntax used in code examples thanks to @derrabus
Bug,MariaDB,Reserved Keywords
5292: OFFSET keyword for MariaDB thanks to @yurikuzn
Documentation,MySQL
5277: Recommend a better charset by default thanks to @greg0ire
CI,pdo_sqlite
5266: Add CI Job for testing with SQLite on Ubuntu 18.04 thanks to @derrabus
Static Analysis
5263: Remove obsolete PHPStan rules regarding compareSchemas() calls thanks to @derrabus
5261: More accurate params thanks to @greg0ire
3.3.2 - 5 Feb 2022
Total issues resolved: 2
Total pull requests resolved: 7
Total contributors: 9
Bugfixes
5224: Ignore columnDefinition in schema comparison thanks to @bcremer and @dmaicher
5226: Oracle: Convert array keys to lowercase thanks to @yajra
5232: Consider CASE_LOWER being equal to 0 in portability middleware thanks to @morozov
5246: Add support for collation option to MySQL thanks to @greg0ire
Static Analysis
5245: Fix typo thanks to @staabm
Documentation
5229: Add section on result types not being guaranteed thanks to @aszenz
3.3.1 - 30 Jan 2022
Total issues resolved: 2
Total pull requests resolved: 7
Total contributors: 6
Bugfixes
5220: Allow dynamic call to compareSchemas thanks to @greg0ire
5202: Optimize AbstractMySQLPlatform::getListTableForeignKeysSQL() thanks to @morozov and @xprojects-de
5196: Handle binding invalid named parameter errors thanks to @morozov and @TimurFlush
Documentation
5201: Improve explanation on DC2Type comments thanks to @greg0ire
5197: [Doc] Fix a table of Type Mapping Matrix thanks to @javiereguiluz
5190: fix typo: \Doctrine\DBAL\Statement vs. \Doctrine\DBAL\Driver\Statement thanks to @staabm
Internal
5211: Drop requirement for PostgreSQL 9.4+ thanks to @greg0ire
3.3.0 - 17 Jan 2022
Total issues resolved: 2
Total pull requests resolved: 27
Total contributors: 6
Static Analysis
5157: Document $lockMode value range thanks to @derrabus
Test Suite,Tools
5155: Remove assets used for testing Dumper thanks to @morozov
Deprecation,IBM DB2
5152: Deprecate support for IBM DB2 10.5 and older thanks to @morozov
Deprecation,Types
5136: Deprecate Type::canRequireSQLConversion() thanks to @morozov
Platforms,Test Suite
5127: Test AbstractPlatform::getModExpression() thanks to @morozov
Improvement,Oracle,Schema Introspection
5124: Improve performance of Oracle constraint query. thanks to @AlexHowansky
IBM DB2,Transactions
5121: Remove DB2Platform::supportsReleaseSavepoints() thanks to @morozov
Improvement,Prepared Statements
5120: Adding the constant PARAM_ASCII_ARRAY to Doctrine\DBAL\Connection thanks to @santoja
Deprecation,Platforms,Sequences
5119: Deprecate AbstractPlatform::prefersIdentityColumns() thanks to @morozov
Deprecation,Oracle
5109: Deprecate support for Oracle 12c and older thanks to @morozov
Documentation,Schema Management,Type Mapping
5106: Mark AbstractSchemaManager::extractDoctrineTypeFromComment() and ::removeDoctrineTypeFromComment() internal thanks to @morozov
Deprecation,MariaDB,Platforms
5102: Deprecate support for MariaDB 10.2.6 and older thanks to @morozov
MariaDB,MySQL,Platforms
5098: Forward compatibility for MySQL-like platforms thanks to @morozov
Dependencies,Static Analysis
5088: Remove suppression of the deprecated class error needed for Composer 1 thanks to @morozov
Deprecation,Tools
5084: Deprecate the doctrine-dbal binary thanks to @derrabus
5083: Deprecate Graphviz visitor thanks to @morozov
Dependencies
5078: Remove package-versions-deprecated dependency thanks to @derrabus
Deprecation,MySQL,Platforms
5072: Deprecate support for MySQL 5.6 and older thanks to @morozov
MySQL
5071: Clean up SQL generation in MySQL platform thanks to @morozov
Deprecation,Improvement
5070: RunSqlCommand: Render results as table thanks to @derrabus
Deprecation
5058: Deprecate AbstractPlatform commented type APIs thanks to @greg0ire
Improvement,pdo_sqlsrv
5038: Use abstract middleware classes for PDO_sqlsrv thanks to @derrabus
Connections,Deprecation,New Feature
5037: Add Connection::getNativeConnection() thanks to @derrabus
Improvement
5035: Provide abstract middleware classes thanks to @derrabus
Bug,Oracle,Schema Management
5007: Oracle fix duplicate identifier for 3.2.x thanks to @aimeos
Connections,Deprecation
4966: Deprecate Connection::getWrappedConnection(), mark Connection::connect() internal thanks to @morozov
Bug,SQL Server,Schema Comparison
4817: Use original case to index renamed columns thanks to @morozov
3.2.2 - 17 Jan 2022
Total issues resolved: 0
Total pull requests resolved: 3
Total contributors: 2
Documentation
5180: Add middlewares to the architecture documentation thanks to @derrabus
Static Analysis
5179: PHPStan 1.4.0 thanks to @derrabus
Bug,Strict Typing,Type Conversion,Types
5173: Fix JSON Dbal type to properly encode whole number float values, preserving zero fractions. thanks to @Kova101
3.2.1 - 6 Jan 2022
Total issues resolved: 2
Total pull requests resolved: 17
Total contributors: 6
Bug,pdo_pgsql
5161: Remove trailing comma in a PDO object parameters thanks to @mesolaries
Bug,PDO,PHP
5145: Use $maxLength = 0 by default when calling PDOStatement::bindParam() thanks to @morozov and @Jeroeny
Bug,SQL Parser
5138: Make the SQL parser regular expression less greedy thanks to @morozov
Bug,Documentation
5129: Accept strings in AbstractPlatform::get*Expression() methods thanks to @morozov
Bug
5079: Fix typos thanks to @derrabus
5077: Honor requiresSQLCommentHint() for overriding types thanks to @greg0ire
Documentation
5064: Use see instead of link for references to structural elements thanks to @derrabus
5059: Document minor BC Break about cache keys thanks to @greg0ire
5057: Explain what DC2Type SQL comments are about thanks to @greg0ire
Static Analysis
5063: Fix array types on ArrayResult thanks to @derrabus
5053: Workaround for "mixed is a reserved word" error thanks to @derrabus
5052: Fix doc block thanks to @derrabus
5045: Fix return type of _getNestedTransactionSavePointName() thanks to @derrabus
CI,Logging
5062: Remove psr/log downgrade from CI thanks to @derrabus
Deprecation,SQL Server
5061: Add deprecation annotation to SQLServer2012Platform thanks to @derrabus
Error Handling,Test Suite
5050: Remove exception coverter unit tests thanks to @morozov
Code Style
5040: Fix coding standard violation in the IBM DB2 driver thanks to @morozov
Bug,Type Mapping
4845: Doctrine SQL comments not always generated thanks to @Mediagone
3.2.0 - 27 Nov 2021
Total issues resolved: 12
Total pull requests resolved: 58
Total contributors: 19
Improvements
3425: Improve ConnectionTest by triggering real exceptions thanks to @grongor
4622: Add events for Transaction begin/commit/rollBack. thanks to @Warxcell and @mariusbalcytis
4685: Support for more drivers on PHP 8.1 thanks to @morozov
4746: Platform-aware schema comparison thanks to @morozov
4844: Get view definition for SQL Server thanks to @kitloong
4855: Test AbstractPlatform::getLengthExpression() thanks to @morozov
4894: Refactor MySQLi statement to make it unaware of the connection thanks to @derrabus
4910: Remove redundant reference assignment thanks to @kamil-tekiela
4918: Remove redundant assert thanks to @kamil-tekiela
4925: Remove obsolete define() check thanks to @derrabus
4928: Basic exception handling for SQL Server thanks to @morozov
4929: Basic exception handling for IBM DB2 thanks to @morozov
4948: Accept PDO as a Connection constructor argument thanks to @morozov
4949: Accept connection object/resource as a driver connection constructor argument thanks to @morozov
4950: Accept driver-level statement as a wrapper-level statement constructor argument thanks to @morozov
4957: Accept the underlying statement as an oci8 statement constructor argument thanks to @morozov
4967: Introduce logging middleware thanks to @morozov
4986: Add return types to private and final methods thanks to @derrabus
Deprecations
4624: Deprecate doctrine/cache in favor of psr/cache thanks to @derrabus
4681: Deprecate TableGenerator thanks to @morozov
4688: [GH-4687] Deprecate Connection::lastInsertId($name) thanks to @morozov
4707: Introduce consistent Comparator API thanks to @trompette
4724: Deprecate redundant AbstractPlatform methods thanks to @morozov
4743: Deprecate reference from foreign key to its referencing table thanks to @morozov
4751: Deprecate VersionAwarePlatformDriver and ServerInfoAwareConnection thanks to @morozov
4753: Deprecate AbstractPlatform::getNowExpression() thanks to @morozov
4755: Deprecate AbstractPlatform::getName() thanks to @morozov
4785: Deprecate not passing $fromColumn to ColumnDiff thanks to @morozov
4789: Deprecate features of Table::getColumns() thanks to @morozov
4802: Platform API cleanup thanks to @morozov
4805: Deprecate AbstractPlatform::canEmulateSchemas() thanks to @morozov
4812: Deprecate Schema::getTableNames() thanks to @morozov
4814: Deprecate AbstractAsset::getFullQualifiedName() thanks to @morozov
4821: Deprecate AbstractSchemaManager::getSchemaSearchPaths() thanks to @morozov
4822: Deprecate schema methods related to explicit foreign key indexes thanks to @morozov
4839: Deprecate the Constraint interface thanks to @morozov
4897: Deprecate AbstractSchemaManager::dropAndCreate() and ::tryMethod() methods thanks to @morozov
4969: Declare SQLite as not supporting CREATE|DROP DATABASE thanks to @morozov
4999: Use sprintf('%d') like in DB2, SQLServer and Oracle to harden against wrong limit and offset thanks to @nickvergessen
4920: Remove redundant code in mysqli Result thanks to @kamil-tekiela
4898: Use the driver API to begin a transaction on mysqli thanks to @morozov
4887: Remove mysqli_report() call thanks to @derrabus
4869: mysqli::real_connect may be called with null $flags thanks to @mondrake
4871: OracleSchemaManager::_getPortableTableColumnDefinition throws deprecations on PHP 8.1 thanks to @mondrake
Bugfixes
1125: DBAL-1182: No schema difference detected when changing length of a text field thanks to @doctrinebot
2566: Column altering in migration from TEXT to LONGTEXT may not apply. thanks to @janokary
2663: Comparator fails for BLOBS thanks to @thomashohn
2930: Comparator doesn't see changes in the length of TextType field thanks to @WhiteEagle88
4178: DDC-2043: Extra cache operation in DBAL\Cache\ResultCacheStatement.php thanks to @doctrinebot
5003: Always cache the full result thanks to @morozov
5020: Fix hardcoded varchar default length thanks to @mvorisek
Internal
4857: Merge AbstractPostgreSQLPlatformTestCase into PostgreSQLPlatformTest thanks to @morozov
4891: Bump PHPStan level to 8 thanks to @greg0ire
4951: Detect driver in tests based on configured driver name thanks to @morozov
5008: Refactor query caching tests thanks to @morozov
3.1.5 - 27 Nov 2021
Total issues resolved: 0
Total pull requests resolved: 1
Total contributors: 1
Documentation
5021: Remove references to Doctrine 2 thanks to @greg0ire
3.1.4 - 15 Nov 2021
SECURITY RELEASE: All users are advised to upgrade when using doctrine/dbal 3.0.0 - 3.1.3 due to a critical SQL injection that was fixed: GHSA-r7cj-8hjg-x622
Total issues resolved: 6
Total pull requests resolved: 20
Total contributors: 13
Bug,oci8
4995: Fix getServerVersion for OCI8 when assertions are disabled thanks to @derrabus and @SylvainSimonGPA
Connections,Test Suite
4991: Optimize sharing test connection thanks to @morozov
Bug,QueryBuilder
4984: Cast LIMIT and OFFSET to int when building limit query thanks to @morozov
Bug,Prepared Statements,Regression,SQL Parser
4980: DBAL 3.1: Array parameter conversion does not work with long SQL queries thanks to @AlexeyKosov
Documentation
4979: Remove unwanted colon in code samples thanks to @greg0ire
4947: [Docs] Removing paragraph about PDO similarity thanks to @ThomasLandauer
4931: Fixes spelling error discovered via textlint thanks to @raphaelstolt
Bug,MySQL,Schema Introspection
4978: Use correct column order for composite foreign keys thanks to @AndreasA
CI
4942: Do not mark issues as stale thanks to @morozov
Bug,Connections,Test Suite,pdo_oci
4940: Fix connection leaks in Oracle functional tests thanks to @morozov
Bug,Platforms,SQL Server
4939: Use CONCAT() with SQL Server to concatenate strings thanks to @morozov
3346: mssql 2016 SQLServer2012Platform::getConcatExpression() missing/wrong thanks to @Lacoi
4935: Workflow for closing stale pull requests thanks to @morozov
Prepared Statements,Regression,SQL Parser
4927: Rework negation of the special characters in SQL parser thanks to @morozov and @j-schumann
4916: Make the SQL parser regular expression less greedy thanks to @morozov and @j-schumann
Bug,PostgreSQL,Prepared Statements,Regression,SQL Parser
4904: Fix parsing escaped PostgreSQL JSONB question operator thanks to @morozov and @lugosium
Bug,PHP,mysqli
4880: Catch MySQLi exceptions on PHP 8.1 thanks to @derrabus
Test Suite
4868: Rework connect/disconnect routines in functional tests thanks to @morozov
CI,Code Style
4865: Remove obsolete PHPCS config thanks to @derrabus
SQL Server,Test Suite
4856: Merge AbstractSQLServerPlatformTestCase into SQLServerPlatformTestCase thanks to @morozov
Bug,Cache
4852: QueryCacheProfiler::generateCacheKey: Param password should be ignore in connection hash thanks to @janbarasek
Bug,SQLite
4838: fixed using lower case column names thanks to @eschricker
3.1.3 - 2 Oct 2021
Total issues resolved: 1
Total pull requests resolved: 5
Total contributors: 3
Static Analysis
4826: Remove obsolete error suppression thanks to @derrabus
Bug,Console
4825: Fix version displayed in ConsoleRunner thanks to @derrabus
4824: Remove pinned platform thanks to @derrabus
Bug,Platforms,Regression,SQLite
4815: Fix renaming upper-cased SQLite columns thanks to @morozov and @Spice-King
Bug,Schema
4811: Fix Schema::getTableNames() thanks to @morozov
3.1.2 - 12 Sep 2021
Total issues resolved: 6
Total pull requests resolved: 11
Total contributors: 4
PHP 8.1
4793: Do not pass NULL to internal functions that do not expect NULL thanks to @derrabus
Bug Fixes
4776: Retain SQLite column position when renaming or altering thanks to @morozov
4766: Fix introspection of BINARY columns thanks to @morozov
4765: Fix introspection of BLOB columns on SQL Server thanks to @morozov
4733: Fix auto_increment implementation for Oracle thanks to @mondrake
4719: Reset transaction nesting level when closing connection thanks to @morozov
4677: Create tables with unique constraints on PostgreSQL thanks to @hschletz
Static Analysis
4739: Code cleanup thanks to @morozov
4717: PHPStan check fails on PHP 8 thanks to @morozov
Documentation
4768: Remove obsolete TODO annotation thanks to @derrabus
4716: Clarify ExpressionBuilder arguments thanks to @morozov
3.1.1 - 22 Jun 2021
Total issues resolved: 1
Total pull requests resolved: 8
Total contributors: 5
Bug,Indexes,Platforms
4672: Fixed generated SQL for UniqueConstraint objects thanks to @hschletz
Bug
4667: Make Table::removeUniqueConstraint() actually work thanks to @hschletz
Improvement,Test Suite,Tools
4656: Allow Symfony 6 thanks to @jderusse
Documentation
4642: Update versions for default branch thanks to @SenseException
4635: Address class rename in the docs thanks to @greg0ire
4615: Remove docs about user-provided PDO instance thanks to @greg0ire
CI,Cache,Deprecation,Static Analysis
4630: Suppress deprecation notices for ArrayCache thanks to @morozov
Character Encoding,Connections,MySQL,Test Suite
4614: [GH-4613] Use utf8mb4 instead of utf8 for testing connection charset thanks to @morozov
3.1.0 - 19 Apr 2021
Total issues resolved: 3
Total pull requests resolved: 16
Total contributors: 5
Deprecation,New Feature
4607: Introduce Statement::executeQuery and Statement::executeStatement. thanks to @beberlei
Deprecation,Documentation
4589: Reference methods using parentheses thanks to @PowerKiKi
Deprecation,Documentation,Reserved Keywords
4587: [GH-4510] Deprecate ReservedWordsCommand::setKeywordListClass() thanks to @morozov
Deprecation,Oracle,Schema Managers
4584: [GH-4503] Mark OracleSchemaManager methods internal thanks to @morozov
Error Handling,Improvement,Prepared Statements,oci8
4581: Fix truncated oracle fetch result thanks to @amenning
Deprecation,Improvement,QueryBuilder
4578: Predictable QueryBuilder::executeQuery() and QueryBuilder::executeStatement() thanks to @PowerKiKi
Deprecation
4568: Trigger runtime deprecations for previously deprecated APIs thanks to @morozov
Connections,Sequences,pdo_sqlsrv
4560: Remove redundant implementation of PDO\SQLSrv\Connection::lastInsertId($name) thanks to @morozov
Deprecation,Improvement,Schema,Schema Managers
4548: Deprecations in schema- and namespace-related APIs thanks to @morozov
Deprecation,Platforms,Reserved Keywords
4547: Deprecate AbstractPlatform::getReservedKeywordsClass() thanks to @morozov
Deprecation,PDO,pdo_sqlsrv
4534: Deprecate Statement::bindParam($driverOptions) thanks to @morozov
Connections,Deprecation
4527: Deprecate Connection::getExpressionBuilder() thanks to @morozov
4517: Deprecate Connection::$_expr thanks to @morozov
Connections,Deprecation,Schema Managers
4519: Deprecate Connection::$_schemaManager and Connection::getSchemaManager() thanks to @morozov
Prepared Statements,Static Analysis,sqlsrv
4514: Remove SQLSrv\LastInsertId thanks to @morozov
Improvement,QueryBuilder,Static Analysis
4489: Introduce fetch* methods in query builder thanks to @andrew-demb
Connections,Documentation,Error Handling
4457: Add note about lost connections to UPGRADE guide. thanks to @beberlei
3.0.0 - 15 nov 2020
This is a major release of Doctrine DBAL that focuses on API improvements and removal of deprecated APIs.
Major release highlights
Integration with PDO has been reworked. The php_pdo extension is no longer a hard dependency of the doctrine/dbal package. The PDO API is not longer the standard for DBAL APIs.
The wrapper-level connection and statement classes no longer implement the corresponding driver-level interfaces.
Instead of being available in certain states of the Statement class, the statement result is explicitly returned as a separate value.
A new dedicated API has been introduced for unique constraints.
The prepared statement portability layer has been reworked on top of the newly introducer Driver Middleware API.
The logic of conversion of driver-specific error codes and exceptions has been extracted into the Exception Converter API.
The SQL parser has been completely reworked to allow for better compatibility with the SQL syntax.
The following database platforms are no longer supported:
Drizzle,
MariaDB 10.0 and older,
Microsoft Azure,
PostgreSQL 9.3 and older,
SQL Anywhere,
SQL Server 2008 and older.
The following drivers are no longer supported:
pdo_ibm,
sasql.
Passing a PDO instance initialized outside of the DBAL is no longer supported.
The support for UUID generation on the database side has been dropped.
The MasterSlaveConnection class has been renamed to PrimaryReplicaConnection.
The executeUpdate() method has been renamed to executeStatement().
All driver classes and driver-level connection and statement classes are now consistently named and declared as final.
All PDO-based drivers have been moved under the PDO namespace.
The Doctrine\DBAL\DBALException and Doctrine\DBAL\Driver\DriverException have been renamed to Doctrine\DBAL\Exception and Doctrine\DBAL\Driver\Exception respectively.
Total issues resolved: 26
Total pull requests resolved: 99
Total contributors: 13
PHP 8 support
4207: Update locked composer/package-versions-deprecated for compatibility with PHP 8.0 thanks to @morozov
4203: Remove --ignore-platform-reqs from PHP 8.0 builds thanks to @morozov
4197: The test suite fails on PHP 8 due to introduction of the match keyword thanks to @morozov
4171: Inconsistent naming of method arguments thanks to @morozov
4028: Allow php 8 thanks to @greg0ire
3814: Added builds against PHP nightly on Travis thanks to @morozov
3802: OCI8StatementTest fails on PHP 8 thanks to @morozov
API improvements
4429: Throw exception on invalid LockMode thanks to @morozov and @BenMorel
4397: Port the SQL parser from PDO thanks to @morozov and @shurik005
4317: Reintroduce parts of Legacy API for some more time thanks to @beberlei
4293: Add Result::fetchAllKeyValue() and ::iterateKeyValue() thanks to @morozov
4159: Do not implement driver-level interfaces by wrapper-level classes thanks to @morozov
4157: Rework the portability layer to act as a middleware thanks to @morozov
4149: Replace DefaultExceptionConverter with driver-specific implementations thanks to @morozov
4136: Move the logic of driver exception conversion into a separate interface thanks to @morozov
4129: Remove ExceptionConverterDriver thanks to @morozov
4081: Simplify Driver::connect() signature thanks to @morozov
4045: Extract Result from the Statement interface thanks to @morozov
4035: Moved rowCount() from Statement to ResultStatement thanks to @morozov
4007: Replace the concept of statement fetch modes with the explicit API thanks to @morozov
4039: Refactor portability statement into a functional composition thanks to @morozov
3980: Segregated support of unique index and unique constraint thanks to @guilhermeblanco
3943: Do not require hostname for non-persistent MySQL connection and require for persistent thanks to @morozov
3548: Remove user provided PDO functionality thanks to @morozov
3080: [DBAL-3079] Reworked the usage of PDO in PDOConnection from inheritance to composition thanks to @morozov
2958: Remove hard dependency on PDO thanks to @morozov
Legacy platform and driver removal
4077: Remove SQL Anywhere platform and driver thanks to @morozov
3756: Dropped SQL Server 2008 support thanks to @morozov
3602: Remove support for sharding and the Azure platform thanks to @morozov
3584: Remove LoggerChain::addLogger thanks to @ostrolucky
3477: Drop db support for PostgreSQL 9.3 and MariaDB 10.0 thanks to @SenseException
3055: Drop support for legacy platforms thanks to @Majkl578 and @morozov
3040: Drop Drizzle support thanks to @BenMorel
Deprecated API removal
4294: Remove Abstraction\Result thanks to @morozov
4278: Remove deprecated APIs thanks to @morozov
4234: Remove deprecated APIs thanks to @morozov
4217: Remove the Synchronizer package thanks to @morozov
4167: Remove deprecated methods from the wrapper Connection thanks to @morozov
4153: Remove deprecated components thanks to @morozov
4128: Remove PingableConnection thanks to @morozov
4125: Remove deprecated driver classes thanks to @morozov
4115: Remove ServerInfoAwareConnection#requiresQueryForServerVersion() as an implementation detail thanks to @morozov
4113: Remove DriverException::getErrorCode() thanks to @morozov
4083: Remove MasterSlaveConnection thanks to @greg0ire
4082: Backport removal of deprecated APIs from develop thanks to @morozov
4064: Remove platform-specific portability mode constants thanks to @morozov
4059: Remove deprecations for ConnectionHelper thanks to @dmaicher
4030: Backport removal of some deprecated APIs thanks to @morozov
3934: Removed EchoSQLLogger thanks to @morozov
3808: Removed the OCI8Connection::getExecuteMode() method thanks to @morozov
3606: Removed Driver::getDatabase() in favor of Connection::getDatabase() thanks to @morozov
3579: Remove deprecated stuff for 3.0 thanks to @jwage
3553: Removed Driver::getName() thanks to @morozov
3518: Remove @​deprecated stuff thanks to @Majkl578
3257: Remove Doctrine\DBAL\Types\Type::__toString() thanks to @Majkl578
3211: Removed support for DB-generated UUIDs thanks to @morozov
3070: Dropped support of fetching objects and non-zero column thanks to @morozov
2967: Drop Doctrine\DBAL\Version in favor of Ocramius\PackageVersions thanks to @Majkl578
Other breaking changes
4147: Mark driver classes final thanks to @morozov
4146: Require $platform in AbstractSchemaManager::__construct() thanks to @morozov
4138: PDO connection and statement classes made final thanks to @morozov
4109: Preparation to marking OCI8 driver classes final thanks to @morozov
4090: Make the $database argument of OracleSchemaManager::createDatabase() mandatory thanks to @morozov
3820: Made the OCI8Statement class final thanks to @morozov
3803: Backport PDO-related changes from master to 3.0.x thanks to @morozov
3750: VersionAwarePlatformDriver now extends Driver thanks to @morozov
Error handling
4387: Store query params in driver exceptions thanks to @BenMorel
4320: Properly format scalar values in ConversionException thanks to @morozov
4401: Add missing instanceof check thanks to @BenMorel
4160: Add some missing @throws annotations and fix thrown exceptions thanks to @morozov
4130: Missing driver exception annotations thanks to @morozov
4093: Expect only DriverException from Result::fetch*() methods thanks to @morozov
Documentation
4423: Add missing word thanks to @greg0ire
4384: Proofread upgrade guide thanks to @greg0ire
4164: Update architecture documentation thanks to @morozov
4135: Remove irrelevant references to PDO from the documentation thanks to @morozov
Test suite
4089: Remove the CommentedType class from tests thanks to @morozov
4058: Add tests for fetch*() methods of Portability\Result thanks to @morozov
4006: Fix logging in functional tests in case of connection failure thanks to @morozov
3965: Sync expected coverage report count thanks to @greg0ire
Other changes
4433: Require positional statement parameters to be a list thanks to @morozov
4431: Use individual properties in Configuration thanks to @BenMorel
4422: QueryBuilder must use 0-based positional parameter keys thanks to @morozov
4410: Remove support for colon prefix in statement parameters thanks to @morozov
4343: Rename MySql... to MySQL... and PostgreSqlSchemaManager to PostgreSQLSchemaManager thanks to @mvorisek
4323: Clean up redundant implements thanks to @BenMorel
4301: Remove irrelevant deprecation message from console runner thanks to @morozov
4290: Don't ignore empty strings in QueryBuilder thanks to @BenMorel
4140: Mark result constructors internal thanks to @morozov
4107: Remove the suppressed errors that PHPStan no longer reports thanks to @morozov
4091: Get rid of the call to Connection::getParams() in Portability\Statement thanks to @morozov
4084: Allow using on PHP 7.3 with Composer 2 thanks to @nicolas-grekas
4040: Merge up mistakes thanks to @greg0ire
3933: Removed the hard-coded MySQL default port and the usage of ini-settings thanks to @morozov
3932: Enable PHPStan strict rules thanks to @morozov
3915: Flatten source and test directory structure thanks to @morozov
3912: Made some platform class names reflect the lowest server version they support thanks to @morozov
3906: Backport removal of legacy platforms and drivers from master thanks to @morozov
3899: Drop support for PHP 7.2 in DBAL 3.0 thanks to @morozov
3862: Specify the platform configuration in composer.json thanks to @morozov
3860: Drop Doctrine\DBAL\Version in favor of Ocramius\PackageVersions thanks to @Majkl578
3847: Update Doctrine Coding Standard to 7.0 thanks to @morozov
3817: Refactored MySQLiStatement::$columnNames thanks to @morozov
3594: Removed some unused code bits thanks to @morozov
2.12.1 - 14 nov 2020
Total issues resolved: 2
Total pull requests resolved: 11
Total contributors: 7
Bug fixes
4414: ResultCacheStatement::fetchAllAssociative does not store results in cache thanks to @morozov and @dFayet
4400: LockMode::NONE should not set WITH (NOLOCK) thanks to @BenMorel
Deprecations
4411: Deprecate inappropriate usage of prepared statement parameters thanks to @morozov
4407: Deprecate colon prefix for prepared statement parameters thanks to @morozov
PHP 8
4396: Fix php8 mysql mariadb thanks to @greg0ire
4398: Update PHP_CodeSniffer to 3.5.8 thanks to @morozov
Packaging
4416: Update .gitattributes thanks to @bytestream
Static Analysis
4403: Remove redundant phpstan param from DriverManager::getConnection() thanks to @simPod
Documentation
4424: Mark SQLParserUtils internal thanks to @morozov
4390: Fix headline in the upgrade docs thanks to @jdreesen
4356: Testing Guidelines thanks to @morozov
2.12.0 - 22 Oct 2020
Total issues resolved: 1
Total pull requests resolved: 7
Total contributors: 5
Documentation,Static Analysis
4376: Configuration should not be internal thanks to @BenMorel
CI
4374: Reduce number of build jobs thanks to @greg0ire
4365: Fail on extension / tool installation failure thanks to @greg0ire
Bug,Static Analysis
4373: Psalm fails on release commits thanks to @morozov
Documentation,Error Handling
4362: Adds exception thrown by execute() method thanks to @toby-griffiths
CI,PHP
4361: Test all extensions with PHP8 thanks to @greg0ire
PHP
4347: [2.12] PHP 8 compatibility thanks to @derrabus
2.11.3 - 20 Oct 2020
Total issues resolved: 1
Total pull requests resolved: 1
Total contributors: 2
Regression in PostgreSQL Schema Manager
4364: Move the logic out of the assertion thanks to @morozov and @andreybolonin
2.11.2 - 18 Oct 2020
Total issues resolved: 5
Total pull requests resolved: 16
Total contributors: 10
Backward compatibility fixes
4330: Fix regression in QueryBuilder::and|orWhere() thanks to @BenMorel
4308: #4295 Keep master, slaves, keepReplica params in MasterSlaveConnection thanks to @kralos
Upgrade path improvements
4341: Add Statement::fetchAllIndexedAssociative() and ::iterateIndexedAssociative() thanks to @morozov and @ZaneCEO
4338: Add Statement::fetchAllKeyValue() and ::iterateKeyValue() thanks to @morozov
4289: Add a fetch mode methods for "PDO::FETCH_KEY_PAIR" thanks to @tswcode
Bug fixes
4315: Fix handling existing SQL Server column comment when other properties change thanks to @trusek
3400: Wrong column comment setting command in migrations of SQL Server thanks to @msyfurukawa
Documentation improvements
4305: Move website config to default branch thanks to @SenseException
Test suite improvements
4321: Update PHPUnit to 9.4 thanks to @morozov
Static analysis improvements
4353: Update Psalm to 3.17.2 and lock the version used with GitHub Actions thanks to @morozov
4348: Bump Psalm level to 3 thanks to @morozov
4346: Minor CS improvement - use ::class for TestCase::expectException input thanks to @mvorisek
4332: Static analysis improvements thanks to @morozov
4319: Bump Psalm level to 4 thanks to @morozov
Continuous integration improvements
4310: Migrate jobs away from Travis to Github Actions thanks to @greg0ire
4344: Static analysis workflow thanks to @greg0ire
4340: Modernize existing ga thanks to @greg0ire
4309: Use cache action v2 thanks to @greg0ire
2.11.1 - 27 Sep 2020
Backward compatibility fixes
4287: Restore PDOStatement::quote() for backward compatibility thanks to @morozov and @Shahelm
4286: Fix BC break: QueryBuilder::andWhere() etc. should ignore empty strings thanks to @BenMorel and @infabo
Bug fixes
4173: Fix Third parameter not allowed for PDO::FETCH_COLUMN thanks to @BenMorel
Deprecations
4291: Deprecate Abstraction\Result thanks to @morozov
Documentation fixes and improvements
4296: Increase indent in definition lists thanks to @greg0ire
4299: Link to contributing guide thanks to @greg0ire
4285: Fix phpdoc on deprecated functions thanks to @qdequippe
Test suite improvements
4297: Fix ExceptionTest::testConnectionExceptionSqLite() on macOS thanks to @morozov
2.11.0 - 20 Sep 2020
This release focuses on deprecating the functionality identified for removal in the next major release and adds a few improvements.
Changes in fetching data from prepared statements
The previous API was inherited from PDO and allowed to specify the fetch mode by passing ones of the FetchMode constants to the fetch*() methods of the Statement interface. Now, there is a dedicated method for each of the modes.
Added ASCII parameter binding
For those database platforms that support columns of the ASCII character set (currently, SQL Server), it is now possible to bind the corresponding prepared statement parameters using the ASCII parameter type and avoid unnecessary value conversion.
Note that PHP 7.3 is now the minimum supported PHP version.
Total issues resolved: 7
Total pull requests resolved: 55
Total contributors: 8
Deprecations
4253: Deprecate DBAL\DBALException in favor of DBAL\Exception thanks to @morozov
4230: Deprecate the functionality of dropping client connections when dropping a database thanks to @morozov
4229: Deprecate more AbstractPlatform methods thanks to @morozov
4213: Deprecate the Synchronizer package thanks to @morozov
4175: Additional deprecation note for PrimaryReplicaConnection::query() thanks to @morozov
4165: Deprecated usage of wrapper components as implementations of driver-level interfaces thanks to @morozov
4163: Deprecate duplicate and ambiguous wrapper connection methods thanks to @morozov
4144: Deprecate classes in Driver\PDO* namespaces thanks to @morozov
4139: Mark connection constructors internal thanks to @morozov
4137: Deprecate driver exception conversion APIs thanks to @morozov
4134: Deprecate some DBALException factory methods thanks to @morozov
4133: Fix more issues introduced by the deprecation of driver classes thanks to @morozov
4132: Deprecate AbstractPlatform::fixSchemaElementName() thanks to @morozov
4131: Restore the PortWithoutHost exception parent class thanks to @morozov
4118: Deprecate ExceptionConverterDriver thanks to @morozov
4117: Fixes for the recently introduced driver-level deprecations thanks to @morozov
4114: Deprecate ServerInfoAwareConnection#requiresQueryForServerVersion() as an implementation detail thanks to @morozov
4112: Deprecate DriverException::getErrorCode() thanks to @morozov
4110: Mark non-interface OCI8 driver methods internal thanks to @morozov
4100: Deprecate inconsistently and ambiguously named driver-level classes thanks to @morozov
4086: Mark Connection::getParams() internal thanks to @morozov
4068: Deprecate Driver::getDatabase() thanks to @morozov
4061: Deprecated platform-specific portability mode constants thanks to @morozov
4054: [GH-4052] Deprecate MasterSlaveConnection and rename to PrimaryReplicaConnection thanks to @beberlei and @albe
4049: Replace forward-compatible ResultStatement interfaces with Result thanks to @morozov
4020: Deprecated Connection::project(), Statement::errorCode() and errorInfo() thanks to @morozov
4017: Improve help of dbal:run-sql command thanks to @ostrolucky
3935: Deprecate EchoSQLLogger thanks to @morozov
3905: Deprecate the usage of the legacy platforms and drivers thanks to @morozov
3864: CompositeExpression and()/or() factory methods thanks to @BenMorel
3861: Deprecated the usage of the Version class thanks to @morozov
3853: Deprecate calling QueryBuilder methods with an array argument thanks to @BenMorel and @morozov
3851: Rename andX() / orX() methods thanks to @BenMorel
3850: Prepare CompositeExpression for immutability thanks to @BenMorel
Improvements in Prepared Statements
4274: Support ASCII parameter binding thanks to @gjdanis
4048: Make caching layer not rely on closeCursor() thanks to @morozov
4037: Introduce Statement::fetchFirstColumn() thanks to @morozov
4034: Additional changes based on the discussion in #4007 thanks to @morozov
4019: Deprecated the concept of the fetch mode thanks to @morozov
Driver Improvements
4085: The IBM DB2 driver Exception class must implement the DriverException interface thanks to @morozov
Improvements in CLI Tools
3956: allow using multiple connections for CLI commands thanks to @dmaicher
Improvements in QueryBuilder
3852: First parameter of ExpressionBuilder::and/or() mandatory thanks to @BenMorel
Error Handling Improvements
4145: Add TypeRegistry constructor thanks to @morozov
Static Analysis Improvements
4123: Remove the no longer needed error suppressions thanks to @morozov
4092: Remove Connection::$isConnected thanks to @morozov
Other Changes
4271: Add explanation about implicit indexes thanks to @greg0ire
4251: Setup automatic release workflow thanks to @greg0ire
4215: Remove test group configuration leftovers thanks to @morozov
4201: Update PHPUnit to 9.3 thanks to @morozov
4196: The test suite uses the deprecated at() matcher thanks to @morozov
4080: Update PHPUnit to 9.2 thanks to @morozov
4079: Forward compatibility with PHPUnit 9.3 thanks to @morozov
4078: Bump PHP requirement to 7.3 as of DBAL 2.11.0 thanks to @morozov
4050: Update doctrine/coding-standard to 8.0 thanks to @morozov
3924: Actualize the content of the .gitattributes file thanks to @morozov
3923: Removed performance tests thanks to @morozov
2.10.4 - 12 Sep 2020
Build Status
Total issues resolved: 2
Total pull requests resolved: 3
Total contributors: 3
Regressions
4255: Revert full support for foreign key constraints for SQLite thanks to @morozov and @taylorotwell
Bug fixes
4268: Handle both ways of PDO reporting failed connection thanks to @morozov
CI improvements
4252: Reuse global coding standard workflow thanks to @greg0ire
2.10.3 - 1 Sep 2020
Build Status
Total issues resolved: 3
Total pull requests resolved: 42
Total contributors: 9
Bug Fixes
4238: Fix errors with case sensitive collation on mssql: not existing procedures and tables (sp_RENAME, SysObjects, SysColumns) thanks to @redgnar
4231: Mark testDropsDatabaseWithActiveConnections() as incomplete on OraclePlatform thanks to @morozov
4162: Remove parameters and types unset after statement execution thanks to @morozov
4148: Remove workaround in PDOSqlsrv\Connection::quote() thanks to @morozov
4074: Fix handling host and port configuration in sqlsrv and pdo_sqlsrv drivers thanks to @morozov
4066: Fix DSN detection in the IBM DB2 driver thanks to @morozov
3994: Use proper check in acceptForeignKey() thanks to @greg0ire
3991: Extend RetryableException from Throwable interface thanks to @mitelg
3762: Add full support for foreign key constraints for SQLite thanks to @beberlei
Other Code Improvements
4172: Clean up inconsistent or redundant argument names thanks to @morozov
Static Analysis Improvements
4235: Update PHPStan to 0.12.40 thanks to @morozov
4222: Upgrade Psalm to its latest version thanks to @greg0ire
4116: Update PHPStan to 0.12.31 thanks to @morozov
4099: Update PHPStan to 0.12.30 thanks to @morozov
4094: Bump Psalm level to 5 thanks to @morozov
3977: Psalm 6 thanks to @greg0ire
3974: Remove unneeded and risky stubs parsing thanks to @greg0ire
3969: Psalm 7 thanks to @greg0ire
CI Improvements
4239: Cleanup Travis scripts and configuration thanks to @morozov
4184: Trigger Github workflow for merges thanks to @greg0ire
4181: Fetch parent commits thanks to @greg0ire
4176: Add GitHub Actions builds for oci8 and pdo_oci drivers thanks to @morozov
4009: Coveralls integration thanks to @greg0ire
3998: move PHPStan to GitHub Actions thanks to @bendavies
3979: Move phpcs from Travis to GitHub Actions thanks to @bendavies
3978: Use composer install in the Psalm job thanks to @greg0ire
Documentation Improvements
4185: Fix badges thanks to @morozov
4126: Use relative names in inline {@link} annotations where possible thanks to @morozov
4027: @link in convertException gives 404 thanks to @tomasnorre
4008: Fix character for mysql driver example thanks to @alexpts
Test Suite Improvements
4209: Test MySQLi connection via TLS on Travis thanks to @morozov
4127: Rework extension detection in tests thanks to @morozov
4067: Simplify test suite configuration thanks to @morozov
4053: Report coverage unconditionally on Travis thanks to @greg0ire
4047: Integrate with Codecov thanks to @greg0ire
3148: Ignore code coverage of private constructors of static classes thanks to @morozov
Code Style Improvements
4150: Update doctrine/coding-standard to 8.1 thanks to @morozov
4120: Update Slevomat Coding Standard to 6.3.10 thanks to @morozov
4031: Ignore all violations of the LowercasePHPFunctions sniff in SQLSrvStatement thanks to @morozov
3989: Remove useless rules thanks to @greg0ire
3983: Bump cs libs thanks to @greg0ire
3287: Do not suppress warnings in PHP_CodeSniffer reports thanks to @morozov
2.10.2 - 20 Apr 2020
Bug Fixes
3937: Column comment incorrectly introspected on SQLite thanks to @morozov
3894: Make sure that the $types array has the same keys $params thanks to @morozov
3893: Ensure the constructor arguments are passed to custom classes thanks to @duncan3dc
3843: Fix unquoted stmt fragments backslash escaping thanks to @morozov
3832: Fix JOIN with no condition bug thanks to @BenMorel
3821: [pg] fix getting table information if search_path contains escaped schema name thanks to @linniksa
3790: fixed unqualified table name of fk constraints when using schemas thanks to @stlrnz and @Alarich
Static Analysis Improvements
3964: Mark every exception as immutable thanks to @greg0ire
3961: Stop relying on the master version of Psalm thanks to @greg0ire
3955: Remove baseline thanks to @greg0ire
3951: Setup static analysis with Psalm thanks to @greg0ire
3799: Upgrade to PHPStan v0.12 thanks to @lcobucci
CI Improvements
3884: Use Docker consistently thanks to @greg0ire
3478: Improve readiness probe stability for containerized databases on CI thanks to @morozov
3883: Fix broken build thanks to @greg0ire
Documentation Improvements
3896: Updated documentation for QueryBuilder::execute() return value type thanks to @morozov
3886: Update readme thanks to @greg0ire
3842: Fixed the QueryBuilder::setMaxResults() signature to accept NULL thanks to @morozov
3834: Fix docblock typos in DriverManager docs thanks to @CHItA
3812: Fix DebugStack#queries docblock type thanks to @ostrolucky
Test Suite Improvements
3957: Reworked LoggingTest to be able to test Statement::executeUpdate() thanks to @morozov
v2.10.1 - 5Â Jan 2020
Build Status
This release fixes regressions introduced in release v2.10.0, implements some CI/testing improvements and introduces updates in the documentation.
Total issues resolved: 3
Total pull requests resolved: 10
Total contributors: 11
Regressions:
3790: Fix unqualified table name of fk constraints when using schemas thanks to @stlrnz and @Alarich
3738: Fix breaks named parameters in Oracle thanks to @eisberg and @matesko
CI improvements and maintenance:
3784: Use PHP 7.4 instead of a snapshot on Travis thanks to @andreybolonin
3778: [GH-3777] Don't remove composer lock travis on stable 2.10 branch thanks to @beberlei
3753: Allow build failures for unstable dependencies thanks to @morozov
3720: Switched from PHPBrew-based configuration to the Docker-based thanks to @morozov
Test suite improvements:
3745: Remove temporary SQLite file on teardown thanks to @morozov
Documentation updates:
3793: Remove superfluous Configuration instance thanks to @mhitza
3739: Update deprecation messages to refer to DBAL thanks to @alcaeus
3723: Fix annotations thanks to @enumag and @Pnoexz
v2.10.0 - 4 Nov 2019
This is a minor release of Doctrine DBAL that aggregates over 70 fixes and improvements developed by 25 contributors over the last year.
This release focuses on internal code quality improvement and deprecating the functionality identified for removal in the next major release.
Note that PHP 7.2 is now the minimum supported PHP version.
Backwards Compatibility Breaks
This release introduces a minor BC break. Default column values are no longer handled as SQL expressions. They are converted to SQL literals (e.g. escaped). The previous behavior was not portable and was never by design.
Clients must now specify default values in their initial form, not in the form of an SQL literal (e.g. escaped).
Before:
$column->setDefault('Foo\\\\Bar\\\\Baz');
After:
$column->setDefault('Foo\\Bar\\Baz');
Deprecations
The usage of the getDriver(), getDatabasePlatform() and getSchemaManager() methods of the ConnectionEventArgs class has been deprecated.
The usage of the getDatabasePlatform() method of the SchemaColumnDefinitionEventArgs class has been deprecated.
The usage of the getHost(), getPort(), getUsername() and getPassword() methods of the Connection class has been deprecated.
Passing multiple SQL statements as an array to SchemaAlterTableAddColumnEventArgs::addSql() and the same method in other SchemaEventArgs-based classes is deprecated.
Calling AbstractSchemaManager::tablesExist() with a string argument is deprecated.
Calling OracleSchemaManager::createDatabase() without an argument or by passing NULL is deprecated.
Unused schema manager methods are deprecated.
AbstractSchemaManager::_getPortableFunctionsList(),
AbstractSchemaManager::_getPortableFunctionDefinition(),
OracleSchemaManager::_getPortableFunctionDefinition(),
SqliteSchemaManager::_getPortableTableIndexDefinition().
The usage of NULL to indicate empty $username or $password when calling Doctrine\DBAL\Driver::connect() is deprecated.
Method Doctrine\DBAL\Platforms::_getAlterTableIndexForeignKeySQL() has been deprecated as no longer used.
Property Doctrine\DBAL\Driver\OCI8\OCI8Statement::$_PARAM has been deprecated as not used.
Method Doctrine\DBAL\Driver::getName() is deprecated.
The usage of user-provided PDO instance is deprecated.
Type::* constants are deprecated.
The Doctrine\DBAL\Driver\SQLSrv\SQLSrvStatement::LAST_INSERT_ID_SQL constant has been deprecated.
The constants in Doctrine\DBAL\SQLParserUtils have been deprecated.
The Doctrine\DBAL\Logging\LoggerChain::addLogger method has been deprecated.
Please see the details in the UPGRADE.md documentation.
New Features and Improvements
3674: Add missing MySQL 8.0 reserved keywords thanks to @loilo
3512: Support for comments on table in all databases thanks to @moufmouf
3418: Add column charset for MySql thanks to @AlterTable
MySQL-related changes:
3668: Quote collation on MySQL thanks to @staudenmeir
3374: Clean up MySqlPlatform::getListTableIndexesSQL() fields thanks to @BenMorel
3311: Ensuring correct ALTER TABLE statement for creation of an AUTO INCREMENT column as new PRIMARY KEY thanks to @arnegroskurth
Driver level changes:
3677: Relax statement type declaration thanks to @greg0ire
3521: Maintain platform parameter in connection params thanks to @jwage and @Perf
3588: Add commit result bool thanks to @otazniksk
Schema management:
2960: Handle default values as values, not SQL expressions thanks to @morozov
Types improvements:
3356: Extract constants for built-in types from Type to Types thanks to @Majkl578
3354: Extract type factory and registry from Type into TypeRegistry thanks to @Majkl578
Compatibility with Symfony 5:
3706: add missing exit codes to ensure Symfony 5 compatibility thanks to @dmaicher
3563: Allow Symfony 5 thanks to @nicolas-grekas
Query Builder:
3696: Add support for DISTINCT clause thanks to @bingo-soft
Logging:
3572: Make LoggerChain use constructor to add loggers instead of adder method thanks to @ostrolucky
Code quality improvements:
3667: Phpstan fix backport thanks to @morozov
3663: Updated PHPStan to v0.11.15 thanks to @morozov
3604: Updated Jetbrains PhpStorm stubs to 2019.1 thanks to @morozov
3549: Removed the assertion which doesn't work with a user-provided PDO connection thanks to @morozov
3489: Update doctrine coding standard from 5.0 to 6.0 thanks to @amaabdou
3481: Updated PHPStan to v0.11.3 thanks to @morozov
3443: PHPStan Level 7 thanks to @morozov
3442: PHPStan Level 6 thanks to @morozov
3436: PHPStan Level 5 thanks to @morozov
3435: PHPStan Level 4 thanks to @morozov
3432: Updated PHPStan to v0.11 thanks to @morozov
Test suite improvements:
3705: Don't skip a test for sqlite thanks to @Federkun
3689: Updated PHPUnit to 8.4.1 thanks to @morozov
3664: Refactor usage of MockBuilder's deprecated setMethods() thanks to @baspeeters
3643: Bumped PHPUnit requrement to ^8.3.3, removed dependency on symfony/phpunit-bridge thanks to @morozov
3609: Reworked the mocks generated by Prophecy using PHPUnit thanks to @morozov
3608: Added a unit test for Doctrine\DBAL\Logging\LoggerChain thanks to @morozov
3600: Updated PHPUnit to 8.2.1 thanks to @morozov
3575: Enforced parameter and return value types in test classes thanks to @morozov
3566: Upgraded to PHPUnit 8.1.6 and reworked the remaining driver exception mock thanks to @morozov
3555: Removed the rest of mock classes thanks to @morozov
3546: Reworked driver exception tests thanks to @morozov
3530: Improve ExceptionTest::testConnectionExceptionSqLite thanks to @jwage
3474: Remove more hard-coded mock classes thanks to @morozov
3470: Replaced MockPlatform with the ones generated by PHPUnit thanks to @morozov
3468: Marked some test classes abstract thanks to @morozov
3446: Upgraded PHPUnit to 8.0 thanks to @morozov
Documentation improvements:
3616: Fix typo in docblock thanks to @rdarcy1
3559: add .github/FUNDING.yml thanks to @jwage
3556: Removed 2.8 from README thanks to @morozov
3514: Expand list of keywords in composer.json thanks to @Majkl578
3504: fix #3479 (typos in example-code in QueryBuilder) thanks to @DavidBruchmann
3503: Fix the branch alias for master thanks to @stof
3463: fixed a typo in PoolingShardConnection phpdoc thanks to @Adapik
3408: Removed unused build files thanks to @morozov
3404: Link to Slack instead of Gitter thanks to @greg0ire
3376: Bump version to 2.10.0-DEV thanks to @morozov
CI improvements:
3688: Temporarily disable the usage of PHPUnit 8.4 due to a regression thanks to @morozov
3654: fix Appveyor builds thanks to @mmucklo
3644: Using command line options to configure MySQL 8 instead of mounting a config file thanks to @morozov
3509: Enabled the build against IBM DB2 on PHP 7.3 on Travis CI thanks to @morozov
3528: Reworked SQL Server installer on Travis CI thanks to @morozov
3484: Use latest stable versions of sqlsrv and pdo_sqlsrv on CI thanks to @morozov
3475: Make PHP 7.3 the primary PHP version on Travis CI thanks to @morozov
3473: Avoid database connection from PHPUnit data providers thanks to @morozov
3469: Replaced Xdebug with PCOV for code coverage thanks to @morozov
3405: Travis CI: PHP 7.3 tests on MySQL 8.0 thanks to @BenMorel
3394: Grouped PHPStan and PHP_CodeSniffer for parallel execution thanks to @morozov
3388: Require PHP 7.2, drop <7.2 in Composer & on CI thanks to @morozov
3122: Introduced a smoke testing phase on Travis to run SQLite tests and CS checks first thanks to @morozov
Deprecations:
3708: New deprecations for 2.10 thanks to @morozov and @jwage
3598: Deprecated some unused code bits thanks to @morozov
3558: Deprecated Driver::getName() thanks to @morozov
3554: The usage of user-provided PDO instance is deprecated thanks to @morozov
3542: Deprecate SQLSrvStatement::LAST_INSERT_ID_SQL constant. thanks to @jwage
3541: Deprecate the public constants in SQLParserUtils thanks to @jwage
v2.9.3 - 3 Nov 2019
Build Status
This release fixes regressions introduced in previous releases and other bugs.
Total issues resolved: 5
Total pull requests resolved: 14
Total contributors: 9
Regressions
3686: Fixed query result caching when FetchMode::COLUMN is used thanks to @morozov and @Junker
3456: Compare type class when comparing columns. thanks to @garret-gunter and @cs278
Other bugs
3679: fix begin trasaction after reconnect thanks to @kalinin-k-a
3547: Default column expressions do not work on SQL Server thanks to @morozov
3420: Index length can be a string: ensure that it is an integer when read by the MySqlSchemaManager thanks to @leofeyer
CI improvements and maintenance
3702: Updated SQL Server extensions to fix build failures on PHP 7.4 thanks to @morozov
3662: Marked connection exception test incomplete on MySQL 8 thanks to @morozov
3622: Switched from ibmcom/db2express-c to ibmcom/db2 thanks to @morozov
3465: Replaced MySQL 5.7 installed from a PPA with an official Docker image thanks to @morozov
3454: CI: Test against PHP 7.4snapshot instead of nightly (8.0) thanks to @Majkl578
3452: Fixed AppVeyor build configuration and the issue on SQL Server thanks to @morozov and @Majkl578
3447: Replaced custom docker image for PostgreSQL with the official one thanks to @morozov
3407: CI: Test against MySQL 8.0 on Travis thanks to @morozov
PHP 7.4 support
3642: Fixed test failures on PHP 7.4 thanks to @morozov
v2.9.2 - Dec 31, 2018
This release fixes regressions introduced in v2.9.1.
Total issues resolved: 2
MySQL, Schema Introspection:
3410: MySqlSchemaManager::parseCreateOptions() must be of the type string, null given thanks to @jarnovanleeuwen and @morozov
MySQL, Schema Comparison:
3414: Schema migration doesn't detect index length change thanks to @leofeyer and @morozov
v2.9.1 - Dec 14, 2018
This release fixes regressions introduced in v2.9.0 and issues specific to the SQL Anywhere platform.
Total issues resolved: 11
MySQL, Schema Introspection:
3393: Fixed parsing MySQL create table flags (options without a value) thanks to @morozov and @AdrianSherwood
3398: BC Break in 2.9.0 for MySQL Tables containing partitions thanks to @bcremer
SQL Anywhere:
3375: [SQL Anywhere] Fix bound parameter references in PHP 7 thanks to @deeky666
3378: [SQL Anywhere] Fix query limit values "0" and "null" thanks to @deeky666
3385: [SQL Anywhere] Fix fetching empty values via fetchAll() thanks to @deeky666
3386: [SQL Anywhere] Fix view schema introspection test thanks to @deeky666
Schema Comparison:
3382: Reverted strict comparison back to loose because of a new regression thanks to @morozov and @Majkl578
Connections:
3305: Fix Fetch mode query in MasterSlaveConnection thanks to @BradCrumb
Cache:
3381: ResultCacheStatement lost its cache capability on fetchAll method thanks to @roger-codina
Documentation:
3392: fixed annotations of parameter $columns in Table thanks to @LukasVitek and @ricardofiorani
v2.9.0 - Dec 4, 2018
This is a minor release of Doctrine DBAL that aggregates over 40 fixes and improvements developed by 18 contributors over the last 5 months.
This release includes all changes of the 2.8.x series, as well as feature additions and improvements that couldn't land in patch releases.
Backwards Compatibility Breaks
This doesn't contain any intentional Backwards Compatibility (BC) breaks.
Deprecations
The usage of NULL to specify the absence of an offset in LIMITed queries is deprecated. Use 0 instead.
It's not recommended to rely on the default length specified by implementations of Type. These values are not used by the library and will be removed.
It's not recommended to rely on the string representation of Type objects.
Regular-expression based asset filters are deprecated in favor of callback-based as more extensible.
Calling Statement::fetchColumn() with an invalid column index is deprecated.
The dbal:import CLI command is deprecated. Please use other database client applications for import.
Please see details in the UPGRADE.md documentation.
New Features
Added support for MariaDB 10.3.
Added support for Windows authentication for SQL Server.
Added support for column length in index definitions on MySQL.
Improvements and Fixes
Implemented handling BLOB objects represented as streams in the MySQL (mysqli) driver.
Implemented handling BLOB objects represented as streams in the IBM DB2 driver.
DBAL is now continuously tested with the PDO driver for Oracle.
Implemented handling of URLs in master-slave and pooling-shard connection configuration.
The codebase is now fully compatible with the Doctrine Coding Standard v5.0.
Total issues resolved: 45
Deprecations:
3244: Deprecated dbal:import CLI command thanks to @morozov
3253: Deprecated usage of the NULL offset in LIMITed queries thanks to @morozov
3256: Deprecate Doctrine\DBAL\Types\Type::getDefaultLength() thanks to @Majkl578
3258: Deprecate Doctrine\DBAL\Types\Type::__toString() thanks to @Majkl578
3316: Deprecated regex-based asset filters thanks to @morozov
3359: Removed DataAccessTest::testFetchColumnNonExistingIndex() since it covers a bug in PDO thanks to @morozov
New Features:
2412: Add mysql specific indexes with lengths thanks to @bburnichon
3278: Add support for MariaDB 10.3 thanks to @javiereguiluz
3283: MariaDB improvements, support 10.3 thanks to @sidz
3333: Allow windows (userless/passwordless) authentication for SQL Server thanks to @odinsey
Bug Fixes:
3355: Implemented comparison of default values as strings regardless of their PHP types thanks to @morozov and @Majkl578
Improvements:
3201: Fix support for URL to account for master-slave and pooling-shard connections thanks to @stof
3217: Fix that MysqliStatement cannot handle streams thanks to @mpdude
3235: Use PSR-4 autoloader thanks to @Majkl578
3254: Throw ConversionException when unserialization fail for array and object types thanks to @seferov
3259: Update export ignores thanks to @Majkl578
3309: Implemented handling BLOBs represented as stream resources for IBM DB2 thanks to @morozov and @mpdude
3331: Fetch all should use the driver statement's fetchAll method thanks to @michaelcullum
Documentation Improvements:
3223: GitHub template grammar/spelling fixes thanks to @GawainLynch
3232: Removed NOW() from QueryBuilder usage examples thanks to @morozov
3239: 2.8 in README & branch alias to 2.9 thanks to @Majkl578
3269: Fixed type hints in DockBlocks thanks to @marforon
3275: Add .doctrine-project.json to root of the project. thanks to @jwage
3276: Update homepage thanks to @Majkl578
3280: Use behaviuor instead of behavior thanks to @BackEndTea
3285: Remove old comment from MysqliStatement thanks to @mpdude
3318: Removed link to www.doctrine-project.org from doc blocks thanks to @morozov
3319: remove ClassLoader thanks to @garak
3337: Fix of links in documentation thanks to @SenseException
3350: Remove pdo_sqlsrv from known vendor issues list thanks to @ostrolucky
3357: Fix typo thanks to @BenMorel
3370: Removed 2.7 from README thanks to @morozov
Code Quality Improvements:
3252: Replaced call_user_func_array() of a fixed method with the usage of variadic arguments thanks to @morozov
3306: Fixed coding standard violations in the codebase thanks to @morozov
3303: Updated doctrine/coding-standard to 5.0, thanks to @morozov
3317: Implemented proper escaping of string literals in platforms and schema managers thanks to @morozov
3363: Remove redundant implements thanks to @BenMorel
Continuous Integration Improvements:
3307: Test against the latest stable sqlsrv extension thanks to @morozov
3320: Trying to fix failing DB builds thanks to @morozov
3325: Updated PHPUnit to 7.4 thanks to @morozov
3339: ContinuousPHP configuration for PDO Oracle driver thanks to @morozov
3365: Reorganize Travis build matrix thanks to @BenMorel
v2.8.1 -Dec 4, 2018
This release backports the bug fixes implemented in newer DBAL versions.
Total issues resolved: 7
PostgreSQL:
3158: postgres: correctly produce alter table sql comment to update column definition thanks to @bendavies
3226: Ignore case when matching ARRAY thanks to @ohvitorino
3268: Force Sequence::$initialValue type thanks to @vpArth
Oracle:
3297: Do not generate SID or SERVICE_NAME when dbname or service name is not specified thanks to @morozov and @lcp0578
3330: Fixed quoting of string literals containing backslash thanks to @morozov
SQL Anywhere:
3362: [SQL Anywhere] Disable exact row count retrieval on SQL Anywhere thanks to @deeky666
Continuous Integration:
3327: Use locked version of PHPStan to avoid accidental build failures thanks to @morozov
v2.8.0 - Jul 12, 2018
This is a minor release of Doctrine DBAL that aggregates over 30 fixes and improvements developed over the last 3 months.
This release includes all changes of the 2.7.x series, as well as feature additions and improvements that couldn’t land in patch releases.
Backwards Compatibility Breaks
This doesn't contain any intentional Backwards Compatibility (BC) breaks.
Dependency Changes
The dependency on doctrine/common is removed. DBAL now depends on doctrine/cache and doctrine/event-manager instead.
Please see details in the UPGRADE.md documentation.
Deprecations
The usage of binary fields whose length exceeds the maximum field size on a given platform is deprecated. Please use binary fields of a size which fits all target platforms, or use blob explicitly instead.
The usage of DB-generated UUIDs is deprecated. Their format is inconsistent across supported platforms and therefore the feature is not portable. Use a PHP library (e.g. ramsey/uuid) to generate UUIDs on the application side.
New features
Initial support of MySQL 8.
Initial support of PostgreSQL 11.
Ability to evaluate arbitrary SQL expressions via AbstractPlatform::getDummySelectSQL().
Improvements and Fixes
Improved support of binary fields on Oracle and IBM DB2.
Improved SQL Server configuration capabilities via both sqlsrv and pdo_sqlsrv.
Improved handling of AUTOINCREMENTed primary keys in SQLite.
Integration tests are run against IBM DB2 on Travis CI.
Code coverage is collected for the Oracle platform on continuousphp.
Total issues resolved: 33
Deprecations:
3187: Deprecate usage of binary fields whose length exceeds maximum thanks to @morozov
3188: Deprecated usage of binary fields whose length exceeds the platform maximum thanks to @morozov
3192: Added more information to the deprecation notice thanks to @morozov
3212: Deprecated usage of DB-generated UUIDs thanks to @morozov
New Features:
3109: Allow to specify arbitrary SQL expression in AbstractPlatform::getDummySelectSQL() thanks to @morozov
3128: Add MySQL 8 reserved keywords thanks to @mlocati
3160: Test against Postgres 11 thanks to @Majkl578
Bug Fixes:
3149: Introduced binary binding type to support binary parameters on Oracle thanks to @morozov
3178: Fix incorrect exception thrown from SQLAnywhere16Platform thanks to @Majkl578
3044: Functional test for allowing dynamic intervals in date sub/add thanks to @AshleyDawson
Improvements:
3033: Added support for available DSN parameters for the PDOSqlsrv driver thanks to @aashmelev
3141: allow creating PRIMARY KEY AUTOINCREMENT fields for sqlite (unit tests) thanks to @TimoBakx
3143: initialize sql array into platform files thanks to @AlessandroMinoccheri
3157: When building a limit query, zero offset without a limit should be ignored thanks to @morozov
3180: Import simplified version of Common\Util\Debug for var dumping purposes thanks to @Majkl578
Documentation Improvements:
3117: Added badges for the develop branch in README thanks to @morozov
3125: Upgrading docs thanks to @jwage
3144: added improvement type into pull request template thanks to @AlessandroMinoccheri
Code Quality Improvements:
3025: Added PHPStan, apply changes for level 3 thanks to @Majkl578
3200: Php Inspections (EA Ultimate): minor code tweaks thanks to @kalessil
3204: Fix typo in AbstractPlatform thanks to @Majkl578
3205: Ignore OCI-* classes in static analysis (no stubs) thanks to @Majkl578
Continuous Integration Improvements:
3049: Test failures caused by invalid database connection result in fatal error thanks to @Majkl578
3102: Use newer PHPUnit to prevent crashes on failures thanks to @Majkl578
3112: Removed hard-coded configuration filenames from the test runner thanks to @morozov
3133: Travis DB2 thanks to @Majkl578, @morozov
3135: AppVeyor tweaks, retry coverage upload on failure thanks to @Majkl578
3137: Workaround for the inability to use a post-PHPUnit script on ContinuousPHP thanks to @morozov
3151: MSSQL DLL 5.2.0 has been released. thanks to @photodude
Dependencies
3173: Fix composer branch aliases thanks to @Majkl578
3176: Eliminate dependency on doctrine/common thanks to @Majkl578
3181: Remove dependency on doctrine/common thanks to @Majkl578
3193: DBAL 2.8 needs Common 2.9 thanks to @Majkl578
v2.7.2 - Jul 12, 2018
This release backports the bug fixes implemented in newer DBAL versions.
Total issues resolved: 7
Platforms:
3103: Added keywords OVER and RETURNING for MariaDb102 thanks to @mdriessen
Schema Comparison:
3086: Postgres, Oracle and SQL Server Sequence increment_by & min_value as int thanks to @simPod
3210: Unnecessary alter sequence queries generated on Oracle db during schema update thanks to @bobvandevijver
Performance:
3114: Portability Statement still fetches all data in iterator mode thanks to @morozov
3115: Replaced ArrayIterator with StatementIterator in Portability\Connection thanks to @morozov
Documentation:
3121: Document how to opt-in for deprecations thanks to @Majkl578
3123: Opt in deprecations docs thanks to @greg0ire
v2.7.1 - Apr 7, 2018
This release fixes unintentional BC breaks:
It was impossible to use deprecated fetch modes with PDO-based drivers.
An unsupported option passed to the Column object prevented subsequent options from being applied.
Date interval values stored prior to upgrade to v2.7.0 were reported as invalid.
Total issues resolved: 10
Backwards Compatibility Fixes:
3082: Custom PDO fetch modes and 2.7.0 thanks to @corphi
3088: Fix #3082: Add BC for PDO-only fetch modes thanks to @corphi
3089: Don't skip column options. thanks to @andytruong
3093: When updating to version v2.7 type DateInterval throws errors thanks to @fnagel
3097: Fix compatibility for pre-2.7 DateIntervalType format thanks to @Majkl578
Documentation Improvements:
3083: Document the correct way of configuring a MariaDB database with serverVersion thanks to @tristanbes
3084: README: Add 2.7, drop 2.5 thanks to @Majkl578
Continuous Integration Improvements:
3085: Tests: remove implicit verbose flag thanks to @Majkl578
3090: Add symfony tests listener thanks to @greg0ire
3095: CI: Add missing listener for MariaDB @ mysqli thanks to @Majkl578
v2.7.0 - Apr 3, 2018
This is a minor release of Doctrine DBAL that aggregates over 80 fixes and improvements developed over the last 8 months.
This release includes all changes of the 2.6.x series, as well as feature additions and improvements that couldn't land in patch releases.
Backwards Compatibility Breaks
This release comes with one potential Backwards Compatibility (BC) break that is to be considered during upgrade.
Please see the details below.
Dependency requirement changes
There are no changes in requirements to runtime dependencies.
Deprecations
Direct usage of PDO:: constants in calls to DBAL API is deprecated.
Calls to \PDOStatement methods on a \Doctrine\DBAL\Driver\PDOStatement instance are deprecated.
A series of enum-like constants are deprecated.
Setting unsupported options on a schema column object is deprecated.
Please see details in the UPGRADE.md documentation.
New features
This release introduces the following major additions:
MariaDB 10.2 platform support
PostgreSQL 10 platform support
Improvements and Fixes
This release comes with a few bug fixes and a significant set of improvements in continuous integration processes, code style and documentation:
The code is continuously tested on all supported versions of SQL Server on Windows and Linux.
The code is tested with lowest compatible versions of dependencies.
New improved code style requirements have been introduced.
The codebase has been cleaned up from the fragments required to support the older PHP versions and uses the full power of the PHP 7.1.
All pull requests are validated for compliance with the coding standards before getting accepted.
Handling of platform-specific features has been improved.
Total issues resolved: 81
BC Breaks:
2579: DateIntervalType (negative support) resolves doctrine/dbal#2578 thanks to @galeaspablo
Deprecations:
2846: Ensure column options map to an existing method thanks to @greg0ire
2996: Forward compatibility with 3.x thanks to @morozov
2998: Extract some constants into TransactionIsolationLevel, TrimMode and DateIntervalUnit thanks to @Majkl578
New Features:
2825: MariaDB 10.2 initial support thanks to @belgattitude
2893: PostgreSQL 10 support thanks to @simPod
Bug Fixes:
2819: PHP Fatal error: Uncaught Doctrine\DBAL\DBALException: Failed to connect to the database: Invalid platform version "5.5.5-10.1.25-MariaDB thanks to @stfast
2868: Doctrine\DBAL\Exception\InvalidFieldNameException when working with DB schema on PostgreSQL 10 thanks to @skobkin
2988: renameColumn will changed default from NULL to 'NULL' thanks to @kingshark8848
Improvements:
2551: Implement the column collation for Mysql thanks to @mikeSimonson
2578: DateIntervalType (negative support) thanks to @galeaspablo
2588: Inherit charset from master connection if not set explicitly thanks to @Deltachaos
2718: Add iterators for non pdo drivers. thanks to @jenkoian
2616: CI testing of MSSQL on windows with AppVeyor thanks to @photodude
2617: Testing of MSSQL on Windows with AppVeyor thanks to @photodude
2835: Stop relying on Type::__toString thanks to @greg0ire
2851: Test default value declaration for the date type thanks to @greg0ire
2919: Add tests for column collation to prove it works thanks to @Tobion
2952: Enabled testFetchLongBlob() for PDO SQL Server driver thanks to @morozov
2954: The IBM DB2 Statement driver suppresses errors triggered by db2_execute thanks to @morozov
2955: Removed error suppression in IBM DB2 Statement thanks to @morozov
3009: PHPUnit 7 thanks to @carusogabriel
3013: Escape LIKE metacharacters thanks to @greg0ire
3019: Allow dynamic intervals in DATE_ADD & DATE_SUB for SQLite thanks to @fogs
3020: Improve handling of schemas in SQL Server >= 2008 thanks to @stlrnz
3031: Connection parameters are cached hashed thanks to @fullbl
Documentation Improvements:
2793: Fix articles of words sounding with a consonant (SQL => ESS-kew-ELL) thanks to @afoeder
2799: Fix Shard Manager docs with more accurate docblocks in SQLAzureShardManager and PoolingShardManager thanks to @tolbon
2813: fixed return type into OCI8Statement thanks to @AlessandroMinoccheri
2814: Incorrect documentation example for QueryBuilder#set() thanks to @Dormilich
2818: #2814 removing incorrect QueryBuilder#set() documentation, which was showing wrong password hashing and value binding practices (combo!) thanks to @Dormilich
2827: use intended semantics thanks to @greg0ire
2840: Proofread types doc thanks to @greg0ire
2874: Tenant documentation typos thanks to @phil-davis
2875: Doc typos and grammar thanks to @phil-davis
2864: Removed the "OCI8: SQL Queries with Question Marks" section thanks to @morozov
2935: Improve deprecation wording in Doctrine\DBAL\Schema\Column#setOptions() thanks to @greg0ire
2940: Clean up note on query builder setParameter documentation thanks to @jnvsor
3027: Documentation: Warn against using object fields in MySQL and MariaDB thanks to @Jasu
3068: typo in known vendor issues documentation thanks to @gdc676463
3069: fix typo in known vendor issues documentation thanks to @gdc676463
Continuous Integration Improvements:
2801: added badges for continuousphp and other badges for 2.6 thanks to @ppaulis
2849: Update build to use stages (adding PHPCS to check for CS violations) thanks to @lcobucci
2920: Improve build configuration thanks to @lcobucci
2936: Incremental check for coding standards in pull requests thanks to @morozov
2946: Attempt to run PostgeSQL 10 on Travis thanks to @Majkl578
2956: Travis: Test against lowest and dev dependencies thanks to @Majkl578
2961: Code style check fails on develop thanks to @morozov
2962: Fixed code style check failures for pull request against non-master branches thanks to @morozov
3050: Test SQL Server 17 on Travis thanks to @Majkl578
3056: Set Appveyor to use PHP 7.2 thanks to @photodude
3062: Added badges for AppVeyor thanks to @morozov
Code Style Improvements:
2789: Use short array declarations thanks to @AlessandroMinoccheri
2797: Typing final class DriverManager thanks to @tolbon
2798: Fix PSR2 rules : "the static declaration should come after visibility" thanks to @tolbon
2800: Fix inconsistent/missing return statements thanks to @tolbon
2809: Missing @throws declarations in Connection thanks to @bestform
2810: add @throws declarations to docs in Connection thanks to @bestform
2856: use newer PHP syntax thanks to @AlessandroMinoccheri
2857: use newer PHP syntax thanks to @AlessandroMinoccheri
2858: Style improvements thanks to @greg0ire
2869: fixed typo into security documentation thanks to @AlessandroMinoccheri
2927: Refactoring tests thanks to @carusogabriel
2932: Refactoring tests thanks to @carusogabriel
2934: Use Null Coalesce Operator thanks to @carusogabriel
2937: Clean elses thanks to @carusogabriel
2942: Combine consecutives unsets thanks to @carusogabriel
2957: Whitespaces clean-up in docs thanks to @carusogabriel
2965: Update Doctrine CS requirement thanks to @Majkl578
2980: Simplify returns thanks to @carusogabriel
2999: CS: correct annotation types to use symbols specified in the CS rules thanks to @carusogabriel
3002: Use @var instead of @param thanks to @carusogabriel
3008: removed an else condition, fixed a parameter annotation and make little improvements thanks to @AlessandroMinoccheri
3015: A cast statement must be followed by a single space thanks to @carusogabriel
3026: Bump CS version to 3.0 thanks to @Majkl578
3077: CS bump to 4.0, imports for global functions & constants thanks to @Majkl578
Chore:
2950: Removed pre-7.1 quirks thanks to @Majkl578
2989: Update license's copyright thanks to @SenseException
3024: Fixed unqualified PDO class name thanks to @morozov
3060: Development branch build fails on SQL Server thanks to @morozov
3061: Fixed build failure on SQL Server thanks to @morozov
3071: Start SQL Server using a synchronous command to avoid intermittent login failures thanks to @morozov
v2.6.3 - Nov 19, 2017
This release fixes the generation of default values of immutable date/datetime
times, default values of PostgreSQL's SERIAL types, and the required arguments
for SSL connections using MySQLi.
Also includes a fix for a BC-break related to json types comparison.
Total issues resolved: 11
2815: mysqli ssl_key and ssl_cert should not be mandatory thanks to @gauauu
2816: #2815 don't require ssl_key and ssl_cert to use ssl_ca thanks to @gauauu
2596: Schema diff keeps thinking custom mapping types have changed thanks to @vicdelfant
2905: Fixes custom type comment regex thanks to @jeremy-smith-maco
2679: Fix: Doctrine custom types now accepts anything but ')' thanks to @PedroTroller
2907: Don't Set a Default Value on PostgreSQL SERIAL Fields thanks to @chrisguitarguy
2906: Cannot Generate [BIG]SERIAL Columns Without a Default or NOT NULL thanks to @chrisguitarguy
2859: DateTimeImmutable error with default value CURRENT_TIMESTAMP thanks to @tok-amsiq
2861: Default value declaration for immutable types thanks to @tok-amsiq
2880: Symfony 3 - Postgresql JSON type always appear in diff thanks to @PapsOu
2855: Fix BC-break regarding JsonArrayType thanks to @lcobucci
v2.6.2 - Aug 28, 2017
This release fixes an incorrect optimisation in
Doctrine\DBAL\Query\Expression\CompositeExpression which
could have led to dropping query expression components.
Also, DBAL was ignoring some important platform settings
when determining which cache keys to use when looking for
result caches: that could have led to sharing caches for
results produced by different DB connections.
Total issues resolved: 2
2785: Fix CompositeExpression#add() optimization, which was leading to broken CompositeExpression instances thanks to @Grzesie2k
2821: Platform from params are not correctly passed to a QueryCacheProfile thanks to @kimhemsoe
v2.6.1 - Jul 28, 2017
This release fixes an unintentional BC break that
prevented using DateTimeImmutable interfaces
in the pre-existing date-related types.
Users are still encouraged to migrate to the newly
introduced immutable date types.
Total issues resolved: 2
2794: BC Break in Date/Time related types: can no longer convert DateTimeImmutable to database value thanks to @langj
2795: #2794 revert bc break preventing DateTimeImmutable conversion thanks to @Ocramius
v2.6.0 - Jul 23, 2017
This is a minor release of Doctrine DBAL that aggregates over 200 fixes
and improvements that we have tested, checked, reviewed and stabilised
over the last year.
This release includes all changes of the 2.5.x series, as well as
feature additions and improvements that couldn't land in patch releases.
Backwards Compatibility Breaks
This release comes with few potential Backwards Compatibility (BC)
breaks that, while unlikely affecting consumers of the library, are
to be considered.
Please take some time to read the UPGRADE.md documentation.
The issues related to these BC breaks are listed below.
Dependency requirement changes
The dependency requirements for DBAL 2.6.0 onwards have also changed:
HHVM is no longer officially supported
PHP 7.1.0 is the minimum supported PHP version
The PDO extension is now a required dependency
Deprecations
The json_array type is now to be considered deprecated
The Doctrine\DBAL\Schema\Table#renameColumn() API is deprecated
and disabled
The Doctrine\DBAL\Connection#getDatabasePlatform() may
now trigger database connections, if a platform version
isn't provided upfront
New features
This release introduces a few major additions:
PostgreSQL 9.4+ platform support
MySQL 5.7.9 (GA) platform support
A JsonType that maps to JSON column types when supported
by the underlying RDBMS
DateIntervalType
DateTimeImmutableType
DateTimeTzImmutableType
DateImmutableType
TimeImmutableType
PDO::FETCH_OBJ emulation for mysqli and oci8
statements
SSL root certificate configuration support for pdo_pgsql
SSL support for mysqli
Improvements and Fixes
This release comes with a myriad of improvements and
bug-fixes that should improve both compatibility with
exotic database engines and overall performance.
We focused on stability and reliability of
existing features, and improved the overall consistency
of cross-platform behavior of the library.
A detailed list of fixes can be found below.
Total issues resolved: 224
BC Breaks:
2527: Normalize method signatures for fetch() and fetchAll(), ensuring compatibility with the PDOStatement signature thanks to @phansys
2519: ResultStatement#fetchAll() must define 3 arguments in order to be compatible with PDOStatement#fetchAll() thanks to @phansys
2504: URL-decode URL-style DSN thanks to @c960657
990: DBAL-1057 Connection is not lazy anymore when platform detection is necessary
1072: DBAL-1130 #784 Connection is not lazy anymore, since platform detection was introduced - exposing the issue via broken test
Deprecations:
916: Fix return type of Table#renameColumn() and mark it as deprecated thanks to @aivus
1276: DBAL-1318 #916 Fix return type of Table#renameColumn() and mark it as deprecated
2782: Stop using the deprecated json_array type internally thanks to @lcobucci
New Features:
718: Identify retryable transaction errors and cause them to raise specific exception types thanks to @Tobion
798: Add application_name to PostgreSQL driver connection thanks to @davividal
814: Allow serverVersion to be explicitly unspecified (null) thanks to @BreiteSeite
819: Added support for column inline comments in SQLite thanks to @hason
824: DBAL-1143 Added Postgres 9.4 platform thanks to @mbeccati
854: add DateInterval type thanks to @vbartusevicius
892: DDC-3863 add a json type that doesn't have the flaws of json_array thanks to @Taluu
919: add sslrootcert connection option to the pdo_pgsql driver thanks to @peterjmit
1028: DBAL-1091 #755 Update MysqliStatement to emulate PDO::FETCH_OBJ behavior
1043: DBAL-1104 DBAL-1104 #766 Add support for object hydration in oci8 driver
1086: DBAL-1143 add JSONB type to PostgreSQL
1127: DBAL-1184 DBAL-1143 #824 Added Postgres 9.4 platform
1176: DBAL-1228 #854 add DateInterval type
1280: DBAL-1321 #919 add sslrootcert connection option to the pdo_pgsql driver
1882: DBAL-662 Support DateTimeImmutable
2266: Add native JSON type support for MySQL >=5.7.8 thanks to @ismailbaskin
2284: Added parameter default_dbname to pdo_pgsql driver, used to override the default database thanks to @kimhemsoe
2306: Add "easy connect string" support for the Oci8Driver thanks to @bobvandevijver
2307: Add support for Easy Connect string as connection parameter in OracleDB thanks to @bobvandevijver
2450: Add immutable date types support thanks to @deeky666
2455: Use native JSON type on MySQL >=5.7 thanks to @rh389
2570: Allow secure connections using SSL on mysqli thanks to @pgrau
2688: Support IS NULL checking in Connection#delete() and Connection#update() generated criteria, allowing for null column searches thanks to @jnvsor
Bug Fixes:
713: Prevent result cache key collisions when sharing caches across different connections thanks to @vilartoni
784: Connection is not lazy anymore, since platform detection was introduced - exposing the issue via broken test thanks to @weaverryan
827: Fix DISTINCT queries with LIMIT and no ORDER on SQLServer 2012 thanks to @billschaller
871: SqlConsoleCommand should show results of queries containing RETURNING thanks to @bountin
918: Fix typo in DBALException message thanks to @chadrien
923: DBAL-1302 Avoid rewrapping Docrine\DBAL\Exception\DriverException with nested drivers thanks to @mathroc
924: Correcting reference to the Connection#rollBack() method - case sensitivity thanks to @rawkode
1018: DBAL-1082: SchemaTool does not generate DDL for MySQL unsigned float
1019: DBAL-1083 DBAL-1082 #749 Fix SchemaTool, which does not generate DDL for MySQL unsigned float
1130: DBAL-1187 #827 Fix DISTINCT queries with LIMIT and no ORDER on SQLServer 2012
1138: DBAL-1194 #832 Fix test failures on Windows due to differing newlines
1139: DBAL-1196 #834 Remove documentation for non-existing events from Connection#rollBack() docblock
1281: DBAL-1322 Correct typo in driver exception message
1344: DBAL-1783 #924 Correcting reference to the Connection#rollBack() method - case sensitivity
2250: Unit tests are failing on OracleDB thanks to @DeepDiver1975
2252: ModifyLimitQueryTest::testModifyLimitQuerySubSelect() fails on OracleDB thanks to @DeepDiver1975
2253: SchemaManagerFunctionalTestCase::testDropsDatabaseWithActiveConnections() fails on OracleDB thanks to @DeepDiver1975
2254: Correct SchemaManagerFunctionalTestCase::testDropsDatabaseWithActiveConnections() on OracleDB thanks to @DeepDiver1975
2255: Use shorter table names, as OracleDB allows max 30 characters thanks to @DeepDiver1975
2263: Fix failing unit tests on OracleDB thanks to @DeepDiver1975
2276: Fix test case on OracleDB thanks to @deeky666
2335: Correct case sensitivity of usages of the Connection#rollBack() method thanks to @kadala
2314: DateIntervalType supports conversion of invalid values thanks to @MisatoTremor
2316: Fix DateInterval database value truncation (string overflow) thanks to @vbartusevicius
2372: Handle arbitrary whitespaces when parsing SQL in order to apply LIMIT for MS SQL Server thanks to @morozov
2413: Ensure deterministic results in the ModifyLimitQueryTest, which may otherwise fail depending on database settings and provisioning thanks to @Deltachaos
2427: Postgres SchemaManager is reading a default of -1 as (-1) for postgres 9.4 thanks to @DeepDiver1975
2565: Both PostgreSQL 9.5 and PostgreSQL 9.6 are currently failing on Travis thanks to @photodude
2592: Ensure the database name is always provided when trying to use pgsql in the test suite thanks to @mikaelkael
2594: Schema generator is not adding COMMENT to custom types thanks to @fkrauthan
2595: assertValidIdentifier() is too restrictive against OracleDB schema object naming rules thanks to @IMP3ter
2604: DBAL-2595 Fix retrieving last insert ID for FQN sequence name with OCI8 - allows . symbol in sequence names thanks to @deeky666
2614: DBAL-2427 Fix negative default value introspection on PostgreSQL 9.4 thanks to @deeky666
2631: Fix CREATE/DROP DATABASE support on SQL Server thanks to @deeky666
2632: Fix "application_name" connection parameter tests for PostgreSQL < 9.2 thanks to @deeky666
2640: Fix drivers' exec() method to not execute queries via prepared statements thanks to @deeky666
2669: Add missing SSL parameters to the pdo_pgsql driver thanks to @fsok
2671: DBAL-990 Attempt platform detection even when the database name is not set thanks to @deeky666
2674: Correct testListTableColumns checked keys thanks to @mdwheele
2692: Fix default isolation level for the MySqlPlatform thanks to @jnvsor
2701: DB2SchemaManager#listTableNames() does not call filterAssetNames thanks to @asgrim
2702: Added missing filtering of table name assets in DB2SchemaManager thanks to @asgrim
2709: Adding PDO as hard dependency as per discussion in #808 thanks to @Ocramius
2733: Correct documented parameter and return types for Connection#quote() thanks to @lolli42
2745: Wrong Connection#quote() parameter hinting, incompatible with PDO::PARAM_* constants thanks to @helsner
2747: Correct Connection#quote() parameter hinting, now compatible with PDO::PARAM_* constants thanks to @helsner
Improvements:
768: DBAL-1106 Improve schema introspection performance on Oracle thanks to @deeky666
779: DBAL-1123 Initialize database schema only once per PHPUnit run thanks to @deeky666
781: Call detectDatabasePlatform only once thanks to @rosier
810: Remove redundant Connection#connect() calls thanks to @rosier
829: Add PostgreSQL connection test with the new charset parameter thanks to @billschaller
841: Documentation and code styling fixes thanks to @BenMorel
848: DBAL-1219 Add missing IBMDB2 driver functional tests thanks to @deeky666
867: Add test for schema diffing on a table with a renamed foreign key column referencing a renamed table thanks to @billschaller
869: Make date and time types throw exception when invalid values are passed to convertToDatabaseValue thanks to @billschaller
897: Various typo and wording fixes in the codebase thanks to @SpacePossum
899: add requiresSQLCommentHint in DateIntervalType thanks to @vbartusevicius
902: #869 cleanups and hardening of tests around date-related types thanks to @Ocramius
966: DBAL-1035 #718 Identify retryable transaction errors and cause them to raise specific exception type
1011: DBAL-1076: #745 Added doModifyLimitQuery for the SQLServer2012Platform, which uses OFFSET... FETCH instead of LIMIT
1045: DBAL-1106 DBAL-1106 #768 Improve schema introspection performance on Oracle
1068: DBAL-1127 #781 Call detectDatabasePlatform only once
1085: DBAL-1142 #796 Map tsvector type as text in PostgreSQL Platform
1089: DBAL-1146 #798 Add application_name to PostgreSQL driver connection
1103: DBAL-1161 #810 Remove redundant Connection#connect() calls
1109: DBAL-1167 #814 allow serverVersion to be explicitly unspecified (null)
1118: DBAL-1176 #819 Added support for column inline comments in SQLite
1134: DBAL-1190 #829 Add PostgreSQL connection test with the new charset parameter
1155: DBAL-1209 #841 Documentation and code styling fixes
1166: DBAL-1219 DBAL-1219 #848 Add missing IBMDB2 driver functional tests
1199: DBAL-1249 #869 Make date and time types throw exception when invalid values are passed to convertToDatabaseValue
1213: DBAL-1261 return callable result from Doctrine\DBAL\Connection::transactional()
1238: DBAL-1284 #897 Various typo and wording fixes in the codebase
1242: DBAL-1288 #899 add requiresSQLCommentHint in DateIntervalType
1247: DBAL-1292 Drop PHP 5.3 support
1248: DBAL-1293 Make date and time types throw exception when invalid values are passed to convertToDatabaseValue
1249: DBAL-1294 #869 #902 cleanups and hardening of tests around date-related types
2309: Remove useless ternary in the DecimalType thanks to @JHGitty
2317: Add the ReservedWordsCommand -l or --list parameter to the usage hints thanks to @rquadling
2349: Fluent methods in QueryBuilder are now documented as returning self thanks to @mrclay
2363: Add test case scenario for LIMIT/OFFSET when selecting from a sub-SELECT thanks to @Deltachaos
2419: Remove PHP 5.5 support thanks to @Ocramius
2422: Map custom exceptions for the "no default value" (1364) error in the MySQL drivers thanks to @MorrisJobke
2425: Explicitly use CompositeExpression#count() method rather than count($this) thanks to @Progdom
2432: Removed nearly all call_user_* usages thanks to @kimhemsoe
2437: Improve the phpdoc on Connection thanks to @mnapoli
2485: Remove unused parameter from ConversionException::conversionFailedSerialization() thanks to @greg0ire
2493: Reuse prepared statements in the SQL Server driver thanks to @morozov
2494: Use the same statement resource for repeated execution of the same statement on SQL Server thanks to @morozov
2495: Optimize and improve parameter conversion in OCI8Statement thanks to @morozov
2547: Replacing spaces in the pgsql DSN string with semicolons for consistency with pdo_pgsql thanks to @chrisissorry
2603: DBAL-2594 Implicitly mark types as commented in all platforms thanks to @deeky666
2622: Remove dead code from MasterSlaveConnection::connect() thanks to @jnvsor
2630: DBAL-2626 Add PHPUnit config for ContinuousPHP OracleDB testing thanks to @deeky666
2653: Merge MySQL 5.7.9 (GA) semantics into MySQL57Platform thanks to @deeky666
2657: Enhance phpdoc of QueryBuilder::setParameter() thanks to @ufomelkor
2658: Making the DBALException implement Throwable thanks to @svycka
2704: Add error as well as exception handling to Mysqli drivers thanks to @develancer
2724: Improve Table#getColumns() performance by reducing its runtime complexity thanks to @evgpisarchik
2735: Mysqli is missing some driver connection options thanks to @leadboots5
2742: Use short array declarations in the Driver namespace thanks to @alessandrominoccheri
2746: Using short array declarations in the MasterSlaveConnection namespace thanks to @alessandrominoccheri
2768: Add all missing MariaDB keywords to the MySQL platform thanks to @roelvanduijnhoven
2774: Use short array declarations in the Query namespace thanks to @alessandrominoccheri
2776: Use short array declarations in the Sharding namespace thanks to @alessandrominoccheri
2778: Use short array declaration inside the Tools namespace thanks to @alessandrominoccheri
2786: Map error code 1429 to ConnectionException in the AbstractMySQLDriver thanks to @SpacePossum
Documentation Improvements:
761: Fixed typo in types documentation thanks to @BenMorel
834: Remove documentation for non-existing events from Connection#rollBack() docblock thanks to @slider
901: Update docs dependencies script and readme to target Ubuntu 14.04 thanks to @billschaller
904: Fix tearDown of some functional test cases thanks to @deeky666
907: Corrected MySQL collation support documentation thanks to @mroca
909: Fix typo in transactions documentation thanks to @xelan
915: Correcting 2 anchors in the docs that don't exist anymore thanks to @mikesimonson
1034: DBAL-1098 #761 Fixed typo in types documentation
1245: DBAL-1290 #901 Update docs dependencies script and readme to target Ubuntu 14.04
1257: DBAL-1300 #907 Corrected MySQL collation support documentation
1260: DBAL-1303 #909 Fix typo in transactions documentation
1275: DBAL-1317 #915 Correcting 2 anchors in the docs that don't exist anymore
2271: Correct minor formatting glitches in the transactions documentation thanks to @jonpasquier
2290: Document exceptions for retryable transactions thanks to @deeky666
2293: Fixed some broken links in the types documentation thanks to @jeancarlomachado
2322: Improve overall DBAL raised Events documentation thanks to @senseexception
2382: Remove arbitrary line number from github link in the caching documentation thanks to @jacobhenke
2453: Documentation for test suite runner references non-existing files thanks to @miholeus
2454: #2453 Update test runner parameters in the documentation thanks to @miholeus
2521: Reference global namespace classes via FQCN in the transactions documentation thanks to @frost-nzcr4
2599: Corrected styling around the GUID type in the types documentation thanks to @tolbon
2623: Generic SQL Sharding Support - Documentation of the wrapperClass parameter is invalid thanks to @ivanbogomoloff
2641: DBAL-2623 Fix Generic SQL Sharding Support documentation examples thanks to @deeky666
2664: Add oci8 persistent connection support to the configuration documentation thanks to @mathieubouchard
2703: Correct documentation examples for the Doctrine\DBAL\Id\TableGenerator thanks to @justblackbird
2736: Correcting references to Driver\Connection in the documentation thanks to @b0nd0
2740: Correct classes referenced in the Driver implementation details in the documentation thanks to @b0nd0
2760: Add documentation regarding transactional exceptions thanks to @dsantang
2761: Fix documentation format regarding retryable exceptions thanks to @dsantang
2770: Fix namespace separator in the exceptions in the transactional handling documentation thanks to @Tobion
Chore:
770: Moved Doctrine\Tests namespace to composer autoload-dev thanks to @guilhermeblanco
778: DBAL-1122 Cleanup PHPUnit test suite bootstrap thanks to @deeky666
787: Add left-over console file to the mapped composer binaries thanks to @t0xiccode
825: Add postgresql 9.4 to travis builds thanks to @billschaller
830: README.md nicer badges, cleanup, 2.3 dropped thanks to @tomasvotruba
832: Fix test failures on Windows due to differing newlines thanks to @billschaller
837: Revert the addition of the wrong bin script to composer.json thanks to @stof
853: Remove HHVM-nightly builds thanks to @stof
876: Remove unused git submodules thanks to @koc
880: Drop PHP 5.3 from Travis-CI build matrix thanks to @billschaller
884: Travis-CI - Switch to container-based infrastructure thanks to @tomasvotruba
888: Allow testing against doctrine/common 2.6 thanks to @nicolas-grekas
911: Fix test suite on windows: skip on missing extensions, correct path flags thanks to @Tobion
917: Remove GIT submodule entries and use autoload-dev for the test suite thanks to @Tobion
992: DBAL-1059: #735 Bump branch alias to version 2.6.0-DEV
1006: DBAL-1071: #740 Add 2.5 build status to README.md
1031: DBAL-1094: #758 Cleanup travis database creation
1050: DBAL-1110 #770 Moved Doctrine\Tests namespace to composer autoload-dev
1063: DBAL-1122 #778 Cleanup PHPUnit test suite bootstrapper
1064: DBAL-1123 #779 Initialize database schema only once per PHPUnit run
1075: DBAL-1133 #787 Add left-over console file to the mapped composer binaries
1128: DBAL-1185 #825 Add postgresql 9.4 to travis builds
1135: DBAL-1191 #830 README.md nicer badges, cleanup, 2.3 dropped
1143: DBAL-1199 #837 Revert the addition of the wrong bin script to composer.json
1174: DBAL-1226 #853 Remove HHVM-nightly builds
1209: DBAL-1258 #876 Remove unused git submodules
1215: DBAL-1263 #880 Drop PHP 5.3 from Travis-CI build matrix
1219: DBAL-1267 #884 Travis-CI - Switch to container-based infrastructure
1226: DBAL-1273 #888 Allow testing against doctrine/common 2.6
1252: DBAL-1297 #904 Fix tearDown of some functional test cases
1277: DBAL-1319 #917 Remove GIT submodule entries and use autoload-dev for the test suite
1282: DBAL-1323 Remove submodule entries and improve test setup
2274: Removed 2.4.x build status from README.md thanks to @Ocramius
2278: Allow PHP 7 failure on Travis-CI thanks to @deeky666
2282: Allow PHP 7 + pdo_pgsql failures on Travis-CI again thanks to @deeky666
2340: Fix SQL queries numbering in test failure output thanks to @guilliamxavier
2364: Display further contextual information on failed functional tests thanks to @Deltachaos
2435: Replace getMock() with createMock() thanks to @deeky666
2488: Blacklist buggy phpunit-mock-objects v3.2.5 from the dev dependencies thanks to @greg0ire
2480: Exclude buggy phpunit-mock-objects v3.2.4 from the allowed dev dependencies thanks to @greg0ire
2550: Bump HHVM version to 3.15.2+ thanks to @photodude
2564: Add PostgreSQL 9.6 to the build pipeline thanks to @photodude
2590: Remove support for PHP 5.x thanks to @railto
2607: DBAL-2565 Remove fragile test that cannot be abstracted across all PostgreSQL versions thanks to @deeky666
2626: Test OracleDB abstractions in a continuous integration environment thanks to @photodude
2629: HHVM testing needs to be in PHP 7 mode thanks to @photodude
2633: Run SQL Azure tests conditionally thanks to @deeky666
2655: Simplify Travis-CI build matrix thanks to @photodude
2660: Revert PgSQL and MariaDB Travis-CI build matrix simplification thanks to @photodude
2732: Update docs/en/_theme submodule references thanks to @eibt
2750: Require PHP 7.1 thanks to @lcobucci
2755: Ensure compatibility with different MySQL versions thanks to @lcobucci
2756: Add Scrutinizer-CI to the build pipeline thanks to @malukenho
2757: Add mysql version 5.6 and 5.7 to Travis-CI thanks to @epinxteren
2758: Generate code coverage via PHPUnit, pass it to Scrutinizer-CI thanks to @malukenho
2764: Add mysql versions 5.6 and 5.7 to Travis-CI thanks to @zghosts
v2.5.13 - Jul 22, 2017
This release fixes a number of issues around the PostgreSQL,
OracleDB and MySQL platforms database introspection.
Connection DSN generation fixes were applied for the
SQLAnywhere driver.
Corrections on how record fetching mode have been applied to
the DB2 driver.
Fixes were applied to the handling of cursors and result
caching with pdo_sqlsrv.
Total issues resolved: 16
889: #1234 On OracleDB, a "Table has no primary key" error is raised when the index and the constraint name don't match thanks to @nitso
1131: DBAL-1188: OracleDB: List table columns are returned in the wrong order thanks to @doctrinebot
1234: DBAL-1280: "Table has no primary key" when generating entities for Oracle tables thanks to @doctrinebot
2405: SQLAnywhere corrections for DSN generation and persistent connections thanks to @andipohl
2647: DBAL-2644: Fix fetchAll(PDO::FETCH_COLUMN) on DB2 with Portability wrapper thanks to @morozov
2650: Fix result cache and PDO connection test on pdo_sqlsrv thanks to @deeky666
2651: Fix closing statement cursor on pdo_sqlsrv if not executed yet thanks to @deeky666
2654: Make functional sqlanywhere driver tests conditional thanks to @deeky666
2670: Slash before _ in postgresql LIKE condition with any pg_ prefix to prevent confusion with the wildcard character thanks to @blackbjorn
2673: #1131 On OracleDB, getListTableColumnsSQL returns columns ordered by position instead of by name thanks to @mdwheele
2686: #889 On OracleDB, primary key is considered missing if index_name != constraint_name thanks to @SkydiveMarius
2696: MySQL: Fix primary key alteration when adding new columns thanks to @drieschel
2714: Sequence::isAutoIncrementsFor() is not normalising PK column, and is unable to distinguish different casing thanks to @dhensby
2715: #2714 Sequence::isAutoIncrementsFor() is now case-insensitive thanks to @dhensby
2720: SQLParserUtils::getPlaceholderPositions() fails if there are quoted strings containing only backslashes thanks to @mondrake
2730: Corrected duplicate COMMENT part in DDL statement thanks to @mondrake
v2.5.12 - Feb 8, 2017
This release fixes some regressions introduced in OracleDB support in 2.5.11.
Specifically, closing a cursor caused an ORA-01002 exception to be raised
in some scenarios.
Further fixes include:
support for dropping "in use" databases in OracleDB and SQL Server (must disconnect first)
corrections in how the last insert ID is fetched on SQL Server
re-use of parameters bound to an sqlsrv statement via bindValue()
Total issues resolved: 8
2634: Fix fetching last insert ID for sequences on SQL Server
2635: Fix date diff test
2636: Fix dropping in use databases on SQL Server and Oracle
2637: ORA-01002: fetch out of sequence
2638: Tear down active transactions in functional test cases
2639: Update Version.php
2645: DBAL-2637 Fix closing prepared statement cursor with LOB column on Oracle
2646: Fix the reuse of a statement on sqlsrv with explicit bindValue()
v2.5.11 - Feb 4, 2017
This release fixes a number of inconsistencies around prepared statements
when closeCursor() is called, or when a prepared statement is re-used
multiple times.
Total issues resolved: 5
2487: Store results of subsequents statement executions same as of the first one
2489: Rebind row values to the statement after freeing result
2536: Bind result variables after each execution in order to prevent string truncation
2546: Prepared statements become unusable after calling closeCursor() on IBM DB2, Oracle and MS SQL Server.
2557: Inconsistent semantics of close cursor
v2.5.10 - Jan 23, 2017
This release fixes:
some PHP 5.3 compatibility issues that caused the test suite to fail
for the previous release
index renaming for indexes that had particular assigned options, and
that were being added rather than renamed or recreated under a different
name
date and datetimetz OracleDB type introspection: these two types
were incorrectly recognized as datetime
Total issues resolved: 4
2508: Renaming index does not rename the index, but creates new one
2555: schema generation maps oracledb DATE fields to datetime
2611: #2508 Pass through index options when renaming index on table
2612: #2555 Fix date and datetimetz type mapping on Oracle
v2.5.9 - Jan 19, 2017
This release fixes an issue with type information passed to Connection#update(),
which was incorrectly handled if the updated columns and the identifier columns
had equivalent keys.
Also, the generated current date and time SQL expressions for SQL Server were fixed.
Total issues resolved: 4
2511: DBAL Connection::update() - types list does not match the parameter list if fields are used in SET and WHERE clause
2586: SQL-Server : issue on getCurrentDateSql()
2608: DBAL-2586 Fix current date and time SQL generation on SQL Server
2609: DBAL-2511 Fix type list extraction in connection update method
v2.5.8 - Jan 17, 2017
This release fixes some issues around LIMIT/OFFSET handling in DB2, OracleDB, SQL Server:
Allowing LIMIT/OFFSET modification without LIMIT on OracleDB
Allowing LIMIT/OFFSET modification with OFFSET = 0 on DB2
Avoiding an accidental infinite loop in LIMIT/OFFSET modification on SQL Server
Total issues resolved: 4
2408: Hotfix 2313 infinite loop
2463: IBM_DB2 platform doesn't handle offset without limit
2509: Oracle platform ignores OFFSET in case if LIMIT is not specified
2602: Backport #2408
v2.5.7 - Jan 14, 2017
This release fixes some OracleDB and PostgreSQL specific issues.
Introspecting table columns on OracleDB when using a non-default schema caused SQL error ORA-01427
SQL parameter expansion was broken when using the ARRAY[] expression on PostgreSQL
Total issues resolved: 9
2496: Fix parameter list expansion inside PostgreSQL arrays
2515: PHP Warning when listing table columns in Oracle
2516: #2515 fix schema listing when having identical tables in databases
2517: ORA-01427 when listing table columns
2518: Fixed ORA-01427 when listing columns
2522: OraclePlatform - ORA-01427: single-row subquery returns more than one row
2549: Oracle column metadata import fix
2584: Doctrine:Schema:Validate leeds to ORA-01427(single-row subquery returns more than one row)
2585: OraclePlatform : Add an owner condition to the list table column comment subquery
v2.5.6 - Jan 12, 2017
Total issues resolved: 1
2569: Allow doctrine/common 2.7
v2.5.5 - Sep 9, 2016
842: Fixed incorrect handling of single quotes in SQL-Strings
856: MySQL getListTableForeignKeysSQL: use current database if null passed
861: Check for foreign table name on removed tables foreign key
862: Quote table and constraint names in drop foreign key / drop constraint SQL
863: Strip leading slash of databasename from URL
925: Fixing the command when option is CURRENT_SCHEMA
1054: DBAL-1114: Problem with drop database on PostgreSQL
1106: DBAL-1164: Creating SQLite Connections via a URL Does Not Work
1151: DBAL-1205: getPlaceholderPositions finds placeholders which are actually no placeholder if string contains single quotes
1183: DBAL-1234: Additional slash in dbname when providing settings as URL without scheme
2182: DBAL-939: schema update doesnt detect boolean type correctly
2261: OCI8 - bindValue overwrite previous values
2262: Issue #2261 - OCI8 Driver PHP 7 - Fix bindValue overwriting other params.
2267: Pass "path" to pdo-sqlite drivers from DriverManager instead of "dbname"
2270: SqlitePlatform does not escape table name on truncate
2275: Quote reserved keywords in TRUNCATE TABLE SQL
2277: [DBAL-939] Fix reverse engineering boolean type columns on DB2
2279: Stop using template1 as default database for postgres drivers
2286: Fix list foreign keys SQL database parameter evaluation
2287: Fix parsing schemeless connection URLs
2288: Preserve quotation of old column name in ColumnDiff
2291: The QueryBuilder::getSQLForSelect() always appends a FROM clause for select queries
2292: Do not generate FROM clause in QueryBuilder if no tables specified
2302: when use \Doctrine\DBAL\Schema\Comparator to compare two table schema, has a problem
2303: Fix another primary key alteration with autoincrement column case on MySQL
2310: [DB2] Move row number to the end of the field list in query limit/offset modification
2318: [Oracle] Fix list table columns when using external or OS authentication with Oracle
2384: Fluent methods in QueryBuilder are now documented as returning $this
2386: Fix oci driver bindValue overwrite with php7
2390: Catch Throwable in Connection::transactional()
2403: fix grammar in DBALException messages
2428: Modify Limit Query on SQLServer2012 with newline before ORDER BY
2434: Keep references to bound parameter values in oci8 driver
2436: MySqlPlatform::getListTableColumnsSQL() is not escaping names
2440: No parameters passed to logger when executing statement using bindParam
2442: Escape identifiers in metadata SQL properly when used as string literal
2443: Track the Values & Types Passed to Statement::bindParam
2484: Allow usage of symfony/console ^3.0 in dev dependencies
2497: ResultStatement::fetch() returns null instead of false with mysqli
2500: Making sure that fetch returns false if nothing is found
v2.5.4 - Jan 5, 2016
Total issues resolved: 3
2249: Compatibility mis-match? PGSQL_ATTR_DISABLE_PREPARES in v2.5.2 (in a PHP 5.6.16 envt)
2272: [DBAL-1779] Fix string column type declarations with whitespace on SQLite
2273: Fix usage of PDO::PGSQL_ATTR_DISABLE_PREPARES for edge case pdo_pgsql setups
v2.5.3 - Dec 25, 2015
Total issues resolved: 2
818: Rebuild SQLServerPlatform::doModifyLimitQuery again to use a CTE
2268: #2260 - loosening doctrine/common requirement: allowing 2.6.x
v2.5.2 - Sep 16, 2015
Total issues resolved: 24
Bug
[DBAL-1115] - [GH-773] Fix quoted identifiers for database creation SQL on SQL Anywhere
[DBAL-1121] - [GH-777] Make host and server connection parameters optional for sqlanywhere driver
[DBAL-1128] - [GH-782] Fix: SQLite offset with no limit support
[DBAL-1132] - [GH-786] Fix removing autoincrement column from a primary key
[DBAL-1137] - Infinite recursion on non-unique table/join alias in QueryBuilder
[DBAL-1154] - [GH-806] Fix broken functional test for SQL server
[DBAL-1169] - [GH-815] Fix for inconsistent use of getSQLDeclaration
[DBAL-1181] - [GH-822] Fix for bad profiling data, showing an indefinitely long query
[DBAL-1183] - [GH-823] fix client_encoding setting to support pgbouncer
[DBAL-1186] - [GH-826] fix incorrect ordering of columns in clustered indexes on sql server
[DBAL-1189] - [GH-828] rehashed charset implementation to support old versions of postgresql
[DBAL-1192] - [GH-831] allow hhvm/mysqli failure so poor travis can feel better
[DBAL-1215] - [GH-844] template1 as default database for PostgreSQL
[DBAL-1217] - [GH-846] Fix retrieving the database name connected to for SQL Server
[DBAL-1218] - [GH-847] [DBAL-1217] Fix retrieving the database name connected to for SQL Anywhere
[DBAL-1220] - [GH-849] Fix dropping database with active connection on PostgreSQL
[DBAL-1233] - TEXT type in MSSQL should be NVARCHAR(MAX) not VARCHAR(MAX)
[DBAL-1240] - [GH-864] Fix undefined notices within MasterSlaveConnection
[DBAL-1260] - [GH-878] Fix call on non-object in ping() with PDO wrapper
[DBAL-1296] - [GH-903] Override methods for sharding connection
Documentation
[DBAL-1174] - [GH-817] Fixed a minor typo
Improvement
[DBAL-1159] - [GH-809] travis: PHP 7.0 nightly added
[DBAL-1270] - [GH-886] Add test for MariaDB 5.5, 10.0 and 10.1 on Travis
Task
[DBAL-1299] - [GH-906] [2.5] Fix allowed failures for HHVM + MariaDB builds on Travis
v2.5.1 - 12 January 2015
Total issues resolved: 24
Bug
[DBAL-1033] - [GH-716] Do not TRIM() parentheses around partial indexe conditions
[DBAL-1038] - [GH-720] Type json_array is not consistent with NULL values
[DBAL-1051] - [GH-730] Update index name quoting in MySQL table creation
[DBAL-1058] - It seems that MSSQL syntax was changed
[DBAL-1060] - [GH-736] [DBAL-1058] Fix database and namespace introspection for SQL Server
[DBAL-1062] - upgrade from v2.4.3 to v2.5.0 is forcing recreating Indexes making Doctrine unusable
[DBAL-1063] - Exceptions from SchemaTool when running with DBAL 2.5.0
[DBAL-1072] - [GH-741] [DBAL-1051] Quote index name in inline index declaration SQL
[DBAL-1073] - [GH-742] Take care about mariadb platform
[DBAL-1087] - [GH-751] Length of fixed string type (char) is ignored on Postgre schema update
[DBAL-1088] - [GH-752] Fix error handling restore
[DBAL-1090] - [GH-754] Changing string to fixed string is not recognized in PostgreSQL Platform
[DBAL-1092] - [GH-756] [DBAL-1062] Fix renaming indexes used by foreign key constraints
[DBAL-1093] - [GH-757] Fix creating and dropping database on PostgreSQL
[DBAL-1095] - [GH-759] [DBAL-1095] Fix index introspection on SQL Anywhere
[DBAL-1097] - [GH-760] [DBAL-1097] Fix foreign key constraint referential action on Oracle
[DBAL-1100] - [GH-762] PostgreSQL needs explicitly closed connection in functional test
[DBAL-1102] - [GH-764] [DBAL-1063] Allow defining duplicate indexes on a table
[DBAL-1109] - unique-constraints names not quoted on create
[DBAL-1111] - [GH-771] Fix unique index exception handling for an index on multiple columns in PHP 5.4
Documentation
[DBAL-1075] - [GH-744] Removed non-phpdoc @internal tags
[DBAL-1078] - [GH-746] minor phpdoc fixes in the platform files
Improvement
[DBAL-1079] - [GH-747] minor phpdoc fixes in the schema files
[DBAL-1108] - [GH-769] Allow overriding implicit indexes
v2.5.0 - 4 December 2014
The following list contains the major new features of DBAL:
Support for SAP Sybase SQL Anywhere versions 10, 11, 12 and 16 (DBAL-475)
Support for auto-commit=NO on all drivers and platforms. (DBAL-81)
Refactor exceptions to use common error-codes and exception classes that derive from Doctrine\DBAL\DBALException. (DBAL-407)
Add support to retry connections with Doctrine\DBAL\Connection#ping() method. (DBAL-275)
Add INSERT support to QueryBuilder (DBAL-320)
Add Binary type for VARBINARY support (DBAL-714)
Add charset and SSL connection support to PostgreSQL (DBAL-567, DBAL-702)
Add options support for Myqli (DBAL-643)
Add support for using database uris with the url parameter in DriverManager::getConnection() which supports several forms used by PaaS providers out of the box (DBAL-1050).
Auto detection of platform to use based on database (DBAL-757)
Improved SQL Server LIMIT emulation support. (Multiple tickets)
Improvements to HHVM Support (no full support yet)
v2.4.3 - 16 October 2014
Total issues resolved: 12
DBAL-760 - Don't return warnings as errors in sqlsrv driver #490
DBAL-766 - PostgreSQL: Fix statement for getTableWhereClause method #492
DBAL-759 - Fix driver error while introspecting sequences in SQL Server 2012 #489
DDC-2883 - DBAL-766 - PostgreSQL: Fix statement for getTableWhereClause method #492
DBAL-787 - Fix modifying limit/offset for statements with subqueries on SQL Server #512
DBAL-792 - Fix sqlite autoincrement detection #515
#625 - Fix pg boolean conversion
DBAL-950 - Backport #625 - pgsql boolean conversion
DBAL-951 - Remove duplicate suggest section in composer.json #641
DBAL-963 - Add close() method in MasterSlaveConnection.php #652
DBAL-976 - Fix evaluation of NOLOCK table hint on SQL Server #663
DBAL-1006 - DBAL-717 - DBAL-335 - Fix bug in MasterSlaveConnection with keepSlave option and switch back after transaction #690
v2.4.0 - 7 September 2013
[DBAL-340] - [GH-196] Fixed mini-typo
[DBAL-344] - [GH-200] params not passed from execute to logger
[DBAL-350] - [GH-205] Added exit code for dbal:reserved-words command
[DBAL-355] - [GH-208] Optimize autoload prefix in composer.json
[DBAL-356] - [GH-209] Added query micro-optimization
[DBAL-366] - [GH-218] [MySQL] Fixed bug with comments not adding quotes for
tables
[DBAL-370] - [GH-220] Added support for alter table, foreign keys and
autoincrement detection to Sqlite platform and schema
[DBAL-381] - [GH-227] MySql TEXT and BLOB type declarations
[DBAL-383] - [GH-228] fixed typo for enabling DEFERRED support
[DBAL-396] - [GH-236] DBAL-200 Missing docs for 1 parameter in
Connection::update
[DBAL-417] - [GH-250] Lightweight export as of doctrine/doctrine2#543
[DBAL-431] - [GH-261] Fix OFFSET without LIMIT cause MySQL syntax error.
[DBAL-432] - [GH-262] Add Symfony Console dependency to composer.json
[DBAL-435] - [GH-264] Allow passing empty arrays as parameters
[DBAL-438] - [GH-266] Removed outdated methods in DatabasePlatformMock.
[DBAL-439] - [GH-267] Add SQLServerPlatform supports schemas
[DBAL-440] - [GH-268] Remove deprecated getShowDatabasesSQL() from Platforms
[DBAL-442] - Break the query building with multiple from parts
[DBAL-445] - [GH-271] added the possibility to use column names as keys for
the types in Connection::insert()
[DBAL-447] - [GH-272] Refactor SQL Server keyword dictionaries and MsSQL
leftovers
[DBAL-455] - [GH-278] OraclePlatform sequence naming for primary keys
[DBAL-459] - [GH-282] Add column collation support for SQL Server
[DBAL-460] - [GH-283] Fix SchemaManagerFunctionalTestCase composite foreign
keys test
[DBAL-462] - [GH-284] Correcting code example
[DBAL-473] - [GH-292] Add length in the OCI8 bindParam
[DBAL-476] - [GH-294] Allow removing column comment on some platforms
[DBAL-478] - [GH-295] Fix ModifyLimitQueryTest
[DBAL-484] - [GH-298] Fix SQL Server default constraints
[DBAL-485] - [GH-299] Fix list SQL Server composite foreign keys
[DBAL-486] - [GH-300] Improve list SQL Server table indexes
[DBAL-494] - [GH-304] Fix for DBAL-442
[DBAL-497] - SQLServerPlatform modifies limit query incorrectly when column
names start with "from"
[DBAL-498] - [GH-306] [DBAL-497] Fixed SQL Server platform replacing 'FROM' in
column names during limit
[DBAL-499] - [GH-307] Postgres fix for a possible unavailable dbname
[DBAL-500] - [GH-308] added index flags to schema table
[DBAL-506] - [GH-312] [DBAL-264] Support for UIDs in PostgreSQL
[DBAL-508] - MySqlSchemaManager accessing undefined index tableColumn[comment]
[DBAL-511] - Schema\ColumnDiff incorrect with default varchar value and
postgresql
[DBAL-520] - [GH-319] Delete unnecessary "use PDO" statement
[DBAL-522] - BC break : executeQuery with an array containing null value(s).
[DBAL-530] - sqlite: foreignKey - definition wrong when tables has
databasename as prefix
[DBAL-533] - [GH-327] #DDC-2313: QueryBuilder Deep Cloning
[DBAL-539] - [GH-332] [DDC-2470] Use column name instead of alias to modify
order by clause
[DBAL-549] - [GH-339] Removed an unused method in AbstractPlatform.
[DBAL-568] - [GH-348] Portability wrapper _defaultFetchMode
[DBAL-583] - [GH-360] Don't add 'NOT NULL' to the 'ALTER TABLE' when that
hasn't changed
Improvement
[DBAL-331] - [GH-192] ExpressionBuilder in and notIn methods
[DBAL-403] - [GH-240] Fix for DBAL-209
|