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
|
===============================================================================
12/30/2009 - jTDS 1.2.5 released
===============================================================================
Changes from jTDS 1.2.4
=======================
12/30/2009 - Holger Rehn
o Corrected bug [2900139], NoClassDefFoundError with C3P0.
o Corrected bugs [2856350], [2898905], problems with JDBC4 stubs in GlassFish.
o Modified build process to remove JDBC4 stubs, feature request [2905814].
12/09/2009 - Holger Rehn
o Updated JCIFS to version 1.3.12
o Corrected bug [2911266], Default response timeout of 30 seconds if using
named pipes via JCIFS.
12/06/2009 - Holger Rehn
o Implemented PreparedStatement.toString(), feature request [2909009].
11/05/2009 - Holger Rehn
o Corrected bug [2892493], NullPointException when receiving character NULL
values (MS SQL Server 7.0 and later).
11/04/2009 - Holger Rehn
o Corrected bug [2891775], fix for [2340241] has broken Java 1.3 compatibility.
10/22/2009 - Holger Rehn
o Corrected bug [2883066], Numeric overflow in conversion BigInteger/BIGINT.
10/17/2009 - Holger Rehn
o Corrected bug [2871274], no soft kill for TimerThread.
o Improved performance by not using Exceptions for controlling the timer,
anymore.
o Corrected a bug that lead to login errors being masked by later exceptions.
===============================================================================
09/29/2009 - jTDS 1.2.4 released
===============================================================================
Changes from jTDS 1.2.3
=======================
09/28/2009 - Holger Rehn
o Corrected bug [2860742], getByte() causes overflow error for negative
values.
09/27/2009 - Holger Rehn
o Workaround for bug [2856350], JDBC4 method stubs make jTDS unusable.
===============================================================================
09/04/2009 - jTDS 1.2.3 released
===============================================================================
Changes from jTDS 1.2.2
=======================
08/21/2009 - Holger Rehn
o Corrected bug [2814376], varchar-type is truncated in non-unicode
environment.
08/20/2009 - Holger Rehn
o Corrected bug [2349058], DateTime allows invalid dates through
08/14/2009 - Holger Rehn
o Corrected bug [2181003], attempt to set a BC date invalidates
driver state.
08/11/2009 - Holger Rehn
o Corrected bug by backporting patch [2675463], getSchemas() now returns
schemas, not database users for MSSQL 2005 and later.
08/10/2009 - Holger Rehn
o Corrected bug [1855125], jTDS silently ignores integer overflows in
ResultSet's getter methods.
08/08/2009 - Holger Rehn
o Corrected bug [1755448], login failure leaves unclosed sockets.
o Added missing finalizer in connection class to ensure resources are released
if an application fails to close a connection.
08/07/2009 - Holger Rehn
o Corrected bug [2340241] by adding a new connection property 'processId'.
o Addressed feature request [1778933] by adding a new connection property
'socketKeepAlive'.
08/04/2009 - Holger Rehn
o Corrected bug [1845477], Added missing license info.
o Resolved issue [1955499], Performance problems with timestamps in
multi-threaded applications.
o Corrected bug [1793584], Login timeout canceled too early.
08/03/2009 - Holger Rehn
o Corrected bug [1802986], incorrect charset mapping between 'MAC'
and 'ISO-8859-1'.
o Resolved problem [1957748], Java VM is leaking memory in
File.deleteOnExit().
See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6664633.
07/31/2009 - Holger Rehn
o Corrected bug [2508201], date field is changed by 3 milliseconds.
07/30/2009 - Holger Rehn
o Corrected bug [2796385], running out of UDP sockets.
07/27/2009 - Holger Rehn
o Corrected bug [1869156] memory leak of WeakReferences.
o Corrected data truncation problem described in bug [2021839].
o Corrected bug [1811383] ArrayIndexOutOfBounds on executeBatch.
07/26/2009 - Holger Rehn
o Corrected bug [2021839] savepoint starts 2 transactions if it's the first
operation.
07/25/2009 - Holger Rehn
o Corrected bug [1843801] infinite loop if DB connection dies during a batch.
o Applied patch [1844846] jTDS cannot connect IBM/Netcool Omnibus.
o Added JDBC 4 method stubs, feature request [2021848].
07/24/2009 - Holger Rehn
o Corrected bug [2818256] a savepoint is invalid after rollback.
07/23/2009 - Holger Rehn
o Corrected bug [1883905] unintentional infinite wait.
o Applied patch [1714497] to avoid using Sun's SSL implementation.
===============================================================================
08/22/2007 - jTDS 1.2.2 released
===============================================================================
Changes from jTDS 1.2.1
=======================
08/18/2007 - Brian Heineman
o Applied Mike Hutchinson's fix for bug
[1774322] Sybase nulled text fields return not null
08/05/2007 - Brian Heineman
o Applied patch [1592113] NTLMv2 properties on datasource.
o Applied patch [1236417] 64-bit support for Single Sign On (SSO)
o Applied patch [1504761] Itanium and AMD64/EM64T 64 bit support for SSO
o Implemented feature [1491811] sqlState code for snapshot conflict.
o Updated SQL Server sqlState codes.
08/02/2007 - Brian Heineman
o Corrected bug [1765905] Driver version miscellanea is incorrect;
updated to 1.2.2.
===============================================================================
07/12/2007 - jTDS 1.2.1 released
===============================================================================
Changes from jTDS 1.2
=====================
07/12/2007 - Brian Heineman
o Applied patch from Alin Sinpalean for concurrent batch updates.
o Corrected Java 1.3/1.4 compile problem.
07/11/2007 - Brian Heineman
o Applied patch from Alin Sinpalean for cursor exception handling.
07/08/2007 - Brian Heineman
o Corrected bug [1571660] Changed reference from Statement.EXECUTE_FAILED
(which was added in Java 1.4) to JtdsStatement.EXECUTE_FAILED.
o Applied patch [1567127] Eclipse javadoc warnings.
o Applied patch [1567332] Updated build file to work with or without
backslashes on Windows. This also fixes the problem of having spaces
in the JAVA_HOME path.
o Applied patch [1567151] HTML validation patches.
o Applied patch [1567994] Updated equality checks.
o Corrected bug [1623668] Lost apostrophes in statement parameter
values (prepareSQL=0) by applying the patch mentioned in the issue;
added test to ensure that there are no regressions.
o Corrected bug [1437845] milliseconds are lost under JRE 1.3 by applying
the patch attached to the issue.
o Corrected bug [1696767] incorrect ResultSetMetaData when useLOBS=false by
applying the patch mentioned in the issue.
o Corrected bug [1453552] JTDS Driver returns wrong column type with sybase
by applying the patch attached to the issue.
o Corrected bug [1374518] rollback fails on Sybase 12.5 by applying the patch
attached to the issue.
o Corrected bug [1460746] Batching of Prepare Statements by applying the patch
attached to the issue.
o Applied patch [1460207] Connection.setCatalog() has invalid check
o Implemented feature [1749962] Temporary directory should be configurable
o Corrected bug [1596743] executeQuery absorbs thread interrupt status by
applying the patch mentioned in the issue.
06/23/2006 - Matt Brinkley
o Oops...checked in some test code. I backed out those changes.
06/23/2006 - Matt Brinkley
o Fixed the flags passed for NTLMv2 authentication. Before the fix,
authentication would fail in configuration where Minimum Session
Security for NTLM SSP based (including secure RPC) Servers setting
was set to 'Require NTLM v2 session security'.
05/19/2006 - Alin Sinpalean
o Fix the previous changelist. Copy-paste didn't really help there.
05/18/2006 - Alin Sinpalean
o Added support for SNAPSHOT transaction isolation, in the same way as the
new MS driver -- using setTransactionIsolation(4096).
04/05/2006 - Matt Brinkley
o NTLMv2 auth fix: now it doesn't NPE if server fails to send target info.
03/23/2006 - Matt Brinkley
o Added NTLMv2 support for windows authentication.
01/12/2006 - David Kilzer
o Applied Mike Hutchinson's fix for Bug [1403067] ProtocolException:
Invalid table TAB_NAME_TOKEN. TdsCore.tdsTableNameToken() now handles
tables referenced using server.database.owner.table syntax. Also
modified exception code to include the unknown TAB_NAME_TOKEN value.
12/22/2005 - David Kilzer
o Replaced JtdsObjectFactoryUnitTest.testAllProperties() method with an
inner class that extends DefaultPropertiesTestLibrary to make this
test class fail automatically when a new property is added to the
library class. Removed stale comments in JtdsDataSourceUnitTest.
o Fixed Bug [1386615] Connecting across domains with named pipes fails
on Windows. New 'useJCIFS' boolean parameter added that will force
use of the jCIFS library on Windows for named pipe connections.
o Updated ConnectionJDBC2UnitTest class to check for both an instance
field and a getter for all properties. Added "missing" getters to
ConnecionJDBC2 class: getAppName(), getBufferMaxMemory(),
getBufferMinPackets(), getDatabaseName(), getMacAddress(), getNamedPipe(),
getProgName(), getWsid(). Renamed package-private getters in
ConnectionJDBC2 class that returned boolean values to use "get" instead
of "is": getLastUpdateCount(), getUseUnicode(). Moved
DefaultPropertiesTestLibrary.ucFirst() to UnitTestBase class.
o Fixed default path for named pipes on Sybase. (Previous behavior
would always default to the SQL Server path!) Added
DefaultProperties.getNamedPipePath() method with unit tests.
12/21/2005 - David Kilzer
o Extracted the JtdsDataSource.addNonNullProperties() method from
getConnection(String, String) method for easier testing. Added inner
test class Test_JtdsDataSource_addNonNullProperties to
JtdsDataSourceUnitTest to test new addNonNullProperties() method.
Replaced call to Exception.getStackTrace() in
getConnection(String, String) with a call to Support.linkException().
Fixed addNonNullProperties() to set the serverType parameter if it is
not null. Note that this does not affect Driver.parseURL() which
ends up (re)setting that property from the URL.
12/20/2005 - David Kilzer
o Implemented RFE [1291335] Provide a mechanism for binding to a local
IP address. New "bindAddress" parameter introduced (Java 1.4 and newer
only).
o Updated UnitTestBase.invoke*() methods to link original exceptions to
RuntimeExceptions. Added new UnitTestBase.invokeSetInstanceField()
method. Added back suite tests to JtdsDataSourceUnitTest that test
default values on the JtdsDataSource class and its getReference()
method by setting the default values through reflection before testing.
This allows one new test method to be added to the
DefaultPropertiesTestLibrary class and for tests to fail everywhere a
developer hasn't implemented a new driver property yet.
12/19/2005 - David Kilzer
o Changed reference to old 'TdsDataSource' class in faq.html to newer
'JtdsDataSource' class.
o Alphabetized parameters in faq.html to make them easier to find.
o Added missing </code> tag in "badrpc" question in faq.html.
o Updated the loginTimeout parameter information in faq.html to document
behavior with TCP/IP connections.
o Fixed the "What are the class names...?" question to match the TOC
entry.
12/19/2005 - Alin Sinpalean
o Minor optimization in determining the scale for decimal parameters.
12/05/2005 - Alin Sinpalean
o Applied Mike's fix for bug [1371295] executeBatch returns incorrect counts.
Batch updates now always return an array of length equal to the batch size,
padded up with EXECUTE_FAILED values if necessary.
o Applied Mike's fix for a bug related to [1368058] Calling StoredProcedure
with functions (identifiers containing special characters not parsed).
11/25/2005 - Alin Sinpalean
o Corrected bug [1358059] Memory leak in add/remove statement. The remove
statement logic did not remove the WeakReference if the Statement had been
garbage collected.
o Corrected an issue in TdsData causing CHAR columns containing single blanks
to be returned as zero length strings.
o Removed redundand call to checkClosed() in TdsCore.
o Removed duplicate entries from Charsets.properties.
11/23/2005 - Alin Sinpalean
o Made a few modifications to the test suite to accomodate changes in SQL
Server 2005.
11/09/2005 - Alin Sinpalean
o Corrected bug [1351891] Using JtdsCallableStatement.setFloat causes
SQLException. findParameter() was called as if to retrieve parameter values
from the setByte(), setDouble() and setFloat() methods, which caused the
parameter not to be found.
===============================================================================
10/08/2005 - jTDS 1.2 released
===============================================================================
Changes from jTDS 1.1
=====================
11/03/2005 - Alin Sinpalean
o Applied Mike's fix for bug [1346086] Problem with DATABASE name change on
Sybase.
o Applied patch [1250393] modify getJdbcType() to handle subclass of basic
JDBC types, submitted by Joel Schneider (cognophile).
o Corrected a minor DatabaseMetaData error: supportsTransactionIsolationLevel
returned true for TRANSACTION_NONE or any invalid value.
10/31/2005 - Alin Sinpalean
o Corrected bug in JtdsDatabaseMetaData.getBestRowIdentifier(). Statement was
closed, causing errors when using the returned result set.
10/27/2005 - Mike Hutchinson
o Fixed bug "[1305275] Cursor opens fails when cursor threshold <> -1" by
amending MSCursorResultSet.
o Fixed bugs "[1283472] Unable to cancel statement with cursor resultset" and
"[1323363] Deadlock Exception not reported (SQL Server)" by amending
JtdsStatement executeSQL() and executeSQLQuery().
o Fixed a bug in handling output parameters that occurs when invoking remote
stored procedures. The TdsCore.tdsOutputParamToken method was amended.
o Implement RFE "[1289687] configurable socket setSoTimeout()". This also
offers a solution to bug "[1297306] Network problem can cause jTDS hang-up".
o Fixed bug "[1246270] Closing a statement after cancelling it throws an
exception" by amending JtdsStatement.close().
o [SQL Server 2005] Database meta data has been improved so that getColumns()
can distinguish between text and varchar(max), image and varbinary(max) etc.
Changes were required to JtdsDatabaseMetaData.getColumns() and a new method
getMSTypeName was added to TdsData. A test case has been added to Tds8Test.
o [Sybase ASE 15] Added support for new data types unitext, bigint and
unsigned smallint, int and bigint. This enhancement required changes to
TdsCore, TdsData and ResponseStream. New test cases have been added to
Tds5Test.
o [Sybase ASE 15] With ASE 15 the default packet size is now 2048 bytes. The
ConnectionJDBC and DefaultProperties classes have been amended so that the
server default is used when there is no packetSize connection property
present.
o [Documentation] Modified faq.html to document bug [1260507]
CallableStatement Exception and the new soTimeout connection property.
o [Documentation] Modified typemap.html to document the new Sybase datatypes.
10/20/2005 - Alin Sinpalean
o Corrected bug [1293415] Charset iso_1 is broken for Sybase. For Sybase the
server's iso_1 charset maps to the standard ISO-8859-1, rather than Cp1252
as it does for MS SQL Server.
o Applied Mike's fix for bug [1330118] SSL fails with SQL 2005 September CTP.
o Applied Mike's fix for bug [1329765] Pseudo column ROWSTAT is back with SQL
2005 (September CTP).
10/18/2005 - Alin Sinpalean
o Corrected bug [1327029] setFetchSize give incorrect error message.
o Corrected bug [1296482] setAutoCommit() behaviour. According to section
10.1.1 of the JDBC 3.0 spec (which takes precedence over the API
documentation) the transaction should only be committed if the auto-commit
mode is _changed_ during a transaction.
09/27/2005 - David Kilzer
o Added info to the FAQ about the jTDS implementation of
javax.naming.spi.ObjectFactory.
09/26/2005 - David Kilzer
o Applied Mike's patch for bug [1299147] Latest change does not compile
with java 1.5. This patch cleans up the use of checkOpen() in a
number of methods in JtdsCallableStatement, JtdsPreparedStatement,
JtdsStatement and JtdsResultSet.
09/23/2005 - David Kilzer
o Fixed compilation on Java 1.5 in MessagesPropertiesUnitTest. Thanks
to Mike Hutchinson for the patch in bug [1299147] Latest change does
not compile with java 1.5.
09/22/2005 - David Kilzer
o Added MessagesPropertiesUnitTest to ensure every prop.* property has
a matching prop.desc.* property and vice-versa.
09/21/2005 - David Kilzer
o Applied patch for bug [1253127] Improved decimal peformance for MSSQL
SP4 by Mike Hutchinson. This patch also fixes bug [1236078] Procedure
doesn't get called for some BigDecimal values (in Java 1.5).
09/20/2005 - David Kilzer
o Removed RequestStream.setMaxPrecision() and added a 'maxPrecision'
argument to the RequestStream constructor. This value should never
change during the life of the RequestStream, and thus should be set
in the constructor. Updated SharedSocket.getRequestStream() method.
o Refactored SharedSocket constructor to take only a single argument
of type ConnectionJDBC2. Added some package-private getter methods
to ConnectionJDBC2.
o Replaced SharedNamedPipe.instance() method with a public constructor.
o Simplified SharedNamedPipe and SharedLocalNamedPipe constructors by
passing in a ConnectionJDBC2 object instead of a laundry list of
data values. Added more package-private getter methods to the
ConnectionJDBC2 class. Moved SharedNamedPipe.calculateBufferSize()
to Support.calculateNamedPipeBufferSize(). Changed hard-coded buffer
values in SharedLocalNamedPipe constructor to use the value returned
from Support.calculateNamedPipeBufferSize().
09/09/2005 - David Kilzer
o Applied Mike's patch to fix a small bug with getProcedureColumns() in
JtdsDatabaseMetaData and SQL Server 7.0 where the RETURN_VALUE
parameter was not prefixed with an '@' character.
09/07/2005 - David Kilzer
o Extracted code from the original Support.linkException() method to accept
generic Exception objects. Provided linkException() convenience methods
for SQLException and SQLWarning classes. Linked IOException thrown from
ConnectionJDBC2.createNamedPipe() for connection timeouts using the new
method.
o Applied Mike's fix for bug [1273988] Insert UTF8 string fails when length
is 255 (ASE12.5.2).
09/06/2005 - David Kilzer
o Applied patch for bug [1277000] "All pipe instances are busy" error not
handled properly. Added TestAllPipInstancesAreBusy tool class which is
used to manually reproduce the error. Updated "loginTimeout" entry on
FAQ. Added more use of Support.linkException() in ConnectionJDBC2
constructor.
o Created new Support.isWindowsOS() method to consolidate duplicate code.
Added SupportUnitTest class to test new method.
08/30/2005 - David Kilzer
o Updated FAQ to reflect new behavior of the namedPipe parameter since
patch [1122494] SQL Server Authentication & Named pipes was applied
in jTDS 1.0.3.
07/27/2005 - Alin Sinpalean
o Corrected bug [1245775] Column type inconsistency when useLOBs=false.
07/11/2005 - Alin Sinpalean
o Applied Mike's fix for bugs [1234531] Dates before 01/01/1900 broken due to
DateTime value markers and [1235845] getTimestamp() returns illegal value
after getString().
07/05/2005 - Alin Sinpalean
o Applied Mike's fix for bug [1232733] setFetchSize(0) causes exception.
o Final fix for bug [1229636] Memory Leak in Prepared Statements.
07/04/2005 - Alin Sinpalean
o Corrected some build issues with Java 1.3.
07/01/2005 - Alin Sinpalean
o Applied yet another patch for bug [1229636] Memory Leak in Prepared
Statements, with a minor change. This seems to finally fix the caching and
memory leaks; handles are always cached, even if maxStatements=0, retrieved
from the connection cache and the statement list of handles is implemented
by a Set, to make sure no memory leaks due to duplicates occur.
06/30/2005 - Alin Sinpalean
o Corrected bug [1229636] Memory Leak in Prepared Statements, based on Mike's
initial patch.
o Realized that my initial fix will not work with maxStatements=0 (as opposed
to Mike's) so made some more changes.
o Corrected synchronization issue in ConnectionJDBC2.removeStatement() for the
ConnectionJDBC2.statements instance variable.
06/29/2005 - Alin Sinpalean
o Corrected a bug with prepare handles caching where the usage count was
decremented twice when a statement was closed, causing premature release of
handles.
06/28/2005 - Alin Sinpalean
o Applied Mike's additional patch for bug [1222199] Delayed exception thrown
in statement close. "Execution cancelled" exceptions are now only thrown if
the cancel was caused by a call to Statement.cancel(); if a timeout is the
cause, the exception is masked as an exception was already thrown when the
execution timed out.
o Corrected a memory leak caused by the prepared statement's handles
collection being implemented through an ArrayList rather than a Set. The
same handle would be added again and again on each execution and never
removed until the statement was closed.
06/27/2005 - Alin Sinpalean
o Per Mike's suggestion, changed the SQLState of query cancelled exceptions to
HY008 instead of S1008.
06/23/2005 - Alin Sinpalean
o Corrected bug [1226210] {fn dayofweek()} depends on the language. Fix
submitted by Xavier Poinsard.
06/22/2005 - Alin Sinpalean
o Corrected bug [1222199] Delayed exception thrown in statement close. In the
current implementation Statement.close() does throw any server side errors
(to make sure the user doesn't miss any) but Connection.close() ignores
them.
o Applied Mike's fix for bug [1222238] Unable to connect to Sybase 10 with TDS
5.
06/21/2005 - Alin Sinpalean
o Applied Mike's fix for bug [1222205] getParameterMetaData returns not
implemented.
===============================================================================
06/16/2005 - jTDS 1.1 released
===============================================================================
Changes from jTDS 1.0.3
=======================
06/16/2005 - Alin Sinpalean
o Added the useLOBs connection property to control whether large types (IMAGE
and TEXT/NTEXT) should be mapped by default to LOBs or Java types (String
and byte[]). Default is true, i.e. map to LOBs by default.
o Updated version number to 1.1.
06/15/2005 - Alin Sinpalean
o Applied Mike's fix for bug [1047208] SQLException chaining not implemented
correctly, with a few additions in places where exceptions might have gotten
lost.
o Removed SSPIJNIClient.main() and hexDump() as they weren't used anyway.
06/10/2005 - Alin Sinpalean
o Corrected bug [1217786] Moving to "beforeFirst" with ResultSet.absolute(-X)
and a number of related absolute() and relative() issues with
MSCursorResultSet.
06/03/2005 - Alin Sinpalean
o Removed no longer needed cache classes.
o Corrected an issue with savepoints, which was causing cached procedures to
not be dropped by the driver on a savepoint rollback.
o Removed already fixed or outdated TODO comments.
06/02/2005 - Alin Sinpalean
o Applied Mike's fix for bug [1212905] PreparedStatement.setFloat issue.
o Moved all the "create cursor or use direct execution" logic into a single
place and corrected an issue where useCursors=true would cause a cursor
prepare to be issued even on executeUpdate().
06/01/2005 - Alin Sinpalean
o Initial implementation for extended scrollability/updatability support
(TYPE_SCROLL_SENSITIVE for keyset cursors, TYPE_SCROLL_SENSITIVE + 1 for
dynamic cursors, CONCUR_UPDATABLE for optimistic concurrency w/ timestamps,
CONCUR_UPDATABLE + 1 for pessimistic concurrency and CONCUR_UPDATABLE + 2
for optimistic concurrency w/ value checking). All the new values work with
Sybase too, but the behavior is the same as the default.
05/30/2005 - Alin Sinpalean
o Changed the default prepareSQL mode from 1 (temporary stored procedures) to
3 (sp_prepare) for SQL Server. For Sybase, the default is still 1.
o Corrected a bug in DateTime that was causing -1 to be stored as the time
component of a DATETIME field for a Date value.
o Applied Mike's patch [1210936] Change byte array to string conversions; the
patch changes the way byte[] to String conversions are made (now hex values
are returned) and also a bug with SELECT DISTINCT not working with Sybase.
o Added information about the useCursors property (and fast forward-only
cursors to the FAQ).
o Made the maximum global buffer memory and minimum local buffer packets
configurable from the connection properties by adding two new properties:
bufferMaxMemory and bufferMinPackets.
05/27/2005 - Alin Sinpalean
o Added initial support for fast forward-only cursors.
o Corrected yet another cancel synchronization issue caused by the end of
response flag not being reset when a cancel packet was sent.
o Corrected an issue causing hidden columns to "become visible" in result set
meta data obtained from prepared statements.
o Corrected bug [1209039] jTDS can deadlock when used with C3P0 connection
pooling; unnecessary synchronization on statements caused deadlocks.
05/25/2005 - Alin Sinpalean
o Applied Mike's last patch posted in RFE tracker [1172683] Improve the
performance of Prepared Statements. The patch implements metadata caching
and removes support for sp_prepexec and sp_cursorprepexec (prepareSQL=4).
05/20/2005 - Alin Sinpalean
o Corrected bug [1204658] Conversion from Number to BigDecimal causes data
corruption.
o BigDecimal to String conversion no longer drops insignificant trailing
zeroes.
05/11/2005 - Alin Sinpalean
o Corrected bug [1200027] Enhancement: Change how Properties keys are
determined.
o Added serialVersionUID to JtdsDataSource.
05/10/2005 - Alin Sinpalean
o Applied Mike's patch [1197446] Optimized handling of datetime values.
o Applied Mike's patch with SQLParser improvements, posted in RFE [1172683]
Improve the performance of Prepared Statements.
o Applied Mike's fix for bug [1197603] Cursor downgrade error in
CachedResultSet and added a test case.
05/09/2005 - David Kilzer
o Made the error.connection.autocommit message in ConnectionJDBC2 specific to
the method being called (commit() or rollback()) by introducing a parameter.
05/06/2005 - Alin Sinpalean
o Corrected bug [1195511] Recent change to JtdsStatement breaks Sybase
metadata.
05/04/2005 - Alin Sinpalean
o Corrected a bug that was causing the ResultSet position to be reset to the
beginning of the cached block if a reread was attempted after updateRow().
04/28/2005 - Alin Sinpalean
o Implemented caching of a single TdsCore instance in ConnectionJDBC2. When a
statement is closed its TdsCore is cached and reused on the next statement
creation.
o Made a lot of properties final.
o Corrected bug [1180777] collation-related execption on update - if a prepare
failed, execution was not retried (unprepared) and failed.
o Removed the ConnectionJDBC2 finalizer, as the resources will be freed anyway
when garbage collected.
04/25/2005 - Alin Sinpalean
o Applied Brett Wooldridge's patch for RFE [1172683] Improve the performance
of Prepared Statements. The patch implements a cache for parsed SQL
statements (parsed sql and parameter information, where available).
04/22/2005 - Alin Sinpalean
o Corrected bug [1187872] Supported CodePage: error in error message.
o Corrected bug [1187927] Driver Hangs on Statement.execute(). Versions 1.0.3
and prior entered an infinite loop when parsing an unterminated multi-line
comment.
04/20/2005 - Alin Sinpalean
o Applied Mike's fix for bug [1184376] Sybase getProcedureColumns bug.
04/19/2005 - Alin Sinpalean
o Major code cleanup using various code inspection tools.
04/17/2005 - Alin Sinpalean
o Applied Mike's patch for bug [1172405] BLOB/CLOB position methods fail: a
BlobBuffer class was introduced to handle LOB buffering to memory/disk and
BlobImpl/ClobImpl, as well as other classes, were modified accordingly.
===============================================================================
04/15/2005 - jTDS 1.0.3 released
===============================================================================
Changes from jTDS 1.0.2
=======================
04/15/2005 - Alin Sinpalean
o Updated version number to 1.0.3.
04/13/2005 - Alin Sinpalean
o Corrected bug [1182066] regression bug resultset: ResultSet.relative() was
not working as expected.
o Minor performance optimizations in ClobImpl and LOBTest.
04/11/2005 - Alin Sinpalean
o Applied Mike's fix for bug [1179773] jTDS fails when used with c3p0
connection pool.
o Applied Mike's fix for bug [1180164] NPE in TdsData with mulit-byte charset.
o Applied Mike'd fix for bug [1180169] JDBC escapes not allowed with Sybase
addBatch.
o Updated FAQ listing an additional reason why a ResultSet may be downgraded
to update only read only: not a single SELECT statement.
o Added DBSolo to the links page per Marko Hantula's request.
o Closed bug [991089] INSTANCE parameter does not work with SQL Server 2005
after adding an explanation to the FAQ on how to make it work.
04/07/2005 - Alin Sinpalean
o Applied Mike and Dave's combined fix for bug [1176221] JtdsPreparedStatement
setTime setTimestamp Daylight DST Bug.
04/04/2005 - David Kilzer
o Refactored duplicate code in JtdsPreparedStatement.setDate(int, Date, Calendar),
setTime(int, Time, Calendar) and setTimestamp(int, Timestamp, Calendar) into
adjustTimeByCalendar(long, Calendar) method in preparation to fix [1176221]
JtdsPreparedStatement setTime setTimestamp Daylight DST Bug.
04/04/2005 - Alin Sinpalean
o Optimized buffer allocation in RequestStream/ResponseStream.
o Moved the Statement.getMoreResults(Statement.KEEP_CURRENT_RESULT) test to a
different, JDBC 3.0 only unit test.
03/29/2005 - Alin Sinpalean
o Applied a temporary (and highly useless) fix for bug [1172405] BLOB/CLOB
position methods fail. position() methods work now, at least in theory.
03/26/2005 - Alin Sinpalean
o Applied Mike's patch [1166594] JDBC3 Multiple open result sets. The
getMoreResults(int) method is fully implemented and the JtdsResultSet class
has been enhanced so that it can cache the remaining result set rows when
required by the KEEP_CURRENT_RESULT option. Result sets returned by
Statement.execute() are only cached by when required by the getMoreResults()
method. A couple of minor bugs in the CachedResultSet class are also fixed;
a where clause for updates could include text or image columns which is not
allowed and the Sybase syntax for inserting rows containing all default
values was incorrect.
o Corrected bug [1170777] resultSet.updateRow() fails if no row has been
changed. Thanks go to Brett Wooldridge for signalling the bug and providing
a fix.
03/18/2005 - Alin Sinpalean
o Implemented RFE [1165119] Computername in Connection-URL: added a WSID
parameter to the URL properties, to override the host name that is
determined automatically.
o Corrected bug [1164219] possible incorrect synchronization in
BlobImpl.java (removed all synchronizations from BlobImpl and ClobImpl).
o Added a description of jTDS' support for multi threading to the FAQ.
o Update for bug [1161601] Connection.close() can take a long time when Sybase
down. The close timeout has been reduced to 1 second, just to make sure the
logout request makes it through to the server.
03/14/2005 - Alin Sinpalean
o Applied Mike's additional fix to bug [1158509] Various problems with
connect/login timeouts.
03/12/2005 - Mike Hutchinson
o Small change to ConnectionJDBC2 to ensure that the server character set is
used if none is specified by the user.
o TdsCore.closeConnection() has been modified to set a 10 second timeout on
the socket. This should address bug report [1161601] Connection.close() can
take a long time when Sybase down.
o TdsData and TdsCore have been modified to address bug [1161609] Text or
image data truncated on Sybase 12.5. A new TDS 5 data type (0x24) is used to
send bulk text or image data to the server.
o A small bug has been corrected in Support.substituteParameters which caused
short InputStreams to be written as a binary parameter rather than text when
running with Sybase 11.
03/12/2005 - Alin Sinpalean
o Added a fix suggested by rtdog to TimerThread.
03/09/2005 - Alin Sinpalean
o Corrected bug [1158509] Various problems with connect/login timeouts. The
last problem fixed was concerned with socket connection not timing out (only
the login itself was timed and interrupted).
o Applied patch [1155902] Implement parameter meta data retrieval, by Oded
Arbel. Parameter mode was always returning parameterModeUnknown; now mode
is determined based on actual parameters.
03/07/2005 - Alin Sinpalean
o Partially fixed bug [1158509] Various problems with connect/login timeouts.
FAQ was inexact (stated that loginTimeout was in milliseconds) and
DriverManager login timeout was ignored because the default values (0 for
login timeout) were set before the null check.
03/06/2005 - Alin Sinpalean
o Applied a patch from Mike with a cleaner batch implementation.
03/04/2005 - Alin Sinpalean
o Added an extra concurrency test, which runs two Statements in parallel: one
doing SELECTs and UPDATEs and the other doing cancel()s. Seems to work fine.
03/03/2005 - Alin Sinpalean
o Added a batchSize parameter to control how many statements should be sent at
once in a batch execution. Batches are now broken up into pieces on
execution if they exceed this size limit.
03/01/2005 - Alin Sinpalean
o Following Mike's suggestion, reduced the chunk of code synchronized with
cancelMonitor to only TdsCore.cancelPending assignments, to ensure these are
atomic. That should be enough, now that SharedSocket is also synced.
02/28/2005 - Alin Sinpalean
o Applied Mike's patch [1124854] SSO fixes - prevents error from crashing JVM.
o Modified ClobImpl to use UCS-2 encoding for storing/retrieving character
data to/from disk. Previously the default system encoding was used, causing
characters not in the system encoding to be lost.
o Corrected a resource (temp file) leak in ClobImpl and BlobImpl: the file
property was set to null before deleting the file, possibly causing it to
remain there until the JVM terminated.
o Completely synchronized access to cancelPending and endOfResponse in TdsCore
and cancelPending and responseOwner in SharedSocket. This should prevent any
race conditions when a cancel() is issued.
o Applied the rest of Mike's fix for bug [1152329] Spurious output params
assigned (TIMESTMP). Missed part of it when doing the merge.
o Added FAQ entry about Sybase batching, as discussed in bug report [1123350]
Hang when executing performance test.
02/27/2005 - Alin Sinpalean
o Enhanced update count caching implementation by always caching update counts
up to the end of the response or beginning of the first ResultSet (whichever
comes first) whenever the end of the current ResultSet is reached. This
means it's no longer necessary to call getMoreResults() after the last
ResultSet returned by a CallableStatement to get to the output parameters.
Also removed the readAhead flag, which caused the rest of the response to
be dumped when the end of the first ResultSet was reached for a
CallableStatement.executeQuery.
o Corrected a problem in SQLParser causing an error message with the wrong
terminator value missing (i.e. ')' instead of '}' missing from
"{call proc(?)").
o Corrected a problem with output parameters being defined as Unicode even
though sendStringParametersAsUnicode=false was specified.
o Applied Mike's fix for bug [1152329] Spurious output params assigned
(TIMESTMP). WRITETEXT and UPDATETEXT commands generate spurious output
parameter packets, which interfere with the real output parameters. Fix
ignores output parameters with names not beginning with '@'.
o Synchronized all accesses to the cancelPending flag, to fix any possible
issues caused by race conditions.
02/25/2005 - Alin Sinpalean
o Added code to close the socket and release any data buffered at the socket
level when Connection.setClosed() is called (usually on I/O or protocol
errors).
o Tried to disable warning messages on database and language change; these are
always generated during login, sometimes causing confusion. Problem is,
disabling these also disables generation of the associated ENVCHANGE packets
making jTDS crash with NPEs because it doesn't know the current database.
02/24/2005 - Alin Sinpalean
o Corrected bug [1150880] Character Set getting overwritten. Collation
envchange packets altered the charset specified on connection creation.
02/23/2005 - Alin Sinpalean
o Implemented feature [1145697] Better handling of OutOfMemoryError. On an
OutOfMemoryError, TdsCore.nextToken() now consumes the rest of the server
response to ensure no protocol confusion will occur.
o Implemented feature [1144733] Make jtds.jar display version no. Now
"java -jar jtds-1.x.jar" will display the jTDS version to standard output.
02/23/2005 - David Kilzer
o Fix comment in ConnectionJDBC2(String, Properties) constructor.
02/22/2005 - David Kilzer
o Added .cvsignore to top-level directory to ignore build and dist directories.
02/19/2005 - Alin Sinpalean
o Applied patch [1122494] SQL Server Authentication & Named pipes, submitted
by Kartik Shah. On Windows, local named pipes are always used, now, even for
remote servers.
o Implemented feature request [1124636] Better error message for missing
ntlmauth.dll.
02/17/2005 - Alin Sinpalean
o Corrected a problem related to cancel synchronization in TdsCore: a race
condition occured between the cancelPending assignments that could cause
the Connection to fail. Problem was reproducible using testCancel0003() in
SAfeTest on a slow client.
o Corrected bug [1120168] jTDS 101 - TDS data type 0 invalid, caused by
incomplete column info filled in for dummy CachedResultSets.
02/16/2005 - Alin Sinpalean
o Applied Mike's fix for bug [1122357] INSERT is executed twice by scrollable
Statement on Sybase. CachedResultSets are now created on top of plain
ResultSets from scrollable/updateable Statements. The query is only altered
(by adding "FOR BROWSE") if executed via executeQuery().
02/15/2005 - Alin Sinpalean
o Altered SQLParser to accept any number of parameters for a PreparedStatement
if prepareSql=0, i.e. plain queries rathern than RPC are used to execute the
query. Also modified the related test to handle this situation.
02/14/2005 - Alin Sinpalean
o Applied patch [1120010] Fixed search string escape handling, submitted by
James P. Moring.
02/12/2005 - Alin Sinpalean
o Corrected bug [1120442] Statement hangs in socket read after
Statement.cancel().
o Applied Mike's fix for bug [1120825] Can't open scrollable ResultSet with
Sybase 11.9.
o Applied Mike's fix to my fix to bug [1120442] Statement hangs in socket read
after Statement.cancel(). :o)
02/10/2005 - Alin Sinpalean
o Improved test for bug [1116046] {fn } escape can't handle nested functions.
===============================================================================
02/15/2005 - jTDS 1.0.2 released
===============================================================================
Changes from jTDS 1.0.1
=======================
02/14/2005 - Alin Sinpalean
o Corrected bug [1122481] how handle new behavior since 1.0.1. The DataSource
factory failed with NPE because the properties are no longer initialized in
the constructor. Added tests to ensure no regressions.
o Updated version number to 1.0.2.
===============================================================================
02/09/2005 - jTDS 1.0.1 released
===============================================================================
Changes from jTDS 1.0
=======================
02/09/2005 - Alin Sinpalean
o Corrected bug [1118956] statement.setMaxFieldSize() sends a statement every
time. Max field size is now set at the same time and in the same way as row
count.
o Applied Mike's patch [1118912] Small enhancements. Extended DataTruncation
support, better transaction isolation support for Sybase and a fixed NPE in
Logger.
02/08/2005 - Alin Sinpalean
o Synchronized JtdsStatement.close(); a race condition could occur between a
pool implementation closing Statements after a timeout and finalize().
02/07/2005 - Alin Sinpalean
o Added the explanation for the "Connection refused" error message to the FAQ.
o Removed tests that were failing because of the fix for bug [1113709]
Connecting via DataSource (the assumptions of these tests were incorrect, to
start with).
02/05/2005 - Alin Sinpalean
o Applied patch [117010] Instance parameter support for local named pipes,
submitted by Matthias Germann.
02/04/2005 - Alin Sinpalean
o Applied Mike's fix for bugs [1116113] (SSL fails to build or run under java
1.3) and [1102505] (SSL Resume Failure). TLS resume is now disabled
altogether until we find out what the actual cause is and work around it.
o Applied Mike's fix for bug [1116046] {fn} escape can't handle nested
functions.
02/02/2005 - Alin Sinpalean
o Applied patch [1110911] Encryption request causes conn reset, submitted by
Mike Hutchinson. SSL negotiation has been implemented to handle the encrypt
only login case.
o Applied a modified version of patch [1107090] Revised query timeout logic,
submitted by Mike. Timeouts should now have millisecond precision, using a
single timer thread per VM.
o Fixed bug [1113709] Connecting via DataSource. Invalid default TDS version
was used by JtdsDataSource when connecting to Sybase. Breaks all default
property tests (which relied on DataSource setting default values in the
constructor), but the previous behavior was incorrect.
o Fixed bug [1113040] Small bug in net.sourceforge.jtds.jdbcx.PooledConnection
Thanks go to Marcus Nylander for finding the bug and providing a fix.
02/01/2005 - Alin Sinpalean
o Updated FAQ to include information about local named pipes.
o Modified SQLParser to only extract table names when requested to, because it
was unable to parse function calls.
01/28/2005 - Alin Sinpalean
o Added checks for timeout exceptions to JtdsStatement.executeSQLQuery() and
executeSQL(); if a cursor creation fails because of a timeout, the exception
is thrown back and a direct select is not attempted anymore.
o commit() and rollback() now throw SQLException if called in auto-commit
mode, per API documentation.
o Added checks to setAutoCommit() and setTransactionIsolation() to no longer
submit requests to the server if already in the correct mode.
01/27/2005 - Alin Sinpalean
o Fixed bug in CharsetInfo, caused by getClassLoader() returning null when the
class loader is the bootstrap classloader.
===============================================================================
01/25/2005 - jTDS 1.0 released
===============================================================================
Changes from jTDS 0.9.1
=======================
01/25/2005 - Alin Sinpalean
o Updated the HTML content and incremented the version number in both the docs
and the code.
01/24/2005 - Alin Sinpalean
o Minor clean-up in tests and code.
01/24/2005 - Mike Hutchinson
o Fixed bug [1107105] Sybase updateable cursor error (a null pointer exception
is thrown in CachedResultSet during an update).
o Amended the logic for downgrading the preparesql property values in
ConnectionJDBC2 as it was possible to select invalid options for Sybase and
SQL 6.5.
o Prevent JtdsPreparedStatement.setUnicodeStream from throwing an array index
exception when the length of the supplied stream exceeded the declared
length.
o When using preparesql=0, the driver would send zero length byte arrays as
null. This is wrong as the column should have a zero length non null value;
however, Sybase/SQL 6.5 do not permit zero length binary columns so the
driver has to output a single byte value instead. Amended
Support.embedData() to fix this problem.
o Related to the point above, TdsData.writeParam and writeTds5Param do the
wrong thing and output a zero length byte value as a null. Amended TdsData
to fix this problem.
o It is possible for Support.embedData to output a decimal literal that
exceeds the precision of the server. Amended embedData to truncate value
string.
o In TdsCore.executeSQL the inbatch flag is reset prematurely causing batched
prepared statements to fail to substitute parameters correctly. Amended
executeSQL to ensure that flag is reset after last packet sent.
01/21/2005 - Alin Sinpalean
o Changed the home page title to "jTDS JDBC Driver".
01/17/2005 - Alin Sinpalean
o Updated typemap.html to reflect the mapping of IMAGE to BLOB and TEXT/NTEXT
to CLOB.
o Added BLOB and CLOB information to JtdsDatabaseMetaData.supportsConvert().
01/14/2005 - Alin Sinpalean
o Applied Mike's fix for bug [1101251] SSL Connection Problem.
o Added README.SSL to the build, updated FAQ and feature matrix.
o Added "ssl" property to the DataSource.
01/13/2005 - Alin Sinpalean
o Added readme for SSL.
o Added logging to MSSqlServerInfo if an exception occurs.
01/10/2005 - Alin Sinpalean
o Optimization in Support.substituteParamMarkers(): a StringBuffer is used for
converting parameter numbers to strings, in order to avoid unnecessary
object creation.
o Corrected a problem in TdsCore where the inBatch flag was set incorrectly
causing sp_executesql to be used for all parameterized queries.
o Added a specific error message for the case when an output parameter value
is accessed without registerOutParameter() being called first.
01/05/2005 - Alin Sinpalean
o Applied patch [1096296] DatabaseMetaData.getTypeInfo() ordering, submitted
by David Eaves.
o Applied Mike's fix to bug [1096086] Zero length streams generate null
values.
01/04/2005 - Alin Sinpalean
o Applied patch [1089891] Adding SSL, from Rob Worsnop. Wasn't able to test
whether SSL really works (because I was not able to configure SQL Server to
handle it) but with a few minor changes at least the old functionality is
not affected.
o Applied patch [1095057] Positioned updates and improved Sybase cursors.
o Applied Mike's fix to bug [1094621] Decimal conversion error.
o Some performance improvements.
12/21/2004 - Alin Sinpalean
o Included the SSO patch in the build.
12/20/2004 - Alin Sinpalean
o Fixed bug [1086477] RETURN_GENERATED_KEYS on select returns 1 row.
o Applied patch [1088293] Simplified multi threaded execution with a few minor
corrections and modifications (including optimized, single request, batch
updating).
o DDL statements no longer return update counts. This should make jTDS more
compatible with other drivers and the spec.
12/19/2004 - Alin Sinpalean
o Fixed bug [1082986] prepareSQL=3 Does Not Function (caused by the separation
of input and output values).
o Applied Mike's fix for bug [1086494] DatabaseMetaData.getProcedureColumns
broken on Sybase.
o Fixed bug [1087057] Connection is closed during XA Transaction. Also added
check for error severity: if greater than or equal to 20 the Connection is
closed (because the server will close the connection after the error).
12/17/2004 - Alin Sinpalean
o Applied, with some minor changes and corrections, patch [1086173] Windows
Local Named Pipe Support. Thanks go to Stardog33.
o Fixed failure of JtdsDataSourceUnitTest.testNoUser() with a runtime error
caused by inability to load the ntlmauth DLL.
o Added one more test for SharedSocket synchronization, only with RPC
requests. Still not able to reproduce the locking read.
12/16/2004 - Alin Sinpalean
o Possible fix for bug [1086156] Hang in driver socketRead under load. Could
not actually reproduce the exact behavior but found other errors caused by
incomplete synchronization on SharedSocket.
o Fixed a bug that was causing setSavepoint() to fail when no statements to
actually start a transaction were executed before.
12/14/2004 - Alin Sinpalean
o Implemented fetching of row blocks with cursor ResultSets, controllable
through setFetchSize(). As part of this, also implemented support for
sending more than one request in one packet.
o Applied Mike's update to patch [1037237] Windows Single Sign On in jTDS.
12/13/2004 - Alin Sinpalean
o Applied patch [1037237] Windows Single Sign On in jTDS. Thanks go to
Magendran Sathaiah and Mike Hutchinson for the original patch and Java code
rewrite, respectively.
12/09/2004 - Alin Sinpalean
o Added some tests to verify the behavior of sp_cursorfetch with fetch sizes
greater than 1.
o Added code to ensure scroll sensitive ResultSet rows are reloaded after
updated (delete just marks the row as deleted, while insert adds a row at
the end of the ResultSet).
o Fixed some cursor ResultSet issues caused by invalid suppositions considered
when optimizing (i.e. that updating a row will always delete the current row
and create a new one at the end of the ResultSet). This will affect update
performance (by making an additional request) but it is necessary to ensure
correctness.
o Updated DatabaseMetaData boolean getters related to the capabilities of
detecting updates/inserts/deletes (only deletes can in fact be detected on
SQL Server).
12/08/2004 - Alin Sinpalean
o Combined connection properties setup in the ConnectionJDBC2 constructor with
the SELECT @@MAX_PRECISION query into a single request, reducing login
overhead to only a single request/response.
===============================================================================
12/08/2004 - jTDS 0.9.1 released
===============================================================================
Changes from jTDS 0.9
=====================
12/08/2004 - Alin Sinpalean
o Updated the index.html with support information and added a description for
the xaEmulation parameter in the FAQ.
o Updated version number to 0.9.1 in code and documentation.
12/07/2004 - Alin Sinpalean
o Updated the build files to create a binary distribution package containing
the readme, license, html documentation, XA DLL and SQL as well as the jar,
instead of the plain jar as it was before.
o Updated README and README.XA.
o Corrected bug [1080659] ParamInfo throws NullPointerException.
o Corrected loading of Charsets.properties under a J2EE environment.
12/06/2004 - Alin Sinpalean
o Minor code cleanup using FindBugs.
12/05/2004 - Alin Sinpalean
o Applied Mike's fix for bug [1078927] Callable statement fails (callable
statements with both literal parameters and parameter markers failed to
execute).
12/03/2004 - Alin Sinpalean
o Corrected bug [1078325] Multithreaded prepared statement errors (or at least
I sure do hope so). The problem seems to have been the fact that preparing
a statement and executing it was not a single, atomic operation and a
rollback() could occur between the two basically "unpreparing" the
statement. Also synchronized some methods in ConnectionJDBC2 that looked
like they needed some sync.
o Corrected some exception error messages that contained incorrect hexadecimal
values.
o Corrected an issue in SQLParser that prevented CallableStatements from
working properly with procedures containing semicolons in their name (e.g.
"test;1").
o Modified BlobImpl.getBytes() and ClobImpl.getString() to return as much data
as available instead of throwing an SQLException if the length parameter is
too big (this is my understanding of the API documentation).
o Removed ColData from CVS (forgot to do it when applying the patch).
o Applied Mike's patch [1077886] XA Emulation mode.
12/02/2004 - Alin Sinpalean
o Added a unit test (and made a couple of minor fixes) for column collation
support. Seems to work fine now.
o Fixed TimestampTest.testWriteDate() to actually test whether dates are
written correctly (i.e. w/o their time component) into the DB.
12/01/2004 - Alin Sinpalean
o Applied patch [1076337] Elimination of ColData class. Thanks a lot, Mike for
all the effort!
o Applied patch [1076383] ResultSetMetaData for more complex statements for
SQL Server.
11/30/2004 - Alin Sinpalean
o Corrected bug [1075977] setObject() causes SQLException.
11/29/2004 - Alin Sinpalean
o Fixed some NPEs caused by the new per column collation support.
o Applied Mike's fix for [1074356] TDS 4/5 Login fails with latest CVS code.
o Applied Mike's fix for [1074096] Incorrect data type determine on dataset
meta data.
o Implemented support for reading character data using per column collations
for SQL Server 2000.
11/26/2004 - Alin Sinpalean
o Corrected a bug which was causing Statement.setMaxRows() to not work with
cursor-based ResultSets.
11/24/2004 - Alin Sinpalean
o Extracted getConnection(callerReference) out of BlobImpl and ClobImpl and
moved it to Support.
o Created the CharsetInfo class to hold both information about a character set
(non-static fields) and provide support for loading and retrieving character
sets (static fields and methods; the logic was moved from Support).
o Added comments to highlight possible problem areas with multi-byte character
sets.
o Started adding support for SQL Server 2000 per column collations.
o Other minor cleanups.
11/23/2004 - Alin Sinpalean
o Corrected bug [1071397] Error in prepared statement (parameters in outer
join escapes are not recognized).
11/19/2004 - Alin Sinpalean
o Replaced the ColData copy constructor with clone().
o Added tests to ensure Blob.getBytes(0, length) and Clob.getSubString(0,
length) fail.
11/18/2004 - Alin Sinpalean
o More performance improvements: instead of creating new ParamInfo instances
for each sp_XXX call, the same objects are reused both for fixed parameters
(optype, fetchtype etc.) and updated column values; also, for addBatch() the
ParamInfo copy constructor was replaced with clone().
o Tweaked initial StringBuffer sizes to prevent reallocation as much as
possible.
o Corrected a bug that was causing Date values to be inserted just like
Timestamps (i.e. including the time component).
11/17/2004 - Alin Sinpalean
o Tiny performance tweaks.
o Added jta.jar to lib folder to ensure compilation works under Java 1.3.
o Corrected a problem in ReaderOutputStream that was causing read(byte[]) to
always return the size of the byte array even if less data was read.
o Fixed a problem with absolute(-1) (the row position was incorrectly
updated).
o Improved performance of MSCursorResultSet, by replacing sp_cursor FETCH_INFO
calls with simple operations mimicking the behavior of SQL Server
(incrementing the row count on INSERT and UPDATE).
o Implemented support for ResultSet.insertRow() when no column is updated
(i.e. inserting default values) in MSCursorResultSet.
o Added charsets GB2312 and GBK as aliases for MS936.
o Corrected bug [1067224] getPrimaryKeys does not return PK_NAME column.
11/15/2004 - Mike Hutchinson
o Refactored XA support so that the driver will run under JRE 1.3 without
requiring jta.jar to be available.
o Revised JTdsXA.DLL to make it more compatible with older versions of MSDTC.
o Changed XA support so that exception is thrown if not used with SQL 2000.
o Use of XA connection forces prepareSQL=2 to prevent problems with temporary
stored procedures.
o Fixed 'bug' 1062671 SQL Parser unable to parse {ts ?}.
o Fixed bug 1047330 prep statement with > 2100 params fails!
o Modified callable statement parameters so that IN and OUT values are separated
which makes jTDS more compatible with other drivers.
o Added additional constructors for ParamInfo to streamline use of parameters in
the driver.
o Replaced the DummyResultSet class with CachedResultSet.
o Additional tests in CallableStatementTest, GenKeyTest, PreparedStatementTest.
o Added additional html page to describe jTDS data type mapping.
11/15/2004 - Alin Sinpalean
o Remapped TEXT/NTEXT to BLOB and IMAGE to CLOB in TdsData.types.
o Partially applied patch [1065036] Problems with connection pooling and jTDS.
o Cleaned up default value assignment to URL parameters, moving everything to
DefaultProperties and replaced all property key literals with constants.
o Corrected bug [1062395] Empty (but not null) blobs should return byte[0].
o Applied Mike's fix for bug [1062549] Build fails under java 1.3.
o Corrected bug [1062198] SecurityException not caught in class
ConnectionJDBC2 (fix by Andreas Mross - amross).
11/10/2004 - David Kilzer
o Fixed case of 'props.tcpnodelay' in JtdsDataSource.getConnection() (two
unit tests were failing).
o Added test for 'tcpNoDelay' property to DefaultPropertiesTestLibrary.
11/08/2004 - Brian Heineman
o Added tcpNoDelay driver property; default is true.
11/05/2004 - Alin Sinpalean
o Applied Mike's fix for bug [1060466] SQL Executed twice.
o Applied Mike's fix for bug [1059916] Whitespace needed in preparedStatement.
o Tiny fix in XaTest to avoid deadlocks in case an SQLException is thrown.
11/03/2004 - Alin Sinpalean
o Updated JtdsDatabaseMetaData.getProcedures() to only cut off the ";" at the
end of the procedure name for the first procedure (i.e. if it's ";1").
11/01/2004 - Alin Sinpalean
o Corrected bug [1057237] Protocol Exception processing TDS_COLINFO packets.
10/27/2004 - Alin Sinpalean
o Ran the FindBugs tool (http://findbugs.sourceforge.net) on the jTDS code
base with no major results. Most signalled problems were either in the test
suite or minor suggestions on the driver itself. Applied all suggestions
that made sense.
o Applied Mike's patch [1054878] Improved meta data. In addition to metadata
improvements, the patch fixes a number of bugs, including [1049645]
DatabaseMetaData getProcedures names have semicolon, [1019707]
metaData.getProcedures has missing 8th column on Sybase and [1043569]
Handling of unicode data when inserting into a TEXT field (not totally sure
about the last one, though).
10/26/2004 - Alin Sinpalean
o Reviewed and cleaned up Brian's latest statement cache update.
10/25/2004 - Brian Heineman
o Created FastStatementCache for users with a limited number of unique
prepared statements who want the fastest performance possible.
o Added maxStatements property to control how many simultaneous statements the
connection keeps open.
o Corrected bug when dropping procedures; the logic for DROP PROC and
sp_unprepare was reversed.
o Reduced overhead associated with latching. The connection now establishes a
NonCachingStatementCache (yes, it is an oxymoron) when maxStatements is 0 and
a FastStatementCache when maxStatements is Integer.MAX_VALUE. This prevents
the need for the latching methods to check the statement size each time.
o These changes address RFE [920825] and bug [1019694].
10/25/2004 - Alin Sinpalean
o Applied Mike's fix for bug [1052942] Error processing JDBC call escape.
10/21/2004 - Alin Sinpalean
o Altered the interface of Brian's StatementCache interface to correctly
handle both usage counts (searching by SQL string) and searching by key.
Still need to do the implementation, though.
o One more minor change for bug [1051747] Array out of bounds Exception in
ResultSetMetaData (outputting the actual column index in the exception text
rather than the column count).
o JtdsDataSourceUnitTest.Test_JtdsDataSource_getConnection.testNormal() now
uses the new properties in connection.properties to check if connecting
through a DataSource actually works (also tests bug [1051595] jtdsDataSource
connects only to localhost - could not reproduce).
10/21/2004 - Brian Heineman
o Initial work to support controlled statement caching. A latching mechanism
is available to ensure two separate statements with the same SQL do not cause
a cached statement to be removed prematurely.
o Corrected bug [1051747] Array out of bounds Exception in ResultSetMetaData;
(thanks to Mike Hutchinson for the patch).
10/20/2004 - Alin Sinpalean
o Corrected a bug that was causing Charsets.properties not to be loaded under
Db-Visualizer (and in any case when the file could not be loaded via the
thread context classloader).
o Made some minor modifications to ConnectionJDNC2.setCollation() to correctly
translate bytes to ints.
o Updated XaTest to drop the test tables on test end. Also prepended "jTDS_"
to all non-temporary table names (in all tests) to ensure no conflicts with
real tables occur.
o Cleaned up Javadoc comments to get rid of build warnings.
o Corrected a bug that was preventing the ConnectionPoolDataSource
implementation from working correctly with JNDI, by having JtdsDataSource
implement this interface, too.
o Corrected bug [1050660] PreparedStatement.getMetaData() clears resultset.
JtdsPreparedStatement.getMetaData() always submitted a request to obtain the
meta data, even if the ResultSet was already available, effectively dumping
the ResultSet. Now it tests for a current ResultSet. An even better approach
would be to use a different TdsCore instance altogether, in any case, but I
think it's unnecessary overhead.
10/15/2004 - Alin Sinpalean
o Applied Mike's fix for bug [1047094] Problem with the store procedure's
return.
10/13/2004 - Alin Sinpalean
o Fixed a couple of errors in Support.convert(), calls to Blob.getBytes() and
Clob.getString() with a position of 0.
o Fixed a bug that was causing ResultSet retrieval by name to return the last
matching column rather than the first.
10/12/2004 - Alin Sinpalean
o Applied Mike's fix for bug [1042272] jTDS doesn't allow null value into
Boolean. Also fixed the broken test for this bug.
10/10/2004 - Alin Sinpalean
o Applied patch [1038937] Support for XA connections. Mike strikes again! :o)
o Added a test for bug [1042272] jTDS doesn't allow null value into Boolean.
Haven't had the time to look into it, but it's good to have the failing test
as a reminder.
10/08/2004 - Alin Sinpalean
o Added checkClosed() calls to JtdsPreparedStatement.setObjectBase(),
getParameterMetaData() and getMetaData(), which were all using the
connection object and could cause NPEs if the statement was closed.
10/07/2004 - Alin Sinpalean
o Applied patch [1040214] "Changes to allow use of default charset", with a
number of minor modifications, including always throwing an SQLException if
the charset cannot be determined or loaded.
o Implemented support for SQL Server 2000 collations. The default charset is
now determined from the collation in the ENVCHANGE packets sent by the
server. Still need to extend this support for collations preceding column
and output parameter descriptions.
o Cleaned up and fixed some of the unit tests.
10/05/2004 - Alin Sinpalean
o Corrected bug [1040475] Possible bug when converting to and from datetime.
SQL Server seems to accept datetime values outside the 1753-9999 range as
long as they are submitted as SYBDATETIME values and not as Strings and they
are read back just fine. Weird.
10/04/2004 - Alin Sinpalean
o Corrected a bug in TdsCore causing "java.sql.SQLException: Output parameters
have not yet been processed. Call getMoreResults()." to be thrown with
Sybase.
o Added a lot of LCID and sort order information to Charsets.properties (I
hope all of it) in preparation for collation support for TDS 8.0.
o Corrected bug [1039876] MS SQL JtdsResultSet.isAfterLast() always returns
false.
10/03/2004 - Alin Sinpalean
o Corrected yet another charset issue. Charsets should work now.
10/02/2004 - Alin Sinpalean
o Corrected a number of charset related issues, the most important of which
was causing iso_1 to be mapped to ISO-8859-1 instead of Cp1252, which is the
actual charset used (at least by MS SQL Server).
o Also cleaned up Charsets.properties and added mappings from Java character
set names back to themselves so that they can be used in the URL or
Properties with their Java name.
09/30/2004 - Alin Sinpalean
o Added some more information (from the FreeTDS mailing list) on
sp_cursoroption parameters.
09/29/2004 - Alin Sinpalean
o Conversion to LONGVARCHAR from most types was broken. Fixed.
===============================================================================
09/29/2004 - jTDS 0.9 released
===============================================================================
Changes from jTDS 0.9-rc2
=========================
09/28/2004 - Alin Sinpalean
o Updated the FAQ, feature matrix and some of the other HTML files.
o Updated driver version as returned by Driver and DatabaseMetaData to "0.9".
o Minor javadoc cleanup.
o Corrected bug [1036059] getTimestamp with Calendar applies tzone offset
wrong way. The getTimestamp(), getTime() and getDate() methods with Calendar
parameters were applying the time zone difference the same way as the set
methods (hope it's not the set methods that were wrong, the JDBC spec is
VERY vague about how the Calendar should be used).
o Corrected bug [1036058] DataSource implementation broken. Thanks, Mike for
finding this before the new release.
09/27/2004 - Alin Sinpalean
o Update counts are read and cached completely (either until the end of the
response or until a ResultSet is encountered) and exceptions are thrown when
an output parameter is read before being set. This means that stored
procedures that return only update counts are processed completely when
executed and output parameter values are available right away.
o Implemented some more support for spcursorprepare (still not complete, so
not used yet).
o Updated the documentation of sp_cursorprepare in apiCursors.html and some
minor things in TDS.html.
o prepareSql=3 (sp_prepare) is supported by TDS 7.0, small update to use it in
jTDS (until now it was downgraded to sp_executesql -- prepareSql=2).
09/24/2004 - Alin Sinpalean
o Updated JtdsDatabaseMetaData.getDriverVersion() to also include misc
version information.
09/23/2004 - Alin Sinpalean
o Applied Mike's patch [1030475] Scrollable/Updateable result sets for Sybase.
09/23/2004 - Alin Sinpalean
o Changed the default TDS version to 8.0 when connecting to SQL Server.
o Corrected bug [1032278] metadata.getColumnClassName not match
resultset.getObject. Also improved handling of LOB columns in updateable
ResultSets: until now, updateObject with a LOB value caused the whole
content to be cached into memory.
o getObject() (both in JtdsResultSet and JtdsCallableStatement) returned
UniqueIdentifier objects for UNIQUEIDENTIFIER columns. Fixed.
o Modified some TdsCore.executeSQL() calls to send -1 for maxRows (in order to
avoid unnecessary SET ROWCOUNT queries).
o JtdsDataSource uses the default values from DefaultProperties instead of
duplicating the initialization. Also, for easier handling, all values are
kept internally as Strings.
09/16/2004 - Alin Sinpalean
o Applied Mike's patch [1028856] Sybase 12 support. Added a Tds5Test class.
o Cleaned up some minor things in tests.
o Added a test for bug [1028881] statement.execute() causes wrong ResultSet
type. Seems like it works, after all.
o Corrected a bug that was causing no exception to be thrown when an invalid
call escape syntax ("{call ?=...") was used.
o Cleaned up some warnings signalled by my IDE again.
09/13/2004 - Alin Sinpalean
o Corrected bug [1027304] DatabaseMetaData.getSchemas() returns 1 column (need
2); for JDBC 3.0 getSchemas() now also returns a NULL TABLE_CATALOG column.
o Added a simple test case for bug [1010660] 0.9-rc1 setMaxRows causes
unlimited temp stored procedures, but was unable to reproduce the behavior.
The test is PreparedStatementTest.testMaxRows().
09/12/2004 - Alin Sinpalean
o Implemented automatic TDS protocol version fallback, according to feature
request [991689] jTDS should automatically detect TDS protocol. Should work
fine with falling back from TDS 8.0 to 7.0 and could work (but I had no way
of testing this) with falling back from 5.0 to 4.2 (although I'm not sure
what will happen with the capabilities token).
09/10/2004 - Alin Sinpalean
o Corrected bug [1023984] Protocol error processing table meta data. Turns out
the TABNAME packet is only different for TDS versions 0x71000001 and up
(i.e. SQL Server versions 2000 SP1 and newer). Added an internalTdsVersion
field to SharedSocket, that should probably replace tdsVersion altogether.
09/07/2004 - Brian Heineman
o Corrected bug [1022968] Long SQL expression error; (thanks to Mike Hutchinson
for the patch).
o Corrected bug [1023984] Protocol error processing table meta data; (thanks to
Mike Hutchinson for the bug report and patch).
09/05/2004 - Alin Sinpalean
o Fixed some minor issues with LOBs and InputStreams/Readers that don't fill
the read buffer.
o Fixed BigDecimal handling in Support.embedData() (used when prepareSQL=0).
BigDecimal values had their precision changed to 10 for some reason.
o Corrected a bug which was causing strings to always be sent as non-unicode
(i.e. not preceded by N') by prepared statements with prepareSQL=0,
regardless of TDS version and settings.
o Corrected bug [1022445] Cursor downgrade warning not raised; thanks Mike for
the find and fix.
o Corrected bug [1022448] NPE Cursor result set errors with prepareSQL != 1;
thanks Mike for the find and fix.
o Added a misc component to the driver version, to include release candidate
information or any other version information besides major and minor version
(e.g. the "-rc2" in 0.9-rc2).
09/02/2004 - Alin Sinpalean
o Corrected bug [1020733] Sysbase test failures; (thanks to Mike Hutchinson
for the bug report and patch).
o Replaced global temporary tables and procedures ("##"-prefixed) with local
temporary tables and procedures ("#"-prefixed) in all tests, after a failure
in the test suite caused by a CREATE TABLE statement.
09/01/2004 - Alin Sinpalean
o Fixed bug #1020324 - "Driver.parseURL method: missing host check". Thanks
duccio for the find and fix.
o Two simple but very important (in terms of performance) tweaks in Messages
(caching the message ResourceBundle and no longer creating and using a
MessageFormat instance when the message has no parameters). Before these two
changes, over 100k+ allocations were made unnecessarily during a single run
of the test suite.
o RequestStream.writeStreamBytes() and writeReaderChars() no longer read/write
one byte/char at a time, but rather use a buffer. This should considerably
improve performance.
o Added a simple check and a read loop instead of a single read to BlobImpl
and ClobImpl.
o Small changes in LargeLOBTest.testLargeBlob1() and
TestBase.compareInputStreams()/compareReaders() to improve performance. All
three now use buffers instead of reading/writing one byte at a time.
LargeLOBTest runs now in just over a minute.
o Added a test for bug #1008816 - '"More data in stream ..." error when
inserting an image' to LOBTest (testBlobSet8). This seems to have been fixed
starting with 0.9-rc1.
08/31/2004 - Alin Sinpalean
o Improved BlobImpl internal OutputStream write(byte[], int, int)
implementation. No longer uses write(byte). Also cleaned up somewhat
ClobImpl.
o TestBase.compareInputStreams() and compareReaders() were not checking for
EOF on the first input stream/readed. Fixed.
o LargeLOBTest now only runs if the 'jTDS.runLargeLOBTest' system property is
defined. Should do this with 1.4-only test methods too.
o Updated build.sh to work on my development machine (should work better on
any *NIX now).
o Cleaned up some Javadoc comments that were causing warnings when generating
the documentation.
o Cleaned up some IntelliJ IDEA warnings, including a possible bug that could
cause NPEs in TdsCode.executeSQL70().
===============================================================================
08/28/2004 - jTDS 0.9-rc2 released
===============================================================================
Changes from jTDS 0.9-rc1
=========================
08/28/2004 - Brian Heineman
o Corrected bug [1017957] 9.1 rc1 and resin 3.0.8 incompatibilities?;
JtdsDataSource no longer inherits accessors and mutators from another class.
o Corrected bug [1017896] Fn convert parameters wrong way round; (thanks to
Mike Hutchinson for the bug report and patch).
o Corrected bug [1017164] executeQuery fails with > 2 resultsets; (thanks to
Mike Hutchinson for the patch).
o Applied patch attached to bug [1017616] 0.9-RC1 Threading problem; (thanks to
Mike Hutchinson for the patch).
o Added test for bug [1008882] Some queries with parameters cannot be executed
with 0.9-rc1
o Numerous javadoc corrections for release.
08/24/2004 - Brian Heineman
o Corrected JDBC compliance test files per Mike Hutchinson's recommendations:
http://sourceforge.net/forum/message.php?msg_id=2724244
o Corrected bug [1009233] ResultSet getColumnName, getColumnLabel return wrong
values; (thanks to Mike Hutchinson for the fix).
o Added test for bug [1009233] ResultSet getColumnName, getColumnLabel return
wrong values.
o Corrected bug [1015543] ResultSetMetaData.isNullable always returns
columnNoNulls; (thanks to Mike Hutchinson for the bug report and patch).
o Miscellaneous test clean up.
08/22/2004 - Brian Heineman
o Corrected bug [1013749] Driver does not support params inside escapes;
(thanks to Mike Hutchinson for the bug report and patch).
o Corrected bug [1013819] Cursor downgraded bug;
(thanks to Mike Hutchinson for the bug report and patch).
08/21/2004 - Brian Heineman
o Applied patch [1013432] Patches for SUN JDBC Compatibility test; (many thanks
again to Hutchinson for the patch. The driver now passes the SUN JDBC
compatibility test suite 1.3.1). The following issues were also addressed in
this patch:
[1012307] PreparedStatement.setObject (java.util.Date) not working;
(Server not reporting that java.util.Date is not a supported object type)
[1012301] 0.9-rc1: Prepared statement execution error;
(Leading spaces cause the parameter marker offsets to be incorrect)
[1011650] 0.9-rc1: comments get parsed; (Added Joel Fouse's patch plus
modifications to ensure that driver can cope with comments before the first
SQL statement).
[1002971] TimestampTest failures under JDK 1.3 (Possible class cast
exception in TdsData).
[1008126] Metadata getTimeDateFunctions() wrong
o Corrected bug [1012318] 0.9-rc1 throw NullPointerException if user/password
passed; if a null user or password was passed the driver would throw a
NullPointerException.
o Corrected stored prcedure cursor parameter definitions.
08/17/2004 - Brian Heineman
o Additional corrections for bug [966274] Trusted Connections no longer work;
(thanks to David Kilzer and Joel Fouse).
o Corrected bug [1009234] sp_prepare and sp_prepexec should be limited to TDS
8.0
o Added initial support for sp_cursorprepare, sp_cursorprepexec and
sp_cursorexecute; statement handles are not currently cached for reuse. This
corrects bug [1008097] 0.9-rc1 prepareSQL=3 - read only cursor.
08/16/2004 - David Kilzer
o New JtdsObjectFactoryUnitTest class used to test JtdsObjectFactory class.
o Pulled ucFirst() method out of JtdsDataSourceUnitTest class into
DefaultPropertiesTestLibrary class.
08/16/2004 - Brian Heineman
o Corrected bug [966274] Trusted Connections no longer work; (thanks to Mike
Hutchinson for the patch and all the users who helped to find the problem).
08/14/2004 - Brian Heineman
o Corrected bug [1006449] 0.9rc1: Driver version broken; (thanks to Mike
Hutchinson for the patch).
08/13/2004 - Brian Heineman
o Added test for bug [1008208] 0.9-rc1 updateNull doesn't work
o Added initial support for prepareSql=4; sp_prepexec used in conjunction with
sp_execute. Currently the statement handle is not retrieved and cached so
sp_prepexec is being called each time. Update the FAQ to indicate that
sp_prepexec functionality is experimental.
o Corrected bug [1008208] 0.9-rc1 updateNull doesn't work; updated test to
ensure functionality continues to work in the future.
08/13/2004 - David Kilzer
o Applied patch to check if connection is null before calling
connection.isClosed() in JtdsStatement. Patch posted to
[1007962] 0.9-rc1 NullPointerException; was created while debugging an
issue with named pipes.
08/12/2004 - Brian Heineman
o Added result set tests for min and max values.
o Added result set tests for BIGINT.
o Corrected conversion errors with Long values that were sent as BigDecimal;
the value sent to the database was not the value specified.
08/11/2004 - Brian Heineman
o Applied patch in bug [1006845] Stored procedure with 18 parameters; (thanks
to Mike Hutchinson for the patch).
o Added test for bug [1006845] Stored procedure with 18 parameters
08/10/2004 - Brian Heineman
o Applied patch in bug [1006218] getObject returns incorrect Java class;
(thanks to Mike Hutchinson for the patch).
===============================================================================
08/09/2004 - jTDS 0.9-rc1 released
===============================================================================
Changes from jTDS 0.8.1
=======================
08/09/2004 - Brian Heineman
o Corrected bug [1005881] Typo in Exception message "Uknown server host name
abc"
o Corrected bug [1005644] Small bug in ant build file; (thanks to Mike
Hutchinson for the fix).
o Applied patch [1005550] Documentation on sp_cursorprepare etc.; (thanks to
Mike Hutchinson for the patch).
08/07/2004 - David Kilzer
o Changed AbstractDataSource.getTdsVersion() and setTdsVersion() back to
getTds() and setTds() to preserve external interface. Left private data
member named tdsVersion to provide consistency with private field in
ConnectionJDBC2 and to make testing easier.
08/07/2004 - Brian Heineman
o Applied patch [1005207] Modified microsoftPrepare method; (thanks to Mike
Hutchinson for the patch).
08/06/2004 - David Kilzer
o De-uglified the Driver.getPropertyInfo() method. The code reads much
cleaner now.
o Revised insert/update/delete-new-property mini-howto in DefaultProperties.
o Created overloaded DefaultProperties.getServerType() methods to convert
server type from String to Integer and Integer to String. Implemented in
Driver and JtdsDataSource classes.
o Created JtdsDataSourceUnitTest class. Cleaned up AbstractDataSource to
use DefaultProperties defaults, added missing appName and progName
properties, fixed type of prepareSql from boolean to int, and renamed
isLastUpdateCount() to getLastUpdateCount(). Fixed parsing of new type
of prepareSql property in JtdsObjectFactory.getObjectInstance().
o Updated DefaultPropertiesTestLibrary to contain flags for only testing a
default setup of SQL Server and/or TDS 7.0.
o Updated DriverPropertyInfo choices for prepareSql property.
o Cleaned up DefaultPropertiesTestLibrary so it is easier to extend.
o Created ConnectionJDBC2UnitTest.
o Created DefaultProperties.getTdsVersion() method to convert Tds version
string to an integer. Created unit tests in DefaultPropertiesUnitTest.
o Created UnitTestBase.invokeGetInstanceField() method for
ConnectionJDBC2UnitTest.
o On ConnectionJDBC2 class: renamed private field serverPort to portNumber,
added private default constructor for testing, and implemented use of
DefaultProperties.getTdsVersion().
o INCOMPATIBLE INTERFACE CHANGE: Renamed AbstractDataSource.getTds(),
setTds() and private tds field to getTdsVersion(), setTdsVersion() and
tdsVersion to match private field in ConnectionJDBC2. This also affects
JtdsDataSource. [Reverted: see 08/07/2004]
o ConnectionJDBC2.unpackProperties(): Removed code that set default
property values since this is now handled in Driver.parseURL() before
the method is called. Refactored common code into parseIntegerProperty()
and parseLongProperty() methods.
o New unit test in ConnectionJDBC2UnitTest for testing that
unpackProperties() throws an SQLException when parsing an invalid integer
or long property.
08/06/2004 - Brian Heineman
o Update the usage of the prepareSql parameter. This parameter is now used to
determine how prepared statements are sent to the server. Options include:
0 - SQL is sent to the server each time without any preparation
1 - Temporary stored procedures are created for each unique SQL statement
and parameter combination
2 - sp_executesql is used
3 - sp_prepare is used in conjunction with sp_execute
4 (not implemented) - sp_prepexec is used in conjunction with sp_execute
Update the FAQ to include this new information.
o Corrected bug with sp_prepare/sp_execute logic where statements without
parameters were being sent as raw SQL even though the SQL was prepared with
sp_prepare.
o Corrected bug introduced with early work where the temporary stored procedure
name may not have been unique for the connection.
08/05/2004 - David Kilzer
o Added missing javadoc to DriverUnitTest methods.
o Renamed Messages.defaultResource to Messages.DEFAULT_RESOURCE to reflect its
use.
o Refactored Driver.getPropertyInfo() so that properties are not hard-coded.
Added Messages.loadDriverProperties() method. Wrote additional unit tests
for Driver.getPropertyInfo() in DriverUnitTest. Added more utility methods
to UnitTestBase.
08/05/2004 - Brian Heineman
o Applied Mike Hutchinson's patch for [996631] Refactoring and some performance
optimization.
o Removed extraneous import statements.
o Added check in data conversion for LOB values with a length greater than
2,147,483,647.
o Added "and Sybase" to JtdsDatabaseMetaData.getDriverName().
08/04/2004 - Brian Heineman
o Applied patch in bug [1003507] Cursor result set close error;
(thanks to Mike Hutchinson for report and the fix).
o Removed assertEquals(double,double) to avoid Eclipse execution failures.
08/04/2004 - David Kilzer
o Renamed Settings class to DefaultProperties to match its use. Removed
redundant "DEFAULT_" prefix from its public static constants.
o Refactored DefaultProperties to remove duplicate code.
o Created DefaultPropertiesUnitTest to test new methods in DefaultProperties.
o Moved methods related to Messages.propertes from Support class to new
Messages class. Support.getMessage() is now Messages.get().
o Wrote unit test for Driver.getPropertyInfo() in preparation for future
refactoring.
08/03/2004 - Brian Heineman
o Applied patch in bug [1002811] Poor performance of cursor result sets;
(thanks to Mike Hutchinson for the fix).
o Applied patch in bug [1001956] updateBytes() converted to hex string in
varchar; (thanks to Mike Hutchinson for the fix).
08/03/2004 - David Kilzer
o Swapped descriptions of appName and progName in FAQ.
o Renamed internal libName variable to progName to match external property.
o Cleaned up Messages.properties to remove prop.libname (prop.progname already
existed) and to add prop.desc.appname and prop.desc.progname properties.
o Clean up comments to reference Driver.SQLSERVER and Driver.SYBASE instead of
TdsCore or old Tds classes.
o Add code to check for inherited methods, not just locally declared methods,
in UnitTestBase static methods.
o Fixed Driver.getPropertyInfo() to parse url when null properties are used.
o Created new Settings class to hold default settings values and related
utility methods.
o Moved port and LOB buffer constants from TdsCore to Settings.
o Modified Driver.parseURL() to set default properties using
Settings.addDefaultProperties().
o Created DefaultPropertiesTestLibrary class for testing Driver.parseURL().
o Implemented Settings.TDS_VERSION_XX constants in various classes.
o Added test suite to DriverUnitTest to test Driver.getPropertyInfo().
o Added missing 'appname' and 'progname' properties to, and removed default
setting code (now handled in parseURL()) from, Driver.getPropertyInfo().
08/01/2004 - Brian Heineman
o Partial application of patch [997595] SQL 6.5 Test suite.; general test clean
up.
o Updated tests so that they compile with the 1.3 JDK.
o Updated BlobImpl and ClobImpl so that they compile with the 1.3 JDK.
o Corrected bug in Blob and Clob file writes where a NullPointerException was
thrown if close() was called twice on a stream.
o Corrected bug in JtdsPreparedStatement.getParameter() where the error check
would incorrectly allow a 0 value (thanks to Mike Hutchinson for the report
and fix).
o Corrected bug in TdsData.getVariant() where the SYBUNIQUE case would return
an incorrect UID string (thanks to Mike Hutchinson for the report and fix).
07/30/2004 - Brian Heineman
o Updated build process to correct bug [999702] LICENSE file not included in
source distribution
07/29/2004 - David Kilzer
o Changed default Sybase port from 4000 to 7100 in faq.html to match value
of TdsCore.DEFAULT_SYBASE_PORT.
o Created TdsCore.DEFAULT_LOB_BUFFER_SIZE constant. Replaced use of "magic"
values in other classes.
o Replaced more "magic" values with TdsCore.MIN_PKT_SIZE and
TdsCore.MAX_PKT_SIZE in various classes.
o Made TestBase and DatabaseTestCase abstract so that IntelliJ IDEA would
not try to instantiate them and run them.
o Created new abstract UnitTestBase class to hold reflection methods used
by other test classes.
o Changed NamedPipeUnitTest to extend UnitTestBase.
o Changed CSUnitTest to use UnitTestBase methods.
07/28/2004 - David Kilzer
o Moved TdsCore.TDS42, TDS50, TDS70, TDS80, SQLSERVER and SYBASE constants
to Driver class per suggestion by Mike Hutchinson.
o Made TdsCore.DEFAULT_SQLSERVER_PORT and DEFAULT_SYBASE_PORT public.
Removed use of "magic" values in other classes.
o Applied patch [997211] Refactor Tds8Test to skip tests if not using TDS 8.0.
Removed unused TestBase.connectODBC() and TestBase.getConnectionODBC()
methods. Now use loadProperties(ODBC_CONNECTION_PROPERTIES) to switch
the connection to use ODBC.
o Created new DatabaseTestCase.dropProcedure() method that takes an
additional Statement argument. Updated AsTest.testProc1() and testProc2()
to use the new dropProcedure() method.
07/27/2004 - David Kilzer
o Renamed SharedNamedPipeTest to NamedPipeUnitTest to better reflect its
usage.
o Added protected getters and setters to SharedSocket so that the in, out,
tdsVersion and serverType fields could be made private again. Implemented
use of getters and setters in SharedSocket and SharedNamedPipe.
o Refactored SharedNamedPipe constructor into an instance() static factory
method. Allowed calculateBufferSize() method to be made non-static,
and will allow for easier unit testing in the future.
o Cleaned up javadoc: fixed spelling and removed unused @throws.
o Fixed CallableStatementTest.testCallableRegisterOutParameter1() which was
using the '==' operator on String objects. Changed to use assertEquals()
instead. Cleaned up two other uses of '==' inside assert*() methods.
07/27/2004 - Brian Heineman
o Added test for bug [998765] Exception with Sybase and metaData.getTables()
07/26/2004 - David Kilzer
o Made SharedNamedPipe constructor package-private to match SharedSocket
constructor.
o Made TdsCore.SQLSERVER and TdsCore.SYBASE public. Removed use of
"magic" values.
o Fixed default value of lobBuffer in AbstractDataSource.getReference().
It was using "portNumber" instead of "lobBuffer" for its default.
o Made TdsCore.TDS42, TDS50, TDS70, TDS80 constants public for use with
testing.
o Made TdsCore.MIN_PKT_SIZE public, and created TdsCore.MAX_PKT_SIZE and
TdsCore.DEFAULT_MIN_PKT_SIZE_TDS70. Removed used of "magic" values.
o Wrote new SharedNamedPipeTest class for testing new
SharedNamedPipe.calculateBufferSize() method.
o Fixed bug in SharedNamedPipe that caused it to create a zero-length
BufferedInputStream internally when packetSize == 0 (which is common
for TDS 7.0 and TDS 8.0 to allow the server to set the packet size).
07/26/2004 - Brian Heineman
o Removed extraneous methods from SharedSocket and SharedNamedPipe.
07/25/2004 - David Kilzer
o Fixed bug when using instances with named pipes. ConnectJDBC2 constructor
was trying to determine the correct serverPort by creating a MSSqlServerInfo
object, which is not necessary for named pipes.
o Fixed bad message key in ConnectJDBC2.unpackProperties(). Changed
"prop.portservertype" to "prop.servertype".
07/25/2004 - Brian Heineman
o Applied patch [991684] Implement named pipe IPC for SQL Server 6.5; (Thanks
to David Kilzer <ddkilzer@users.sourceforge.net> for the patch)
07/23/2004 - Brian Heineman
o Improved ConnectionPoolDataSource exception processing and closed connection
handling.
o Applied patch [989791] Workaround for null values in properties; (Thanks to
Art Gramlich for the original patch)
o Corrected documentation for the lastUpdateCount connection property.
07/22/2004 - Brian Heineman
o Added lobBuffer parameter to control the memory used by LOB's.
o Updated FAQ documentation with new parameter information and TDS protocol
support.
o Corrected bug in Blob and Clob truncate() methods that caused a
NullPointerException to be thrown for disk based LOBs.
o Corrected bug in TestBase where InputStreams and Readers were not being
closed.
o Added test for bug [945462] getResultSet() return null if you use
scrollable/updatable
07/21/2004 - Brian Heineman
o Added test for bug [994988] Network error when null is returned via int
output parm
o Corrected bug [994916] datetime decoding in TdsData.java; Added tests to
ensure this functionality continues to work in the future.
o Added test for bug [983432] Prepared call doesn't work with jTDS 0.8
o Added test for bug [981958] PreparedStatement doesn't work correctly
07/20/2004 - Brian Heineman
o Added test for bug [974284] retval on callable statement isn't handled
correctly
o Added test for bug [994888] Callable statement and Float output parameter
07/19/2004 - Brian Heineman
o Applied patch in bug [992971] Decimal testcase fails with sql7 (Thanks to
Mike Hutchinson for the patch)
o Corrected bug introduced in Clob optimization.
o Added test for bug [992715] wasnull() always returns false
o Added test for bug [991640] java.sql.Date error and RAISERROR problem
07/17/2004 - Brian Heineman
o Applied patch in bug [992971], which corrects bug [992976] Zero length
string error on Sybase and MSQL 6.5 (Thanks to Mike Hutchinson for the
patch); made a minor change to reduce memory allocation.
07/15/2004 - Brian Heineman
o Refactored JtdsDataSource implementation into AbstractDataSource,
JtdsDataSource and JtdsConnectionPoolDataSource.
o Updated FAQ documentation to reflect current driver and data source class
names.
o Added test for bug [930305] getGeneratedKeys() does not work with triggers
o Added test for bug [974801] stored procedure error in Northwind
07/14/2004 - Brian Heineman
o Updated ResultSetMetaData.getColumnType(int) always return Types.BIT for BIT
columns. Updated tests to ensure this functionality continues to work in the
future.
http://sourceforge.net/forum/forum.php?thread_id=1108433&forum_id=129584
o Corrected bug [991033] Data type 0x32 is unknown error with SQL Server 2005;
SYBBITN values are now properly formed and are no longer sent as SYBBIT
when they are not null.
o Corrected bug [991088] Data type 0x3E is unknown error with SQL Server 2005;
SYBFLTN values are now properly formed and are no longer sent as SYBFLT8
when they are not null.
o Updated documentation to reflect SQL Server 2005 compliance.
07/13/2004 - Brian Heineman
o Corrected bug [989963] BigInt becomes Numeric;
ResultSetMetaData.getColumnType(int) now returns Types.BIGINT. Added tests
to ensure this functionality continues to work in the future.
o Added test for bug [989399] bug? blob.getBytes() from 0
o Updated ResultSetMetaData.getColumnType(int) to return Types.BOOLEAN for BIT
columns when using a 1.4+ JRE; returns Types.BIT otherwise. Added tests
to ensure this functionality continues to work in the future.
07/12/2004 - Brian Heineman
o Removed JNetDirect performance results to comply with their licensing.
07/08/2004 - Brian Heineman
o Added test for bug [983561] getDatetimeValue truncates fractional
milliseconds.
07/07/2004 - Brian Heineman
o Added test for bug [974036] Bug in 0.8rc1 DatabaseMetaData method
getTableTypes()
o Corrected bug [985956] Cannot setObject(null) on image; Added test to ensure
this functionality continues to work in the future.
o Added test for feature request [956800] setNull(): Not implemented
o Corrected bug [919477] Large LOB data causes OutOfMemoryError; Blob/Clob
data is now buffered to disk for reads as well as writes if the data
exceeds 32KB.
o Reduced amount of time Blob/Clob objects are locked due to synchronization.
o READTEXT support has been temporarily disabled. This feature will be
enabled again once code is in place to control the in-memory buffering via
a connection property and WRITETEXT support is added.
o Added test for bug [939206] TdsException: can't sent this BigDecimal
o Added test for bug [946171] null boolean in CallableStatement bug
o Added test for bug [963799] float values change when written to the database
o Added test for bug [961594] ResultSet.
o Added test for bug [985754] row count is always 0
07/01/2004 - Brian Heineman
o Improved Blob and Clob support. Writes done through a Blob or Clob are now
buffered in memory if the data size is less than 32KB. If the data size is
greater than 32KB, the Blob/Clob will attempt to cache the data to disk.
A failed attempt at disk caching due to a SecurityException will be logged
and the Blob/Clob data will remain in memory. Also, the READTEXT mechanism
will only convert to an in-memory or disk based Blob/Clob if a write attempt
is made.
o Improved Blob and Clob conversions to/from other data types.
06/29/2004 - Brian Heineman
o Corrected bug with cached statements and savepoints. If a statement was
cached after a savepoint was set, that statement would not be removed
from the cache if the savepoint was rolledback. Added test to ensure
this functionality continues to work in the future.
06/23/2004 - Brian Heineman
o Applied patch [950028] Jtds enhancement - TDS 5.0 (thanks to code provided
by Mike Hutchinson this patch corrects a number of bugs and adds initial
support for TDS 8.0 as well). See NEWCODE.TXT for additional information.
o Corrected bug with Savepoint id assignment.
o Improved performance of data conversions by reducing memory allocations.
===============================================================================
07/08/2004 - jTDS 0.8.1 released
===============================================================================
Changes from jTDS 0.8
=====================
07/08/2004 - Brian Heineman
o Corrected bug [983561] getDatetimeValue truncates fractional milliseconds.
07/07/2004 - Brian Heineman
o Corrections to compile with the 1.3 JDK; updated Types.BOOLEAN references
to Tds.BOOLEAN.
06/27/2004 - Brian Heineman
o Corrected bug [974036] Bug in 0.8rc1 DatabaseMetaData method getTableTypes()
===============================================================================
06/22/2004 - jTDS 0.8 released
===============================================================================
Changes from jTDS 0.8-rc1
=========================
06/08/2004 - Brian Heineman
o Corrected bug [965018] translateDate is not recognized function name.
05/30/2004 - Brian Heineman
o Corrected bug where "Cp" or "MS" was being appended to strings that already
started with a different case of the same sequence of characters.
o Corrected bug in date time handling (thanks to code provided by Mike
Hutchinson).
05/06/2004 - Brian Heineman
o Corrected bug [946642] No support for 1.4 java.sql.Types.BOOLEAN.
05/03/2004 - Brian Heineman
o Corrected TdsSocket to compile under 1.3.
o Added initial (limited) ParameterMetaData support.
o Updated DatabaseMetaData.supportsStatementPooling() to return true.
05/02/2004 - Brian Heineman
o Updated SQLException handling to set the initCause() method with the
initiating exception if the JVM supports it (1.4+). Otherwise, the
inital cause of the exception is ignored (JVM's prior to 1.4).
05/01/2004 - Brian Heineman
o Consolidated logic for returning data from result sets and callable
statements.
o Added support for additional data conversions.
o Implemented CallableStatement.getBlob(int)
o Implemented CallableStatement.getClob(int)
o Implemented CallableStatement.getBigDecimal(int)
o Implemented CallableStatement.getBigDecimal(int,int)
o Implemented CallableStatement.getDate(int)
o Implemented CallableStatement.getDate(int,Calendar)
o Implemented CallableStatement.getTime(int)
o Implemented CallableStatement.getTime(int,Calendar)
o Implemented CallableStatement.getTimestamp(int)
o Implemented CallableStatement.getTimestamp(int,Calendar)
04/30/2004 - Brian Heineman
o Added test for bug [945507] closing statement after selecting a large
IMAGE - Exception
o Applied second update to patch [934396] better IO error handling; thanks to
Fedor Karpelevitch.
04/21/2004 - Brian Heineman
o Corrected bug [938632] String index out of bounds error in 0.8rc1;
added test to ensure functionality continues to work in the future.
o Corrected bug [938494] setObject(i, o, NUMERIC/DECIMAL) cuts off decimal
places; added test to ensure functionality continues to work in the future.
04/20/2004 - Brian Heineman
o Updated DatabaseMetaData.supportsNamedParameters() to return true.
04/19/2004 - Brian Heineman
o Implemented CallableStatement.getMetaData() and
PreparedStatement.getMetaData(); both implementations are currently
sub-optimal due to the fact they are executing the query to obtain the
ResultSetMetaData.
o Corrected PreparedStatement caching bug related to changing catalogs.
04/16/2004 - Brian Heineman
o Corrected bug [934273] setNull does not set IMAGE type to null; added tests
to ensure functionality continues to work in the future.
o Corrected NullPointerExceptions thrown from ResultSet.updateBinaryStream(),
ResultSet.updateBlob(), ResultSet.updateAsciiStream(),
ResultSet.updateCharacterStream() and ResultSet.updateClob() if a null value
was passed in.
o Improved LOBTest performance; runs in ~1 second now instead of 60+.
o Minor optimizations for sending character data.
o Improved exception handling throughout the driver to provide the complete
stack trace of any nested exception.
o Applied part of patch [934396] better IO error handling; thanks to Fedor
Karpelevitch.
04/14/2004 - Alin Sinpalean
o Applied and improved patch #930076 - Passing parameters to stored procedure
by name. Thanks Tommy Sandstrom for the original patch.
04/12/2004 - Brian Heineman
o Corrected bug preventing connections to databases with spaces in the name.
o Added check to commit() and rollback() to determine if connection is closed
to fix bug [931090] ArrayIndexOutOfBoundsException in rollback()
o Added test for bug [931090] ArrayIndexOutOfBoundsException in rollback()
04/05/2004 - Brian Heineman
o Code clean up - removed unused import statements.
04/04/2004 - Alin Sinpalean
o Cleaned up TEXT and IMAGE sending. Now there's only one method for each of
them. Also simplified CHAR/VARCHAR and BINARY/VARBINARY sending code.
o Added an appendChars method to TdsComm that accepts a char array and a length
as parameters.
o Moved output logging before the call to TdsSocket.sendNetPacket() to avoid
logging zeros (if the method returned a new buffer and buffered the old one).
o Created the Tds.handleEndToken() static method to have a unified handling of
end token status flags. It's now called for all the end tokens processed.
o Modified row count handling in Tds. Now the "valid row count" flag and the
operation code flag are checked and only valid update counts not from SELECTs
are kept; row counts for DDL statements are always set to 0. Also, update
counts are returned for CallableStatements too, as Mike suggested. This seems
to be more or less the behavior of the other SQL Server drivers.
o CursorResultSet now consumes update counts returned by the sp_cursor stored
procedures rather than throwing exceptions.
o Updated the TDS documentation with some new information on end token status
flags and operation codes.
o Updated the unit tests that were failing because of the new way update counts
are managed.
04/03/2004 - Brian Heineman
o Updated binary data support so that data set via a stream or Blob is not
cached entirely in memory before being sent to the server. No more than
1KB of data read from the stream or Blob is buffered in memory at any time.
o Updated text data support so that data set via a stream or Clob is not
cached entirely in memory before being sent to the server. No more than
1KB of data read from the stream or Clob is buffered in memory at any time.
04/02/2004 - Brian Heineman
o Updated Tds.cvtJdbcTypeToNativeType to treat java.sql.Clob as SYBTEXT
instead of SYBCHAR.
o Added support to TdsUtil for Blob and Clob data types to improve exception
reporting.
o Cleaned up EncodingHelper in preperation for Clob stream support; removed
initialization logic for Microsofts VM (which jTDS is no longer compatible
with as it uses Java 2 classes).
04/01/2004 - Alin Sinpalean
o Fixed an issue in TdsSocket that was causing queued output not to be flushed
when sendNetPacket() was called (i.e. a packet from the middle of the request
was sent out first causing SQL Server to close the connection).
o Initialized the charset field of TdsDataSource to the empty String (bug
#927764).
04/01/2004 - Brian Heineman
o Updated ResultSet.updateObject() to work properly with Blob and Clob values.
o Corrected ClasCastException when Blob or Clob values were used with cursor
result sets.
o Updated savepoint SQL to use SAVE TRAN/ROLLBACK TRAN instead of
SAVE TRANSACTION/ROLLBACK TRANSACTION.
03/31/2004 - Alin Sinpalean
o Added a test for bug #926620 (Too long value for VARCHAR field) and fixed it
by adding a test in Tds.executeProcedureInternal().
o Added code to set the maximum length of BINARY/VARBINARY fields in
ParameterUtils.createParameterMapping(), because the test added to Tds was
causing binary parameters throw exceptions every time.
o Reduced the size of the TimestampTest.testNestedStatements0022() and
TimestampTest.testNestedStatements0026(), because they were running
incredibly slow on my development machine and did not help at all.
03/30/2004 - Alin Sinpalean
o Silently updated the JUnit and Ant jars in the 0.8-rc1 source packet.
o Moved the Savepoint-related methods from TdsConnection into a new class,
TdsConnectionJDBC3. Now new Connections are dynamically created from one of
the two classes depending on the Java specification version of the JVM.
o Added some more old date tests, still haven't been able to reproduce anything
on my machine.
o Added patch #926168 (add some meta-info to jar manifest) submitted by Fedor
Karpelevitch.
o Updated the connection.properties template to include the user property.
03/28/2004 - Brian Heineman
o Implemented Savepoint support.
o Updated DatabaseMetaData.supportsSavepoints() to return true.
o Implemented DatabaseMetaData.supportsMultipleOpenResults(); returns true.
o Implemented DatabaseMetaData.supportsNamedParameters(); currently returns
false.
o Implemented DatabaseMetaData.supportsStatementPooling(); currently returns
false.
03/27/2004 - Brian Heineman
o Added test to demonstrate bug [924030] EscapeProcesser problem with "{}"
brackets
===============================================================================
03/30/2004 - jTDS 0.8-rc1 released
===============================================================================
Changes from jTDS 0.7.1
=======================
03/29/2004 - Alin Sinpalean
o jTDS is now licensed under the LGPL. This means that noone will be able to
sell jTDS or any derivatives and that any modifications to it must be made
public. This decision has been discussed and approved in the jTDS developer
forum.
o Updated the documentation and README to reflect the license change.
o Changed the "Project Home" link to "Project Info" to avoid confusion and
reordered the links, placing the local ones first.
03/28/2004 - Alin Sinpalean
o Compiled (a lot of) new documentation.
o Modified property names in TdsDefinitions and TdsDataSource to match the
documentation.
03/27/2004 - Brian Heineman
o Corrected parsing bug in EscapeProcessor that occured when "{" or "}" were
found in a quoted string.
03/26/2004 - Alin Sinpalean
o Fixed the fix for bug #922802. ;o) There was a NPE thrown if the batch was
empty at its first execution.
o Added a test for bug #582464 (which, although closed, was signalled again
with a different date - 06/15/1940 0:00:00). Turns out I couldn't reproduce
it.
03/26/2004 - Brian Heineman
o Added ResultSet.getObject() support for IMAGE, TEXT and NTEXT fields to
return Blob and Clob objects. Added tests for new functionality.
o Added Blob and Clob support to ResultSetMetaData.getColumnClassName().
o Corrected bug [887508] getObject returns Integer-Object on Types.Smallint;
added test to ensure functionality continues to work in the future.
03/25/2004 - Alin Sinpalean
o Fixed bug #922802 (TdsStatement.executeBatch() throws exception if no
statements added). Indeed other drivers work just fine with empty batches and
the spec doesn't mention anything about throwing an exception if no batch was
added.
03/24/2004 - Alin Sinpalean
o Applied Mike's "Streamlined stored proc processing" patch (#916084). Seems
like all I'm doing lately is answering forum questions and applying Mike's
great patches. ;o)
03/21/2004 - Alin Sinpalean
o Applied Mike's SqlMessage patch to generate SQL state values based on native
error codes, changed the implementation (from sorted array to HashMap) and
added a lot of new mappings.
03/20/2004 - Brian Heineman
o Corrected bug [919594] Clob support; added setObject support for both
java.sql.Blob and java.sql.Clob. Added initial Blob and Clob functional
tests.
o Corrected SQLException in getBytes() due to invalid length calculation.
03/14/2004 - Alin Sinpalean
o Applied Mike's version 4 of the single connection patch fixing a number of
issues (see patch #912364 for the exact description).
o Updated the home page with a lot of new stuff and added it to the CVS
repository.
03/13/2004 - Alin Sinpalean
o Applied a patch by jarek_woloszyn fixing the behavior of lastUpdateCount
when set.
o Fixed yet another bug (#914069) which prevented cursor-based ResultSets from
working with PreparedStatements (an update count was returned, which caused
an exception to be thrown). Updated SAfeTest to test this.
o Fixed and simplified current row and total row count handling in
CursorResultSet.
03/08/2004 - Alin Sinpalean
o Split up table name from TDS_TABNAME packet into catalog, schema and table,
if fully qualified.
o Hidden columns (those for which the hidden flag is set in the TDS_COLINFO
packet) modify the fake column count; they are (hopefully always) the last
ones in the ResultSet.
o Updated the details of the TDS_TABNAME and TDS_COLINFO packets in the TDS
documentation.
03/07/2004 - Alin Sinpalean
o The main Tds instance is now always created even if no cursor ResultSets are
used, as it simplifies the internals of TdsConnection and doesn't create an
additional physical connection anymore.
o Moved connection initialization from Tds to TdsConnection.
o Moved the EncodingHelper instance from Tds to TdsConnection.
o Removed the 'host' URL parameter as it was only duplicating 'serverName'.
o Replaced direct access to Tds instance 0 with synchronized access to the
main Tds instance (which now always exists) for database change, commit,
rollback or settings change. In the previous implementation access was not
synchronized and could interfere with (or completely consume the output of)
some Statement.
o Moved handling of current database and charset to TdsConnection and handling
of buffer size to TdsSocket (via TdsComm) from Tds.
03/06/2004 - Alin Sinpalean
o Applied Mike's single connection patch. It's the first time I see jTDS
passing ALL the tests. Thanks a million, Mike! :o)
o Fixed an issue that rendered the 'macAddress' parameter unusable.
o Reformatted TdsComm and cleaned up a bit the javadoc.
03/04/2004 - Brian Heineman
o Corrected Blob and Clob methods to be 1 based not 0 based per the JDBC
specification.
o Numerous minor performance enhancements that reduce memory allocations,
assignments and cost of control logic.
03/03/2004 - Brian Heineman
o Corrected bug [909169] jTDS 0.7: introduced another bug (Stored Procedure);
added test to ensure functionality continues to work in the future.
o Updated CallableStatements to parse SQL according to ANSI specifications.
===============================================================================
03/03/2004 - jTDS 0.7.1 released
===============================================================================
Changes from jTDS 0.7
=====================
03/03/2004 - Alin Sinpalean
o Added the 'macAddress' URL parameter allowing the user to specify the MAC
address of the network interface card. There's no way to determine this from
Java code and it can cause problems with licensing limitations.
o Fixed an issue affecting SQL Server 6.5 related to binary data. Binary
values were defined as 'binary(8000)' while the maximum length for 6.5 is
255. (thank you, Mike)
o Fixed bug [907431] (Statement does not return auto-generated keys). In fact,
the actual issue was that if a execute was not called with
RETURN_GENERATED_KEYS specified and then getGeneratedKeys() was called, an
uninitialized ResultSet was returned instead of throwing an exception.
o Finally added the API server cursor (sp_cursor procedures) documentation and
the test results (excluding JSQLConnect, whose license prohibits this).
02/27/2004 - Alin Sinpalean
o Fixed the implementation of cursor-based ResultSets obtained from prepared
and callable statements with parameters. Initially I wrote no tests and I
just supposed it will work. Well, I was wrong.
o Wrote a test for the newly implemented functionality and it finally seems to
work.
===============================================================================
02/26/2004 - jTDS 0.7 released
===============================================================================
Changes from jTDS 0.6
=====================
02/26/2004 - Alin Sinpalean
o Applied part of a patch from Christian Ullenboom, with various small
optimizations.
02/24/2004 - Alin Sinpalean
o Applied Mike's changes as a result of testing the cursor-based ResultSets
with SQL Server 6.5.
o Introduced a serverVer field into TdsConnection to be able to check the DB
version when using certain features (in particular SCOPE_IDENTITY as opposed
to @@IDENTITY - the first is only available in SQL Server 2000).
o Modified PerformanceTest to create (and drop) its own test table.
o Added handling for BINARY data in ParameterUtils (for some reason, it wasn't
treated the same way as VARBINARY and an exception was thrown).
o Fixed PreparedStatement_base.setByte (it was setting the parameter type to
SMALLINT instead of TINYINT, which lead to problems with negative values).
o Added to the CVS tree a build file customized for JDK 1.3.
02/22/2004 - Brian Heineman
o Removed usage of NEWID() for Sybase which does not exist in the 11.x
versions; logic was replaced with VM generated unique id. This
implementation should perform much faster since no remote calls are
required.
02/20/2004 - Brian Heineman
o Implemented ResultSet.getDate(int,Calendar)
o Implemented ResultSet.getTime(int,Calendar)
o Implemented ResultSet.getTimestamp(int,Calendar)
o Implemented CallableStatement.setDate(int,Date,Calendar)
o Implemented CallableStatement.setTime(int,Time,Calendar)
o Implemented CallableStatement.setTimestamp(int,Timestamp,Calendar)
o Implemented PreparedStatement.setDate(int,Date,Calendar)
o Implemented PreparedStatement.setTime(int,Time,Calendar)
o Implemented PreparedStatement.setTimestamp(int,Timestamp,Calendar)
02/19/2004 - Alin Sinpalean
o Implemented support for scrollable/updateable ResultSets from prepared/
callable statements.
o Implemented a fallback to FORWARD_ONLY ResultSets if cursor creation fails.
o Fixed handling of TDS_COLINFO packets (these can contain the actual column
name if the SELECT statement contained aliases; the alias/label is returned
in the TDS_COLMETADATA packet).
o Updated AbstractResultSet to handle requests for columns both by label and
name (until now they were the same).
o Improved the implementation of generated keys retrieval.
o TdsStatement.getMoreResults() no longer returns update counts from end of
ResultSets and end of process tokens.
o Added a list of cursors-based ResultSets to TdsStatement and the code needed
to maintain this list and close them when the Statement closes. This is not
really enough, they should be closed on the next execute or close, but we'll
see to that some other time.
o Made ParameterUtils.verifyThatParametersAreSet() private and had it called
from createParameterMapping, as they always appeared together in this order.
02/18/2004 - Alin Sinpalean
o Made PacketRowResult.setElementAt much more flexible. It now converts the
provided Objects into an acceptable internal type, to support the
ResultSet.updateXXX methods (i.e. if the updated object is different than
the one used internally by jTDS to represent that particular type, it is
first converted into an acceptable type). getElementAt was also partially
rewritten to support all these types, not only the fixed ones coming from
the Tds.
o Fixed a bug in CursorResultSet, which would cause an exception when updating
ResultSets with read-only columns.
o Improved handling of BINARY/VARBINARY data.
o Added a test for out-of-order closes (particularly closing the Connection
before the Statement, which caused an ArrayIndexOutOfBoundsException).
02/18/2004 - Brian Heineman
o Corrected CallableStatement parsing of stored procedure names containing
spaces.
02/17/2004 - Alin Sinpalean
o Seems like yesterday I didn't commit part of the files. So here they are.
o Fixed the ArrayIndexOutOfBoundsException thrown by TdsConnection.freeTds
bug.
o Updated the README and added a features.html file containing the feature
matrix of jTDS.
02/17/2004 - Brian Heineman
o Reduced memory allocated for Callable and Prepared statements by removing
unused instance variable created for each SQL parameter.
02/16/2004 - Alin Sinpalean
o Implemented updateRow and insertRow in CursorResultSet. Updateable
ResultSets are now fully supported.
o Updated DatabaseMetaData to reflect the newly added functionality.
o Optimized the methods wrapping the sp_cursor calls.
o Fixed an issue in TdsStatement where exceptions would get lost when the next
result was a ResultSet or there were no more results (the warning chain was
only checked in getMoreResults if the next result was an update count).
o Small optimization in AbstractResultSet.
o Added a simple test for inserting a row in a ResultSet.
02/15/2004 - Brian Heineman
o Corrected bug in CallableStatement parsing where [ and " would cause the
procedure name to be parsed incorrectly.
02/13/2004 - Brian Heineman
o Minor cleanup of CallableStatement and refactoring of PreparedStatement
procedure logic.
o Removed extraneous UniqueId class, the logic is now handled in Procedure.
o Improved performance of CallableStatement and PreparedStatement ~14% by
reducing the number of times SQL is parsed. Degraded performance of
plain statements using escape processing and the Connection.nativeSQL call
by ~6%; for now, the consolidation of parsing logic outweighs the minor
degradation.
02/12/2004 - Alin Sinpalean
o Fixed a nasty regression introduced by the new DECIMAL/NUMERIC code (null
BigDecimals would cause an invalid packet, with scale -1).
o Moved the driver class to the connection.properties file, instead of having
it hardcoded in TestBase.
o Updated a number of tests and added a test for updating a ResultSet (of
course, it doesn't pass yet).
o Added all the constants defined in the 1.4 Statement to TdsStatement, to make
it compile with 1.3.
02/11/2004 - Alin Sinpalean
o Implemented CursorResultSet.deleteRow() and wrote a unit test for it.
o Added processing for TDS_TABNAME and TDS_COLINFO packets. Table names are now
correctly set for SELECTs when the FOR BROWSE clause is specified and for the
sp_cursoropen stored procedure.
o Found a bug in CallableStatement_base (executeUpdate and executeQuery were in
fact executed by PreparedStatement_base and return values/output parameters
did not function). Fixed it and extended unit tests to include executeQuery
(they only tested execute, before).
o Fixed a bug pointed out by Mike Hutchinson in the developer forum
(@@MAX_PRECISION does not exist on Sybase).
o Corrected some uses of TdsComm.getByte() and getString() in Tds.
o Detailed cursor-based ResultSet tests and fixed a number of bugs that were
detected while running these tests.
o Cursor creation method now sets the cursor type and concurrency options to
match the values returned by sp_cursoropen in addition to adding a warning
to the chain.
o Wrote a test for bug [815348] - CallableStatement truncates varchar to 255.
Test ran ok, bug closed.
o Added a finally clause to PreparedStatement_base execute, executeQuery and
executeUpdate that calls releaseTds. This is useful if an exception occurs
while running the methods, but also if the execution only returns an update
count (in which case, the result is completely processed and the Tds can be
released).
02/11/2004 - Brian Heineman
o Updated DatabaseMetaData.supportsBatchUpdates() to return true.
02/10/2004 - Alin Sinpalean
o Applied Mike Hutchinson's patch to Tds and TdsComm, replacing
CancelController with a boolean flag and fixing some other issues (see
developer forum).
o Removed unused local variables, made some local variables and class members
final in Tds, cleaned up code.
o Fixed a subtle bug in TdsConnection.allocateTds() (thanks Mike Hutchinson
for pointing it out.
o CursorResultSet.relative() now works according to the spec (i.e. same as
next/previous), even if the cursor is positioned before the first row or
after the last one.
02/10/2004 - Brian Heineman
o Corrected bug in Statement.executeBatch() where batch values were not being
cleared after execution.
o Numerous (minor) optimizations to underlying Tds communication logic:
reduced memory allocations and assignments; reduced cost of control logic.
02/09/2004 - Alin Sinpalean
o Implemented CursorResultSet.isLast() and added a check to currentRow() to
see if there is actually a current row (otherwise a NPE was thrown).
o Updated SanityTest and UpdateTest to test the new features implemented in
CursorResultSet.
02/09/2004 - Brian Heineman
o Implemented ResultSet.updateAsciiStream().
o Implemented ResultSet.updateBinaryStream().
o Implemented ResultSet.updateBlob().
o Implemented ResultSet.updateCharacterStream().
o Implemented ResultSet.updateClob().
o Implemented initial batch support PreparedStatement.addBatch(),
Statement.addBatch(String), Statement.clearBatch() and
Statement.executeBatch(); the current implementation provides the proper
behavior but does not actually send batches of statements to the server
(yet).
o Corrected RETURN_GENERATED_KEYS usage to compile under 1.3.
02/08/2004 - Brian Heineman
o Improved parsing of callable statements to be case-insensitive, allow
whitespace between '?=' and support calls of stored procedures when no
"exec" is specified.
o Updated DatabaseMetaData.supportsGetGeneratedKeys() to return true.
o Implemented DatabaseMetaData.supportsSavepoints().
02/07/2004 - Brian Heineman
o Moved TdsStatement.releaseTds() calls into try {} finally {} statements to
ensure connections are released back into internal pool even if an exception
is thrown.
02/06/2004 - Brian Heineman
o Applied patch [884180] Implement getGeneratedKeys() (thanks to Mike
Hutchinson for the patch)
o Corrected Blob and Clob threading issues that could have occured when
streams were flushed.
02/05/2004 - Alin Sinpalean
o Added the "lastUpdateCount" parameter to the URL and DataSource properties.
If set to true, only the last update count is returned by executeUpdate(),
as to avoid update counts returned by triggers being mistaken for the actual
update count for PreparedStatements.
o Reformatted code in Tds.java, CallableStatement_base.java.
o Fixed an issue with update count handling when lastUpdateCount was false.
o Fixed bug [729370], caused by BigDecimals with the scale greater than their
precision (which is technically possible, but not supported by SQL Server).
o Fixed some issues with Long and BigDecimal precision and scale handling,
including using the correct precision for DECIMAL/NUMERIC fields, as
supported by the server (either 28 or 38 decimals).
o Added the "charset" parameter to the DataSource (it worked before, but only
with the Driver, in the URL or Properties).
o Removed redundant call to ParameterUtils.createParameterMapping() in
Procedure.
o Fixed a possible string length limitation issue for cursor result sets
creation.
o Fixed an issue that caused CallableStatement_base.registerOutParameter() to
reset any value previously set for the parameter.
o CallableStatement.execute now calls ParameterUtils.createParameterMapping()
to correctly map parameters to native types. This fixes bug [815348 -
CallableStatement truncates varchar to 255] caused by the parameter being
sent as a "short" VARCHAR (length up to 255) instead of long (length up to
8000 for VARCHAR and 4000 for NVARCHAR).
02/02/2004 - Brian Heineman
o Synchronized Blob and Clob methods for thread safety.
o Changed IllegalArgumentExceptions that were being thrown in BlobImpl and
ClobImpl to SQLExceptions per JDBC specification recommendations.
o Removed extranous DriverVersion class which was only being used to hold two
variables.
o Added Driver.toString() method that returns the current version per
enhancement request [887120] DriverVersion.getDriverVersion().
o TdsDataSource now implements ConnectionPoolDataSource.
01/31/2004 - Brian Heineman
o Implemented Driver.getPropertyInfo().
01/30/2004 - Alin Sinpalean
o Completely reimplemented CursorResultSet, to use the sp_cursor stored
procedures instead of standard SQL cursors. This should fix a number of
issues regarding scrollable result sets.
o Cleaned up a lot packet processing. Tds does now all the low-level packet
handling, with TdsResultSet no longer directly using packets.
01/30/2004 - Brian Heineman
o Improved performance of Driver URL parsing by ~40%. URL's are now
case-insensitive and provide better validation of the expected format.
o Reduced Driver memory footprint.
o Corrected bug in {fn concat()} translation; Sun javadoc shows double quotes
but single quotes are expected.
o Updated Sybase stored procedure name generation to "jTDS" + last 26
characters of NEWID() [without the dashes]. This should solve the problem
referred to in bug [822544] Issue connecting using alias on Sybase 11.9.2,
jTDS 0.5.1.
o Minor optimization for SQL Server stored procedure name generation.
o Removed obsolete Sybase stored procedure generation code that was replaced
with another solution.
o Slight performance improvement when setting intial database state; reduced
memory allocations.
o "SET QUOTED_IDENTIFIER ON" and "SET TEXTSIZE 2147483647" is now explicitly
sent to SQL Server per Microsofts recommendations:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbcsql/od_6_015_0tf7.asp
01/29/2004 - Brian Heineman
o Corrected bug where {fn concat(column1, column2)} would throw a SQLException.
o Minor correction to translateTimestamp() where prefix assumed to be "d "
instead of "ts ".
o Improved escape sequence translation performance ~11% by reducing memory
allocations and comparisions.
o Removed translation and validation of {escape ''}; no need for the processor
to do this as the database must check it anyhow.
o Significant optimization to SQL parsing; new implementation is more than 10x
faster.
o Applied patch [851982] Client name not set in send70Login(). (thanks to
mhilpert for the fix) This also fixed the following issues:
[708727] hostname not set
[886897] jTDS 0.6: Hostname still not set
o Added missing "exec" per bug [822544] Issue connecting using alias on Sybase
11.9.2, jTDS 0.5.1
o Set instance variables to empty strings per bug [886449] TdsDataSource
default null values cause issues.
01/28/2004 - Brian Heineman
o Implemented mutator methods for BlobImpl and ClobImpl. Changes to LOBs will
not be reflected in the database until the LOB reference is passed as a
parameter to setBlob() or setClob().
o Implemented getDatabaseMajorVersion().
o Implemented getDatabaseMinorVersion().
o Updated getJDBCMinorVersion() to return 1 instead of 0.
01/27/2004 - Brian Heineman
o Added CONCAT to list of return values from
DatabaseMetaData.getStringFunctions().
o Implemented DatabaseMetaData.getJDBCMajorVersion().
o Implemented DatabaseMetaData.getJDBCMinorVersion().
o Implemented DatabaseMetaData.locatorsUpdateCopy().
o Implemented DatabaseMetaData.supportsGetGeneratedKeys().
o Corrected bug where {escape '''} was causing parameters to be calulcated
incorrectly (this specific escape value is now invalid and an exception is
thrown).
o Improved parsing of {? = call} in EscapeProcessor to support whitespace
around the '=' and to be case-insensitive.
o Implemented {fn CONCAT()}
o Improved SQL parsing performance when translating JDBC escape sequences.
o Improved escape sequence error messages.
===============================================================================
01/25/2004 - jTDS 0.6 released
===============================================================================
Changes from jTDS 0.6-rc1
=========================
01/22/2004 - Alin Sinpalean
o Modified again the DatabaseMetaData. Instead of just applying the patch
provided by Mike I chose to do it my way, which was REALLY bad, so it
finally ended up as it was initially.
01/21/2004 - Alin Sinpalean
o Applied patch #880905 (EscapeProcessor does not handle {escape 'x'}
properly) submitted by Brian Heineman, with some minor modifications.
01/20/2004 - Alin Sinpalean
o Added the "sendStringParametersAsUnicode" parameter, to control whether
NVARCHAR/NCHAR should be used when possible. If false, VARCHAR/CHAR are
always used to prevent performance degradation under SQL Server 2000.
(thanks to Wellington Mariusso for the original patch)
o Implemented basic Blob/Clob support. (thanks to Brian Heineman for the
patch)
o Implemented PreparedStatement.SetAsciiStream and SetUnicodeStream. (again
thanks to Brian Heineman for the patch)
o Fixed two bugs with DatabaseMetaData on Sybase and SQL Server < 7.0 (thanks
Mike Hutchinson for the patch)
o Added a method to the Driver implementation to "uppercase" the Properties
keys before passing them to inner classes for use.
01/16/2003 - Alin Sinpalean
o Applied some patches and fixed some minor bugs.
===============================================================================
12/21/2003 - jTDS 0.6-rc1 released
===============================================================================
Changes from jTDS 0.5.2
=======================
12/21/2003 - Alin Sinpalean
o Updated version to 0.6-rc1.
o Even more code cleanup: moved result set context handling from TdsResultSet
to Tds, which allowed the removal of the statements list (allStatements) in
TdsConnection; also replaced all calls to Statement.skipToEnd with calls to
Tds.skipToEnd, which is much more effective; database changes, transaction
isolation level changes, auto commit mode changes, commits and rollbacks are
now run directly on the Tds instance (and on all Tds instances) and
TdsResultSet and TdsStatement now always check Tds.moreResults() before any
processing to make sure the state was not changed from the outside (i.e.
the output was not consumed by TdsConnection executing something).
o Included a patch by Mike Hutchinson that completely fixes all issues
regarding prepared Statements and fixed parameter types (i.e. executing a
PreparedStatement initially with a shorter parameter submits a temporary
stored procedure with a short type - e.g. VARCHAR - and a subsequent
execution is limited by this type, cutting the parameter's length to its
maximum value. The fix only matches temporary procedures by both the SQL
string and the parameter types that can best accomodate the actual values.
o Included a few small patches, regarding ResultSet.getString on BIT columns
(it returned "true"/"false", now it returns "1"/"0"), some misunderstanding
in Procedure, which treated backslash as an escape character and a possible
issue with TEXT values being cut down to 4k (although not proved, and hard
to believe).
o Bugs fixed: 837235 (Working with SQuirreL SQL Client - 90% sure), 748856
(jTDS Security error in sandbox), 741637 (Deadlock), 734505
(ArrayIndexOutOfBounds in TdsResultSet.internalFetchRows), 692142 (jTDS
autocommits data sometimes - 90% sure), 684567 (Problem with image fields in
PreparedStatements), 803570 (java.sql.SQLException: Network error- Field too
long).
12/16/2003 - Alin Sinpalean
o A lot of code cleanup.
12/11/2003 - Alin Sinpalean
o Fixed bug #694541 (ResultSet getDate & getTimestamp). Dates and Times are
now normalized (by resetting the hour/minute/second/ms, respectively the
day/month/year part).
o Also fixed a bug with dates prior to January 1, 1970 (they would get all
messed up because of negative values in the calculation).
o Added some more flexibility to recognizing character sets (simply by
prepending "Cp" respectively "MS", in case the returned character set is
only a number).
o Started refactoring, by moving the current Context from the ResultSet to the
Tds. This way the Tds can skip to the end of the stream without any outside
help. This will hopefully also help further refactoring.
===============================================================================
11/29/2003 - jTDS 0.5.2 released
===============================================================================
Changes from jTDS 0.5.1
=======================
11/27/2003 - Alin Sinpalean
o Fixed bug #808452 (DatabaseMetaData.getTypeInfo() not JDBC compliant). Also
added the @ODBCVer parameter to the other calls that support it.
o Moved the "moreResults2 = true" statement to the end of Tds.executeProcedure
to avoid the situation when an exception is thrown while building the PROC
packet and the close code deadlocks in skipToEnd waiting for results when in
fact there aren't any (this situation shouldn't really occur in normal
situations, it happened to me because of a mistake I made in
CallableStatement_base, which failed to set the type of a parameter).
11/26/2003 - Alin Sinpalean
o Added support for CallableStatements with return values.
o APPNAME and PROGNAME properties didn't actually work; issue fixed.
11/22/2003 - Alin Sinpalean
o Cleaned up some of Matt's code (e.g. replaced calls to methods that were
only introduced in Java 1.4 with equivalents to ensure backward
compatibility).
o Fixed an issue with the case sensitive database names (when changing the
database jTDS checks if the old database is the same as what the server has
returned and the check was case sensitive).
o Removed some weird type checking and matching in TdsResultSetMetaData
.getColumnType, which would define NCHAR, NVARCHAR and NTEXT as Types.OTHER
rather than the correct Java type (this was causing problems with SQuirreL
SQL when the column type of a ResultSet was checked -- particularly when
browsing stored procedures and their parameters).
o Removed the "synchronized" qualifier from TdsStatement.executeQuery, because
it was causing deadlocks between threads creating scrollable result sets and
threads closing other scrollable result sets (see unit test TimestampTest
.testNestedStatements0026).
11/20/2003 - Matt Brinkley
o Added support for Windows authentication for TDS 7.0.
10/02/2003 - Matt Brinkley
o Fixed issue related to using catalogs with special characters in name in
DatabaseMetaData.
08/30/2003 - Matt Brinkley
o Added support for SQL Server 2000 named instances.
o Fixed a small bug related to the ordering of the SQLExceptions thrown by
TdsConnection.close().
02/15/2003 - Alin Sinpalean
o Fixed bug #679040: database-specified charset preferred over client-
specified.
o Fixed bug #679041: (possible) charset problems with platform default
encoding. Not so sure if all Strings read from the server should be
converted using the EncodingHelper, but that's how it works now.
o Also removed some checks and prints to System.out in Tds following warnings
received (initially this was done because getWarnings was not implemented).
===============================================================================
01/30/2003 - jTDS 0.5.1 released
===============================================================================
Changes from jTDS 0.5
=====================
01/30/2003 - Alin Sinpalean
o Hope I fixed the "Tds 0 already allocated" issue (for Tds other than 0 it
seems to be a different issue, that has already been solved, but I have to
check to make sure). The problem appeared when an exception was thrown
while executing a scrollable statement or scrolling through it: Tds 0 was
first allocated, but it wasn't freed because the exception would interrupt
the normal flow. Moved the Tds freeing into a finally block and seems to
work just fine, now.
01/29/2003 - Alin Sinpalean
o Fixed CSUnitTest (had a problem because of the MONEY/SMALLMONEY precision
issue) and modified build.xml (have no idea why it wouldn't work anymore,
some problem with classpaths, had to execute the tests in the same JVM).
Removed jakarta-ant-1.3-optional.jar and parser.jar, because they were not
needed (jakarta-ant-1.4-optional.jar and crimson.jar contain just the same).
01/27/2003 - Alin Sinpalean
o Fixed bug #664507: DatabaseMetaData.getIndexInfo() called sp_statistics with
5 parameters instead of 6 (@index_name was missing). Thanks to Simon Kelly
(simonkelly) for submitting the bug and the solution.
o Fixed bug #644391: When using PreparedStatement.setObject(Timestamp), the
date in database in off by a little more than a second, because the nanos
are disregarded (the Timestamp is treated as Date).
01/20/2003 - Alin Sinpalean
o jTDS feels completely strange after such a long while. I honestly hope the
time will come when I'll be able to go back to real development... :(
o Fixed bug #662295: Tds.writeDateTimeValue() adds nanoseconds twice under JDK
1.4.1. The Timestamp.getTime() method adds in the nanos, then
writeDateTimeValue() adds them again (line 3232) (Patrick Johnson -
pjohnson73). Also some rounding problems when transforming from milliseconds
to jiffies. The fix checks if the value returned by getTime() is an integral
number of seconds and only in this case adds the nanoseconds (otherwise they
were already added by getTime()). For the rounding problem .33 milliseconds
are added to the value before converting it to jiffies. Seems to work fine.
o Fixed a problem with MONEY and SMALLMONEY datatypes where the third and
fourth decimals were intentionally dropped (no idea why).
12/18/2002 - Alin Sinpalean
o Long time, no jTDS! Hope I'll have some more time to look after jTDS now
that I found a new job...
o Fixed bug #653510: the value returned by DatabaseMetaData.getUserName() was
different from what the Microsoft driver returned (jTDS was returning "dbo"
while the Microsoft driver was returning "sa"). Thanks to Jim McBeath for
finding this out and providing a solution.
===============================================================================
11/11/2002 - jTDS 0.5 released
===============================================================================
Changes from jTDS 0.4
=====================
11/11/2002 - Alin Sinpalean
o Fixed bug #636110: the warning chain of a result set was instantiated only
at the end of the TdsResultSet constructor, but a warnig could have been
added during the call to startResultSet() (also in the constructor) so a
NullPointerException was thrown if a warning was encountered during loading
a warning chain (e.g. if the result set contained no rows but it was
returning a warning).
11/07/2002 - Alin Sinpalean
o Temporarily fixed bug #632852:
There appears to be an error in handling long (>4000/8000 bytes) data
items. This occurs where a subsequent attempt to update data, using the
same SQL statement, fails when executed via a different PreparedStatement.
This situation will occur most often when the database connection is
pooled for reuse for example in a web application.
The cause of the error is that, when the second SQL statement matches a
cached stored procedure, the data types of the parameters are not
re-evaluated. This causes the code in TDS.executeProcedure() to pass a
long String parameter as a VARCHAR parameter rather than a NTEXT causing
the statement to fail on the SQL Server with the message "Error converting
data type text to ntext".
Thanks go to Mike Hutchinson, for locating and fixing the problem. A final
solution, however would imply matching both the statement and the parameter
types when searching for a compatible procedure.
11/01/2002 - Alin Sinpalean
o Seems like SQL Server 6.5 does not support the extended Transact-SQL syntax
for cursor declaration (at least not everything that's documented for SQL
Server 7.0). So I make a choice based on the TDS version and use the
extended syntax for 7.0+ and the SQL-92 syntax for older versions (and
Sybase). I guess it's ok this way. :o)
10/29/2002 - Alin Sinpalean
o Fixed CursorResultSet.next(): position was not incremented/decremented
(probably since my last update). Anyway, correct position reporting will not
work correctly in all cases until the sp_cursorXXX procedures are used
instead of the current CREATE CURSOR/FETCH NEXT/FETCH PREVIOUS statements.
10/26/2002 - Alin Sinpalean
o Fixed bug #629022 (also signaled in a post in the jTDS Help forum):
DatabaseMetaData.getColumns() did not work if null was supplied as schema or
table name. This was because a query was used to retrieve this information.
Now sp_columns is used. This brings up another tiny issue: type numbers are
wrong (e.g. -9 for NVARCHAR; it should be -1111 == unknown) but I guess it's
not that bad.
10/23/2002 - Alin Sinpalean
o Tiny change in CallableStatement_base constructor where the procedure name
was parsed: periods were not considered to be part of a procedure name, so
if a procedure name also containing catalog and/or schema was provided, only
the first part of the name (up until the first period) was considered to be
the procedure name. This meant that the schema or catalog was used as
procedure name.
10/22/2002 - Alin Sinpalean
o Implemented correctly the DatabaseMetaData methods getNumericFunctions,
getStringFunctions and getSystemFunctions and added the corresponding code
to EscapeProcessor (to convert the standard function names to SQL Server-
specific function names -- I sure hope it works with Sybase, too as I have
no way of testing this).
o Implemented TdsStatement methods get/setFetchSize and get/setFetchDirection.
10/21/2002 - Alin Sinpalean
o Fix in Tds.executeProcedure() if a Boolean was supplied as value for a
parameter of type CHAR/VARCHAR, it crashed with a type cast exception. This
should be checked when selecting the procedure, anyway (i.e. also check that
the parameter types are compatible in addition to the generator string).
o Fix in EscapeProcessor: for one reason or another backslash was treated as
an escape sequence even inside the 'escape' string (e.g. "{escape '\'}" was
incorrect because the backslash was considered an escape character).
o Implementede DatabaseMetaData.getUDTs(). It now returns a hand-made empty
result set; inspired from the MS driver's docs. :o)
o Slight misunderstanding in TimestampTest.testGetBoolean0025(): not sure
which VARCHAR/CHAR values are true and which are false with getBoolean().
Have to take a look at this.
10/18/2002 - Alin Sinpalean
o Bugfix in PacketResultSet.getLong(): CHAR values were not trimmed before
being parsed.
o Bugfix in Tds.writeDecimalValue(): if an Object which was not a subclass of
Number was supplied (particularly a Boolean) writeDecimalValue crashed.
o Bugfix in EscapeProcessor: escapes (all of them) were only recognized in
lower case; also outer join escapes were parsed incorrectly (the last letter
was cut off).
o Bugfix in PreparedStatement_base: procedures were first added to the tds
procedure cache and the proceduresOfTra collection and only then submitted
to the DB server, which meant that if the submission failed further attempts
to use the same (form of) statement would fail with 'procedure not found'
which was a bit confusing.
o Bugfix in PacketRowResult.getBoolean(): CHAR/VARCHAR/TEXT values were not
correctly converted to boolean values. I'm not sure it's correct now either,
but it works with the JDBCCTS. :o) Currently anything different from "0" is
considered true.
10/17/2002 - Alin Sinpalean
o Oooops! There were a lot of problems with my implementation from yesterday.
It took me quite a lot of time to figure out where all those problems came
from, but I finally managed to get to a state in which it seems to work. I
even created a good test for it.
10/16/2002 - Alin Sinpalean
o I think I fixed the 'cursor not found' issue with cursor result sets. Still
need some testing to make sure it works fine, but it looks quite good. ;o)
===============================================================================
10/14/2002 - jTDS 0.4 released
===============================================================================
Changes from jTDS 0.3.2
=======================
10/14/2002 - Alin Sinpalean
o Finally renamed packages from com.internetcds.jdbc to net.sourceforge.jtds.
This calls for a new release of jTDS, as I promised. A lot of cosmetic
changes took place at the same time, it's really hard to make a list of
them. Currently there are 5 subpackages of net.sourceforge.jtds: jdbc (the
former tds package, where most of the implementation is), jdbcx (with the
TdsDataSource implementation), util (containing the Logger), test (with all
the JUnit tests) and tools (containing some TDS reverse engineering tools).
Hopefully the new structure will also help in getting more organized. The
old sources are still available in the repository with all their history,
under the src.old directory.
o Bugfix (bug #621842, submitted and fixed by Anton Decusar and Andrei
Chafirine): encoding Cp1251 is not recognized by jTDS because it is returned
by SQL Server as 'cp1251' (with 'c' instead of 'C').
10/02/2002 - Alin Sinpalean
o Bugfix (bug #617501): URLs of the form
"jdbc:freetds:sqlserver://<server>:<port>" not recognized by jTDS. This is
because database name was required initially and when I made it optional I
did not check the way URLs were parsed. I think all URL forms are accepted
now.
09/26/2002 - Alin Sinpalean
o Long time, no work! :o)
o Implemented PreparesStatement_base.setTime() and optimized a bit Tds
handling of Time, Date and Timestamp objects in writeDateTimeValue(). Tried
to make something out from bug #614698, but it looks like it's only a
misunderstanding of the java.sql.Date type semantics. I'll close it.
09/20/2002 - Alin Sinpalean
o Bugfix in CursorResultSet: next() always returned true for the first time,
even if there was no data in the ResultSet. Seems to have been there for a
long, long time. I added the beforeFirst() implementation but still didn't
see it (not to mention that the implementation was broken from the very
start because of the first row being prefetched). So, the first row is no
longer prefetched, there's a "FETCH PRIOR" call that doesn't do anything but
initializing the context. Thanks to wolfgang_a_h@gmx.at for finding the bug.
(bug submitted later as #613199)
o Bugfix #598679 (TdsConnection.getTypeMap not implemented): just looked at
the javadoc comment for the method and it says that it should return an
empty Map unless the application has added an entry. So, as the application
can't add an entry (setTypeMap throws an SQLException as well :o) ) we'll
just return an empty Map each time. :o)))
===============================================================================
09/20/2002 - jTDS 0.3.2 released
===============================================================================
Changes from jTDS 0.3.1
=======================
09/20/2002 - Alin Sinpalean
o Bugfix in Tds: when the autocommit flag was set on a Tds, the transaction
was automatically committed by Tds.changeSettings(). I think I was the
brilliant mind that did that (because I had no idea about what I was doing
at the time), but it was completely wrong. Removed.
o TdsComm.startPacket throws an exception if there is still data left in the
input buffer. The problem is that the data is never consumed, so that Tds is
never closed. Temporary fix: dump the buffer contents. Will have to come up
with something better.
o TdsConnection.setCatalog() was synchronized on the statement while executing
the query. The problem was that the statement might have been null. Fix:
synchronization is made on the tds (again) if the Statement is null.
o Implemented TdsResultSetMetaData.getColumnClassName(). Also much easier than
feared. :o)
09/19/2002 - Alin Sinpalean
o Created a goToNextResult() method in Tds, that eats up all input until the
next relevant result (for a Statement or CallableStatement only ResultSets
and TDS_DONE packets, for PreparedStatements also TDS_DONEINPROC packets)
that is called in all the places where the processing of a result has just
finished (or at least I hope so). This way, Tds objects are no longer held
up by PreparedStatement executions, which also contain some end of procedure
execution information (a return value, maybe output parameters and a
TDS_DONEPROC packet).
o Tested jTDS with the J2EE Compliance Test Suite (actually only part of it,
because it's *very* slow) and after the fix mentioned above it doesn't hang
anymore (it hanged because the J2EE disabled autocommit mode and the first
time a DatabaseMetaData method was called -- one that uses PreparedStatement
-- the Tds remained allocated to that PreparedStatement, another one was
created and this second one deadlocked, waiting for the first one to commit
the transaction). There are a few issues, still (e.g. supportsConvert()),
but overall it seems to work! (It's also true that the CTS is completely
braindead -- does not check anything else except the fact that the methods
don't throw exceptions and return non-null ResultSets.)
o Implemented DatabaseMetaData.supportsConvert(int, int)! Wasn't as hard as I
thought it would be. :o)
09/18/2002 - Alin Sinpalean
o Rewrote (or should I say, 'partially deleted') Tds.sendTds70Login() based on
the information obtained from packet sniffing I did during the weekend. Much
shorter and more concise.
o Removed the initialization of the Tds where the default values for
transaction isolation level and implicit_transactions were reinstated by
jTDS. This way, creating a connection is 'a bit' faster.
o Bugfix (#600286): when using TDS 7.0 jTDS sends the database name in the
login packet or sends an empty string (like it did until now) if no database
is specified in the URL/properties. TDS 4.2 sends a "use <database>" query
if the database length is not 0. The database that was selected ultimately
by the server is obtained through processing all TDS_ENVCHANGE packets, then
TdsConnection gets it from Tds (the relevant TDS_ENVCHANGE packet is parsed
in the Tds constructor, so the database name is already there for
TdsConnection. This way, Driver TdsDataSource don't have to define a default
database name ("master") so they start with an empty string. That's about
it! :o)
09/18/2002 - Alin Sinpalean
o Lots of changes and improvements here! All of them were done until yesterday
but unfortunately I could not commit them last night so I'm going to do it
now. I'll also try to do a list of changes, as exact as possible. Here goes.
o Removed the main methods from all non-test classes that had one. They were
doing some testing, unfortunately I don't have the database structure on
which they worked and there are a lot of other tests, so I decided to just
wipe them out. And, another thing: they were unnecessarily adding to the
size of the .jar file.
o Made the cancel mechanism work. I have no idea if it ever worked (or if it
did, if it ever worked right) but it sure doesn't seem so. This means
changes to CancelController (only one cancel request can be outstanding at a
time, no more waiting for the cancel ack), TdsComm (no longer eating up
input by simply ignoring it), Tds (processing of any outstanding cancel when
executing a query or procedure, throwing an exception when a query times
out), Prepared_Statement (this was the only point where data was left for
Tds to ignore instead of being processed, so I fixed that by calling
skipToEnd before each procedure call), TdsStatement (check for exceptions
after each execution to see if it wasn't cancelled, cancel() is no longer
synchronized -- this actually prevented it from working).
o TdsComm had a static counter for instances for debugging purposes, but each
instance used that counter as id instead of having its own member to record
the value of the counter at the time of its creation. Fixed.
o Changes to Logger in order to close output streams when no longer using
them. (Maybe this is not as smart as I thought it would be, I'm not sure
what happens if we close System.out.)
o Synchronized calls to execute methods from CursorResultSet as this was a
pretty subtle source of errors: when a CursorResultSet was finalized it ate
all outstanding results on the Statement, which meant trouble for any other
concurrent ResultSets. By synchronizing these calls, CursorResultSets will
not interfere with each others results, but they will still interfere with
any TdsResultSets (however this is not such a big problem, since the
probability of having both scrollable and non-scrollable on the same
Statement is quite low).
o Added a test in SAfeTest for the cancel mechanism and it seems to work just
fine. :o)
09/16/2002 - Alin Sinpalean
o Even bigger clean-up of most of the base classes: TdsStatement,
TdsResultSet, TdsConnection etc. Lots of changes, so it's pretty
hard to make a list of them. Anyway, major changes include: synchronization
and visibility changes in TdsStatement, Logger no longer throws IOExceptions
(it's kind of stupid to do that), TDS_XXX token name changes, processing of
database changes in Tds, SQLWarningChain clears the exceptions list when
throwing one. That's about it.
o Created a "specification" for TDS 7.0 based on 2 days of packet sniffing.
Still in preliminary stage, but contains a lot of information. I will have
to match it up against existing specifications from FreeTDS and other
sources to make sure I wasn't wrong about things, then I'll probably publish
it on the documentation page of the project's site.
09/14/2002 - Alin Sinpalean
o Fix in TdsResultSetMetaData: getColumnTypeName() crashed on SYBBITN columns.
o Fix in TdsConnection: on close(), not all Statements were closed, because
the for was going from 1 up but Statements were removed from the Vector as
they closed, so every second Statement was skipped.
o Moved startResultSet logic from TdsStatement to TdsResultSet.
o Massive clean-up of TdsStatement: simplified the way getMoreResults()/
getResultSet() works. There are still some issues with Tds objects remaining
allocated, but I will try to fix them.
09/13/2002 - Alin Sinpalean
o Fixed DatabaseMetaData.getColumns() (temporarily, the final solution would
be to use a system stored procedure as with all the other meta data methods)
thanks to Dale Anderson (entraspan), author of the bug, and ultimately,
solver. I'm not sure this works on SQL Server 6.5, but it seems like no one
is using that anymore.
o Implemented CursorResultSet.beforeFirst() and CursorResultSet.afterLast().
There's an even bigger problem with CursorResultSet: a different Tds could
be allocated to the Statement than the one on which the cursor was created,
which will inevitably lead to a crash. Now I start to understand what the
mainTds thing was for. :o)
09/11/2002 - Alin Sinpalean
o Optimized TdsComm.getBytes() to use a fixed buffer and not allocate a new
one every time if not necessary (e.g. when reading in bytes that will be
turned into a String and no longer used). Performance is much better now,
although I didn't have the time to do a comparison.
o Added tests in all non-private methods of TdsResultSet to see check if it's
open or not (an SQLException is now thrown instead of the
NullPointerException that was usually thrown when the ResultSet was closed).
09/10/2002 - Alin Sinpalean
o EscapeProcessor now accepts all JDBC escape sequences (including stored
procedure calls). CallableStatement_base, however, needs some more work in
order to "understand" the "{?=call ...}" sequence (a hell lot of work). :o(
o Reduced "a bit" (from 2000 to 100) the number of connections created by
TimestampTest.testConnection0039 because there was really no justification
for that and it took 20 seconds. Really need to write some more tests and
reorganize the existing ones...
o Just tested jTDS with SQLDeveloper (http://sqldeveloper.solyp.com), a very
interesting database manager based on JDBC. The only problem I encountered
this far (and fixed) was that AbstractResultSet (and CursorResultSet) got
the context from the 'current row' instead of using their own getCursor()
method, which meant that when no 'current row' existed, an SQLException got
thrown. Now, everything seems to work fine. :o)
09/09/2002 - Alin Sinpalean
o Removed relinquish() from ConnectionHelper interface. I don't even know what
ConnectionHelper is for...
o Chenged Statement.closeResults() and ResultSet.close() by adding a parameter
which says if the Tds should be released or not, if possible.
o Modified a bit TdsStatement.skipToEnd() to also include a call to
closeResults(). This way, skipToEnd() will work regardless of the state the
Statement is currently in.
09/08/2002 - Mike Hutchinson, Alin Sinpalean
o Alin: First of all I have to thank Mike for the ideas (these were all his)
and the patch he sent me. I took the liberty of changing them as I saw fit
(there were some small issues, but all in all the ideas are simply great).
o Moved the logic for commit/rollback to Tds instead of TdsStatement. This way
it's possible to not rollback a Tds when the Statement is closed (which, as
Mike noted, is wrong).
o TdsConnection.close now rolls back explicitly all Tds objects prior to
closing them (this was done until now by TdsStatement.close(), which was
wrong).
o TdsConnection.commitOrRollback calls directly the commit() and rollback()
methods of Tds instead of TdsStatement, due to the changes above.
o PreparedStatement_base.execute() only adds the newly created stored
procedure to tds.proceduresOfTra if the Connection is not in autoCommit
mode.
o TdsStatement.releaseTds() releases the Tds even if in manual commit mode.
This is possible because we're no longer commiting Statements but the Tds
connections themselves.
o TdsStatement.close() no longer calls rollback(). This was wrong.
o TdsStatement.close() only called Connection.markAsClosed(this) if actTds was
not null (which was ok considering the way jTDS worked until now). However,
since a TdsStatement can now release the Tds even when in manual commit mode
markAsClosed always has to be called. Even if this is sometimes redundant it
ensures Statements are removed from the Connection's list of active
Statements not causing any memory leakage (which, as I understood from Mike,
was pretty serious, leading to VM crashes).
o Removed TdsStatement.commit(), TdsStatement.rollback(),
TdsStatement.finalize() and TdsResultSet.finalize() as they were no longer
needed.
===============================================================================
09/06/2002 - jTDS 0.3.1 released
===============================================================================
Changes from jTDS 0.3
=====================
09/06/2002 - Alin Sinpalean
o The modifications to EncodingHelper did not take into account multiple-byte
charsets (they were hardcoded before). Now this is automagically determined
based on the size of the resulting String (if same, then it's a single-byte
charset).
o Modifications to the EncodingHelper and Tds for a better encoder management
and changed the default encoding to Cp1252 (when SQL Server responds with
'iso_1' - that's inexact, SQL Server is, in fact, using Cp1252).
o Tds.discardResultSet fix: if an error or warning was returned immediately
after a ResultSet that was not read completely, but discarded, jTDS crashed
because it only expected TDS_DONE* tokens.
09/05/2002 - Alin Sinpalean
o Added jdbc3_0-ext.jar to the lib folder, containing the .class files for
java.sql.Savepoint and java.sql.ParameterMetaData and changed the libraries
used by JBuilder to include this jar, too. This allows compilation of the
changes made by Justin under JDK 1.3 and should not affect compilation under
JDK 1.4.
o Fixed CursorResultSet.createCursor(): SCROLL_INSENSITIVE cursors could not
be created because of a syntax error.
09/03/2002 - Justin SB
o Added stubs to enable compilation with JDK 1.4 (no new functionality)
08/30/2002 - Alin Sinpalean
o TdsResultSetMetaData.get* fixed (Bug #598911). Still a couple of
incompatibilities with the JDBC-ODBC bridge, due to the fact that I consider
their implementation to be incorrect.
o Synchronized TdsConnection. Still need to do some similar work on Statements
and ResultSets, but it's a good job, anyway (I hope no deadlocks were
introduced because of this).
o Implemented TdsConnection.setCatalog. The dirty way, but it works.
08/28/2002 - Alin Sinpalean
o Modifications to the javadoc comments in a lot of places (warnings were
thrown by javadoc).
o Beautification of TdsDefinitions.
o TdsConnection.getMetaData() no longer allocates a Tds, because it didn't use
it anyway. The Tds instance DatabaseMetaData contains is used only for calls
to methods returning constant values (for that Tds instance).
o Started fixing Bug #598911 (ResultSetMetaData.get* incorrect):
Tds.lookupColumnSize() returns the display size rather than the length in
bytes for fixed size columns, TdsResultSetMetaData.getColumnTypeName()
returns the SQL Server-specific names of columns, rather than INT1, INT2
etc.
o DatabaseMetaData changes: implemented getCrossReference(), changed
getCatalogs() implementation, removed makeTypeTable() -- no longer used.
o Changed the implementation of almost all methods in DatabaseMetaData to use
standard stored procedures instead of the custom but unsafe code. Only a
couple of methods are still using the old way (getColumns because of custom
types and getSchemas because the result would be the second column and it's
currently impossible to hide any columns but the last ones).
08/26/2002 - Alin Sinpalean
o Database name is no longer explicitly required in the URL for the driver or
to be set for the DataSource. The default value for it (if not specified) is
"master", which is ok for SQL Server, but of which I'm not so sure of for
Sybase (Bug #598886).
o Changed the implementation of DatabaseMetaData methods getProcedures,
getProcedureColumns and ... to use SQL Server-defined stored procedures, for
increased performance and better compatibility with other drivers.
08/23/2002 - Alin Sinpalean
o Improved NULL, 0-length and single-space string handling (both when sending
parameters and receiving values.
o Tds.rollback() just drops all procedures submitted during the last
transaction rather than resubmitting them (no one can guarantee they will be
used again, so better just drop them).
o Removed TdsComm.backup() - wasn't used anymore and was pretty dangerous
anyway.
o Changes to AsTest and CSUnitTest to reflect the way update counts are
returned from PreparedStatements and CallableStatements.
o Added a freetds.SAfeTest test to test the NULL, 0-length and single-space
string handling.
08/21/2002 - Alin Sinpalean
o jTDS officially became "jTDS Type 4 JDBC 2.0 driver for MS SQL Server", as
DatabaseMetaData.getDriverName() returns this value.
o Not directly related to the development of jTDS, The jTDS Project finally
has its own homepage: http://jtds.sourceforge.net
08/20/2002 - Alin Sinpalean
o Added a Statement member to the Tds class, that should point to the
Statement currently using the object (if any, null if not used). Using this
the Tds can decide whether to return update counts from DONEINPROC packets
if the current Statement is a PreparedStatement. This way, PreparedStatement
can return update counts from inside stored procedures while Statement
doesn't.
o Fixed the tests that failed because of the fact that more Statements were
allocated at once (meaning some of them were not able to create the
temporary tables/stored procedures created by others) by closing the
Statements when they were no longer needed.
o Implemented all methods of ResultSetMetaData except getColumnClassName and
used case sensitivity and table name from result packets (both TDS 4.2 and
TDS 7.0). (Request #587751)
o Fixed TdsStatement.rollback(): calls Tds.rollback() when not in autocommit
mode, in order to redefine all missing stored procedures.
===============================================================================
08/19/2002 - jTDS 0.3 released
===============================================================================
Changes from jTDS 0.2
=====================
08/19/2002 - Alin Sinpalean
o Check for ENVCHANGE packets in TdsStatement.getMoreResultsImpl (if a query
that changed the environment was executed, the driver crashed because of
unrecognized packet types - ENVCHANGE).
o Added a fakeColumnCount to Columns to mask columns to the end user (e.g. for
meta data use).
o Implemented methods in DatabaseMetaData: getColumnPrivileges,
getTablePrivileges, getTypeInfo, getBestRowIdentifier, getVersionColumns.
Also some minor changes to methods returning constant values.
o Bugfix (#595022): Hidden the rowstat column returned by CursorResultSets.
08/16/2002 - Alin Sinpalean
o DatabaseMetaData.getSchemas() fix: TABLE_CATALOG column was also returned as
a result column; removed it.
o TdsResultSet.fetchNextRow() fix: the Tds was not released when the end of
data was reached; now it is.
o TdsConnection.prepareCall() fix: a useless call to allocateTds() was made,
which locked a Tds that was never released again; commented out.
o Fixes in the tests: AsTest, CSUnitTest, PreparedStatementTest, TestBase,
TimestampTest.
o Condition in Microsoft7MetaData.getProcedures() to avoid
NullPointerExceptions when a null schema pattern was provided.
08/15/2002 - Alin Sinpalean
o Rewrote build.xml.
08/14/2002 - Alin Sinpalean
o Added support for the UNIQUEIDENTIFIER datatype.
o Created a com.internetcds.jdbcx.tds package containing a DataSource
implementation and an object factory (alpha version, not even tested with
JNDI - I tried to do it but it doesn't seem that easy). Anyway, it's a
starting point.
08/13/2002 - Alin Sinpalean
o Fix in CursorResultSet: if no rows were returned by the query, loadContext
failed with a NullPointerException when trying to get the current row's
context. Now the context is loaded in internalFetch -- not very elegant, but
at least it works. ;o)
08/08/2002 - Alin Sinpalean
o DatabaseMetaData.getInstance() now returns a DatabaseMetaData or
Microsoft7MetaData based on the TDS version rather than the server version.
08/06/2002 - Alin Sinpalean
o Optimized the implementations of TdsComm.getBytes(int) and TdsComm.peek();
they are no longer using TdsComm.getByte(), which was slowing them down.
o Implemented getExportedKeys.
o TDS 7.0 is now the default protocol used by jTDS.
08/05/2002 - Alin Sinpalean
o Added a databaseMajorVersion member to the Tds class to help make the
difference between SQL Server versions (e.g. for DatabaseMetaData usage).
o Fixed some of the additions Jason made, most of them due to the fact that
he probably used SQLServer 2000 while I am using 7.0 (there could be some
even bigger problems for people using SQLServer 6.5, if there are any) and
a problem related to getTables - catalog name for tables in other databases
(catalogs) were wrong (pubs was used instead of the catalog name).
o Added implementations to methods without parameters returning boolean values
in DatabaseMetaData (based on values returned by the JDBC-ODBC and some
other drivers).
o Bugfix 587749: Bit to Int conversion works. So does Binary to String.
08/05/2002 - Jerason Banes (patch)
o Fixed the following methods in DatabaseMetaData: getSchemas, getTables,
getColumns, supportSchemasInTableDefinitions.
o Implemented the following methods of DatabaseMetaData: getIndexes,
getPrimaryKeys, getImportedKeys.
07/xx/2002 - Alin Sinpalean
o TdsStatement checks if it isn't already closed on a call to close() and the
allocated Tds object isn't freed until no more results are available
|