1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 6850 6851 6852 6853 6854 6855 6856 6857 6858 6859 6860 6861 6862 6863 6864 6865 6866 6867 6868 6869 6870 6871 6872 6873 6874 6875 6876 6877 6878 6879 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 6891 6892 6893 6894 6895 6896 6897 6898 6899 6900 6901 6902 6903 6904 6905 6906 6907 6908 6909 6910 6911 6912 6913 6914 6915 6916 6917 6918 6919 6920 6921 6922 6923 6924 6925 6926 6927 6928 6929 6930 6931 6932 6933 6934 6935 6936 6937 6938 6939 6940 6941 6942 6943 6944 6945 6946 6947 6948 6949 6950 6951 6952 6953 6954 6955 6956 6957 6958 6959 6960 6961 6962 6963 6964 6965 6966 6967 6968 6969 6970 6971 6972 6973 6974 6975 6976 6977 6978 6979 6980 6981 6982 6983 6984 6985 6986 6987 6988 6989 6990 6991 6992 6993 6994 6995 6996 6997 6998 6999 7000 7001 7002 7003 7004 7005 7006 7007 7008 7009 7010 7011 7012 7013 7014 7015 7016 7017 7018 7019 7020 7021 7022 7023 7024 7025 7026 7027 7028 7029 7030 7031 7032 7033 7034 7035 7036 7037 7038 7039 7040 7041 7042 7043 7044 7045 7046 7047 7048 7049 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 7073 7074 7075 7076 7077 7078 7079 7080 7081 7082 7083 7084 7085 7086 7087 7088 7089 7090 7091 7092 7093 7094 7095 7096 7097 7098 7099 7100 7101 7102 7103 7104 7105 7106 7107 7108 7109 7110 7111 7112 7113 7114 7115 7116 7117 7118 7119 7120 7121 7122 7123 7124 7125 7126 7127 7128 7129 7130 7131 7132 7133 7134 7135 7136 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 7148 7149 7150 7151 7152 7153 7154 7155 7156 7157 7158 7159 7160 7161 7162 7163 7164 7165 7166 7167 7168 7169 7170 7171 7172 7173 7174 7175 7176 7177 7178 7179 7180 7181 7182 7183 7184 7185 7186 7187 7188 7189 7190 7191 7192 7193 7194 7195 7196 7197 7198 7199 7200 7201 7202 7203 7204 7205 7206 7207 7208 7209 7210 7211 7212 7213 7214 7215 7216 7217 7218 7219 7220 7221 7222 7223 7224 7225 7226 7227 7228 7229 7230 7231 7232 7233 7234 7235 7236 7237 7238 7239 7240 7241 7242 7243 7244 7245 7246 7247 7248 7249 7250 7251 7252 7253 7254 7255 7256 7257 7258 7259 7260 7261 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 7283 7284 7285 7286 7287 7288 7289 7290 7291 7292 7293 7294 7295 7296 7297 7298 7299 7300 7301 7302 7303 7304 7305 7306 7307 7308 7309 7310 7311 7312 7313 7314 7315 7316 7317 7318 7319 7320 7321 7322 7323 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 7339 7340 7341 7342 7343 7344 7345 7346 7347 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 7363 7364 7365 7366 7367 7368 7369 7370 7371 7372 7373 7374 7375 7376 7377 7378 7379 7380 7381 7382 7383 7384 7385 7386 7387 7388 7389 7390 7391 7392 7393 7394 7395 7396 7397 7398 7399 7400 7401 7402 7403 7404 7405 7406 7407 7408 7409 7410 7411 7412 7413 7414 7415 7416 7417 7418 7419 7420 7421 7422 7423 7424 7425 7426 7427 7428 7429 7430 7431 7432 7433 7434 7435 7436 7437 7438 7439 7440 7441 7442 7443 7444 7445 7446 7447 7448 7449 7450 7451 7452 7453 7454 7455 7456 7457 7458 7459 7460 7461 7462 7463 7464 7465 7466 7467 7468 7469 7470 7471 7472 7473 7474 7475 7476 7477 7478 7479 7480 7481 7482 7483 7484 7485 7486 7487 7488 7489 7490 7491 7492 7493 7494 7495 7496 7497 7498 7499 7500 7501 7502 7503 7504 7505 7506 7507 7508 7509 7510 7511 7512 7513 7514 7515 7516 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 7577 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626 7627 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7880 7881 7882 7883 7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8480 8481 8482 8483 8484 8485 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8600 8601 8602 8603 8604 8605 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8720 8721 8722 8723 8724 8725 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 8738 8739 8740 8741 8742 8743 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8840 8841 8842 8843 8844 8845 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8880 8881 8882 8883 8884 8885 8886 8887 8888 8889 8890 8891 8892 8893 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 8904 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 8958 8959 8960 8961 8962 8963 8964 8965 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000 9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9013 9014 9015 9016 9017 9018 9019 9020 9021 9022 9023 9024 9025 9026 9027 9028 9029 9030 9031 9032 9033 9034 9035 9036 9037 9038 9039 9040 9041 9042 9043 9044 9045 9046 9047 9048 9049 9050 9051 9052 9053 9054 9055 9056 9057 9058 9059 9060 9061 9062 9063 9064 9065 9066 9067 9068 9069 9070 9071 9072 9073 9074 9075 9076 9077 9078 9079 9080 9081 9082 9083 9084 9085 9086 9087 9088 9089 9090 9091 9092 9093 9094 9095 9096 9097 9098 9099 9100 9101 9102 9103 9104 9105 9106 9107 9108 9109 9110 9111 9112 9113 9114 9115 9116 9117 9118 9119 9120 9121 9122 9123 9124 9125 9126 9127 9128 9129 9130 9131 9132 9133 9134 9135 9136 9137 9138 9139 9140 9141 9142 9143 9144 9145 9146 9147 9148 9149 9150 9151 9152 9153 9154 9155 9156 9157 9158 9159 9160 9161 9162 9163 9164 9165 9166 9167 9168 9169 9170 9171 9172 9173 9174 9175 9176 9177 9178 9179 9180 9181 9182 9183 9184 9185 9186 9187 9188 9189 9190 9191 9192 9193 9194 9195 9196 9197 9198 9199 9200 9201 9202 9203 9204 9205 9206 9207 9208 9209 9210 9211 9212 9213 9214 9215 9216 9217 9218 9219 9220 9221 9222 9223 9224 9225 9226 9227 9228 9229 9230 9231 9232 9233 9234 9235 9236 9237 9238 9239 9240 9241 9242 9243 9244 9245 9246 9247 9248 9249 9250 9251 9252 9253 9254 9255 9256 9257 9258 9259 9260 9261 9262 9263 9264 9265 9266 9267 9268 9269 9270 9271 9272 9273 9274 9275 9276 9277 9278 9279 9280 9281 9282 9283 9284 9285 9286 9287 9288 9289 9290 9291 9292 9293 9294 9295 9296 9297 9298 9299 9300 9301 9302 9303 9304 9305 9306 9307 9308 9309 9310 9311 9312 9313 9314 9315 9316 9317 9318 9319 9320 9321 9322 9323 9324 9325 9326 9327 9328 9329 9330 9331 9332 9333 9334 9335 9336 9337 9338 9339 9340 9341 9342 9343 9344 9345 9346 9347 9348 9349 9350 9351 9352 9353 9354 9355 9356 9357 9358 9359 9360 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 9376 9377 9378 9379 9380 9381 9382 9383 9384 9385 9386 9387 9388 9389 9390 9391 9392 9393 9394 9395 9396 9397 9398 9399 9400 9401 9402 9403 9404 9405 9406 9407 9408 9409 9410 9411 9412 9413 9414 9415 9416 9417 9418 9419 9420 9421 9422 9423 9424 9425 9426 9427 9428 9429 9430 9431 9432 9433 9434 9435 9436 9437 9438 9439 9440 9441 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9452 9453 9454 9455 9456 9457 9458 9459 9460 9461 9462 9463 9464 9465 9466 9467 9468 9469 9470 9471 9472 9473 9474 9475 9476 9477 9478 9479 9480 9481 9482 9483 9484 9485 9486 9487 9488 9489 9490 9491 9492 9493 9494 9495 9496 9497 9498 9499 9500 9501 9502 9503 9504 9505 9506 9507 9508 9509 9510 9511 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 9559 9560 9561 9562 9563 9564 9565 9566 9567 9568 9569 9570 9571 9572 9573 9574 9575 9576 9577 9578 9579 9580 9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 9595 9596 9597 9598 9599 9600 9601 9602 9603 9604 9605 9606 9607 9608 9609 9610 9611 9612 9613 9614 9615 9616 9617 9618 9619 9620 9621 9622 9623 9624 9625 9626 9627 9628 9629 9630 9631 9632 9633 9634 9635 9636 9637 9638 9639 9640 9641 9642 9643 9644 9645 9646 9647 9648 9649 9650 9651 9652 9653 9654 9655 9656 9657 9658 9659 9660 9661 9662 9663 9664 9665 9666 9667 9668 9669 9670 9671 9672 9673 9674 9675 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9692 9693 9694 9695 9696 9697 9698 9699 9700 9701 9702 9703 9704 9705 9706 9707 9708 9709 9710 9711 9712 9713 9714 9715 9716 9717 9718 9719 9720 9721 9722 9723 9724 9725 9726 9727 9728 9729 9730 9731 9732 9733 9734 9735 9736 9737 9738 9739 9740 9741 9742 9743 9744 9745 9746 9747 9748 9749 9750 9751 9752 9753 9754 9755 9756 9757 9758 9759 9760 9761 9762 9763 9764 9765 9766 9767 9768 9769 9770 9771 9772 9773 9774 9775 9776 9777 9778 9779 9780 9781 9782 9783 9784 9785 9786 9787 9788 9789 9790 9791 9792 9793 9794 9795 9796 9797 9798 9799 9800 9801 9802 9803 9804 9805 9806 9807 9808 9809 9810 9811 9812 9813 9814 9815 9816 9817 9818 9819 9820 9821 9822 9823 9824 9825 9826 9827 9828 9829 9830 9831 9832 9833 9834 9835 9836 9837 9838 9839 9840 9841 9842 9843 9844 9845 9846 9847 9848 9849 9850 9851 9852 9853 9854 9855 9856 9857 9858 9859 9860 9861 9862 9863 9864 9865 9866 9867 9868 9869 9870 9871 9872 9873 9874 9875 9876 9877 9878 9879 9880 9881 9882 9883 9884 9885 9886 9887 9888 9889 9890 9891 9892 9893 9894 9895 9896 9897 9898 9899 9900 9901 9902 9903 9904 9905 9906 9907 9908 9909 9910 9911 9912 9913 9914 9915 9916 9917 9918 9919 9920 9921 9922 9923 9924 9925 9926 9927 9928 9929 9930 9931 9932 9933 9934 9935 9936 9937 9938 9939 9940 9941 9942 9943 9944 9945 9946 9947 9948 9949 9950 9951 9952 9953 9954 9955 9956 9957 9958 9959 9960 9961 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 10000 10001 10002 10003 10004 10005 10006 10007 10008 10009 10010 10011 10012 10013 10014 10015 10016 10017 10018 10019 10020 10021 10022 10023 10024 10025 10026 10027 10028 10029 10030 10031 10032 10033 10034 10035 10036 10037 10038 10039 10040 10041 10042 10043 10044 10045 10046 10047 10048 10049 10050 10051 10052 10053 10054 10055 10056 10057 10058 10059 10060 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 10072 10073 10074 10075 10076 10077 10078 10079 10080 10081 10082 10083 10084 10085 10086 10087 10088 10089 10090 10091 10092 10093 10094 10095 10096 10097 10098 10099 10100 10101 10102 10103 10104 10105 10106 10107 10108 10109 10110 10111 10112 10113 10114 10115 10116 10117 10118 10119 10120 10121 10122 10123 10124 10125 10126 10127 10128 10129 10130 10131 10132 10133 10134 10135 10136 10137 10138 10139 10140 10141 10142 10143 10144 10145 10146 10147 10148 10149 10150 10151 10152 10153 10154 10155 10156 10157 10158 10159 10160 10161 10162 10163 10164 10165 10166 10167 10168 10169 10170 10171 10172 10173 10174 10175 10176 10177 10178 10179 10180 10181 10182 10183 10184 10185 10186 10187 10188 10189 10190 10191 10192 10193 10194 10195 10196 10197 10198 10199 10200 10201 10202 10203 10204 10205 10206 10207 10208 10209 10210 10211 10212 10213 10214 10215 10216 10217 10218 10219 10220 10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10232 10233 10234 10235 10236 10237 10238 10239 10240 10241 10242 10243 10244 10245 10246 10247 10248 10249 10250 10251 10252 10253 10254 10255 10256 10257 10258 10259 10260 10261 10262 10263 10264 10265 10266 10267 10268 10269 10270 10271 10272 10273 10274 10275 10276 10277 10278 10279 10280 10281 10282 10283 10284 10285 10286 10287 10288 10289 10290 10291 10292 10293 10294 10295 10296 10297 10298 10299 10300 10301 10302 10303 10304 10305 10306 10307 10308 10309 10310 10311 10312 10313 10314 10315 10316 10317 10318 10319 10320 10321 10322 10323 10324 10325 10326 10327 10328 10329 10330 10331 10332 10333 10334 10335 10336 10337 10338 10339 10340 10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 10396 10397 10398 10399 10400 10401 10402 10403 10404 10405 10406 10407 10408 10409 10410 10411 10412 10413 10414 10415 10416 10417 10418 10419 10420 10421 10422 10423 10424 10425 10426 10427 10428 10429 10430 10431 10432 10433 10434 10435 10436 10437 10438 10439 10440 10441 10442 10443 10444 10445 10446 10447 10448 10449 10450 10451 10452 10453 10454 10455 10456 10457 10458 10459 10460 10461 10462 10463 10464 10465 10466 10467 10468 10469 10470 10471 10472 10473 10474 10475 10476 10477 10478 10479 10480 10481 10482 10483 10484 10485 10486 10487 10488 10489 10490 10491 10492 10493 10494 10495 10496 10497 10498 10499 10500 10501 10502 10503 10504 10505 10506 10507 10508 10509 10510 10511 10512 10513 10514 10515 10516 10517 10518 10519 10520 10521 10522 10523 10524 10525 10526 10527 10528 10529 10530 10531 10532 10533 10534 10535 10536 10537 10538 10539 10540 10541 10542 10543 10544 10545 10546 10547 10548 10549 10550 10551 10552 10553 10554 10555 10556 10557 10558 10559 10560 10561 10562 10563 10564 10565 10566 10567 10568 10569 10570 10571 10572 10573 10574 10575 10576 10577 10578 10579 10580 10581 10582 10583 10584 10585 10586 10587 10588 10589 10590 10591 10592 10593 10594 10595 10596 10597 10598 10599 10600 10601 10602 10603 10604 10605 10606 10607 10608 10609 10610 10611 10612 10613 10614 10615 10616 10617 10618 10619 10620 10621 10622 10623 10624 10625 10626 10627 10628 10629 10630 10631 10632 10633 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10652 10653 10654 10655 10656 10657 10658 10659 10660 10661 10662 10663 10664 10665 10666 10667 10668 10669 10670 10671 10672 10673 10674 10675 10676 10677 10678 10679 10680 10681 10682 10683 10684 10685 10686 10687 10688 10689 10690 10691 10692 10693 10694 10695 10696 10697 10698 10699 10700 10701 10702 10703 10704 10705 10706 10707 10708 10709 10710 10711 10712 10713 10714 10715 10716 10717 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734 10735 10736 10737 10738 10739 10740 10741 10742 10743 10744 10745 10746 10747 10748 10749 10750 10751 10752 10753 10754 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764 10765 10766 10767 10768 10769 10770 10771 10772 10773 10774 10775 10776 10777 10778 10779 10780 10781 10782 10783 10784 10785 10786 10787 10788 10789 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 10802 10803 10804 10805 10806 10807 10808 10809 10810 10811 10812 10813 10814 10815 10816 10817 10818 10819 10820 10821 10822 10823 10824 10825 10826 10827 10828 10829 10830 10831 10832 10833 10834 10835 10836 10837 10838 10839 10840 10841 10842 10843 10844 10845 10846 10847 10848 10849 10850 10851 10852 10853 10854 10855 10856 10857 10858 10859 10860 10861 10862 10863 10864 10865 10866 10867 10868 10869 10870 10871 10872 10873 10874 10875 10876 10877 10878 10879 10880 10881 10882 10883 10884 10885 10886 10887 10888 10889 10890 10891 10892 10893 10894 10895 10896 10897 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 10916 10917 10918 10919 10920 10921 10922 10923 10924 10925 10926 10927 10928 10929 10930 10931 10932 10933 10934 10935 10936 10937 10938 10939 10940 10941 10942 10943 10944 10945 10946 10947 10948 10949 10950 10951 10952 10953 10954 10955 10956 10957 10958 10959 10960 10961 10962 10963 10964 10965 10966 10967 10968 10969 10970 10971 10972 10973 10974 10975 10976 10977 10978 10979 10980 10981 10982 10983 10984 10985 10986 10987 10988 10989 10990 10991 10992 10993 10994 10995 10996 10997 10998 10999 11000 11001 11002 11003 11004 11005 11006 11007 11008 11009 11010 11011 11012 11013 11014 11015 11016 11017 11018 11019 11020 11021 11022 11023 11024 11025 11026 11027 11028 11029 11030 11031 11032 11033 11034 11035 11036 11037 11038 11039 11040 11041 11042 11043 11044 11045 11046 11047 11048 11049 11050 11051 11052 11053 11054 11055 11056 11057 11058 11059 11060 11061 11062 11063 11064 11065 11066 11067 11068 11069 11070 11071 11072 11073 11074 11075 11076 11077 11078 11079 11080 11081 11082 11083 11084 11085 11086 11087 11088 11089 11090 11091 11092 11093 11094 11095 11096 11097 11098 11099 11100 11101 11102 11103 11104 11105 11106 11107 11108 11109 11110 11111 11112 11113 11114 11115 11116 11117 11118 11119 11120 11121 11122 11123 11124 11125 11126 11127 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 11156 11157 11158 11159 11160 11161 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11174 11175 11176 11177 11178 11179 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 11276 11277 11278 11279 11280 11281 11282 11283 11284 11285 11286 11287 11288 11289 11290 11291 11292 11293 11294 11295 11296 11297 11298 11299 11300 11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 11312 11313 11314 11315 11316 11317 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 11338 11339 11340 11341 11342 11343 11344 11345 11346 11347 11348 11349 11350 11351 11352 11353 11354 11355 11356 11357 11358 11359 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11378 11379 11380 11381 11382 11383 11384 11385 11386 11387 11388 11389 11390 11391 11392 11393 11394 11395 11396 11397 11398 11399 11400 11401 11402 11403 11404 11405 11406 11407 11408 11409 11410 11411 11412 11413 11414 11415 11416 11417 11418 11419 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11438 11439 11440 11441 11442 11443 11444 11445 11446 11447 11448 11449 11450 11451 11452 11453 11454 11455 11456 11457 11458 11459 11460 11461 11462 11463 11464 11465 11466 11467 11468 11469 11470 11471 11472 11473 11474 11475 11476 11477 11478 11479 11480 11481 11482 11483 11484 11485 11486 11487 11488 11489 11490 11491 11492 11493 11494 11495 11496 11497 11498 11499 11500 11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 11515 11516 11517 11518 11519 11520 11521 11522 11523 11524 11525 11526 11527 11528 11529 11530 11531 11532 11533 11534 11535 11536 11537 11538 11539 11540 11541 11542 11543 11544 11545 11546 11547 11548 11549 11550 11551 11552 11553 11554 11555 11556 11557 11558 11559 11560 11561 11562 11563 11564 11565 11566 11567 11568 11569 11570 11571 11572 11573 11574 11575 11576 11577 11578 11579 11580 11581 11582 11583 11584 11585 11586 11587 11588 11589 11590 11591 11592 11593 11594 11595 11596 11597 11598 11599 11600 11601 11602 11603 11604 11605 11606 11607 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 11634 11635 11636 11637 11638 11639 11640 11641 11642 11643 11644 11645 11646 11647 11648 11649 11650 11651 11652 11653 11654 11655 11656 11657 11658 11659 11660 11661 11662 11663 11664 11665 11666 11667 11668 11669 11670 11671 11672 11673 11674 11675 11676 11677 11678 11679 11680 11681 11682 11683 11684 11685 11686 11687 11688 11689 11690 11691 11692 11693 11694 11695 11696 11697 11698 11699 11700 11701 11702 11703 11704 11705 11706 11707 11708 11709 11710 11711 11712 11713 11714 11715 11716 11717 11718 11719 11720 11721 11722 11723 11724 11725 11726 11727 11728 11729 11730 11731 11732 11733 11734 11735 11736 11737 11738 11739 11740 11741 11742 11743 11744 11745 11746 11747 11748 11749 11750 11751 11752 11753 11754 11755 11756 11757 11758 11759 11760 11761 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11774 11775 11776 11777 11778 11779 11780 11781 11782 11783 11784 11785 11786 11787 11788 11789 11790 11791 11792 11793 11794 11795 11796 11797 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 11810 11811 11812 11813 11814 11815 11816 11817 11818 11819 11820 11821 11822 11823 11824 11825 11826 11827 11828 11829 11830 11831 11832 11833 11834 11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 11849 11850 11851 11852 11853 11854 11855 11856 11857 11858 11859 11860 11861 11862 11863 11864 11865 11866 11867 11868 11869 11870 11871 11872 11873 11874 11875 11876 11877 11878 11879 11880 11881 11882 11883 11884 11885 11886 11887 11888 11889 11890 11891 11892 11893 11894 11895 11896 11897 11898 11899 11900 11901 11902 11903 11904 11905 11906 11907 11908 11909 11910 11911 11912 11913 11914 11915 11916 11917 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11948 11949 11950 11951 11952 11953 11954 11955 11956 11957 11958 11959 11960 11961 11962 11963 11964 11965 11966 11967 11968 11969 11970 11971 11972 11973 11974 11975 11976 11977 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 11993 11994 11995 11996 11997 11998 11999 12000 12001 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 12013 12014 12015 12016 12017 12018 12019 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 12038 12039 12040 12041 12042 12043 12044 12045 12046 12047 12048 12049 12050 12051 12052 12053 12054 12055 12056 12057 12058 12059 12060 12061 12062 12063 12064 12065 12066 12067 12068 12069 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12134 12135 12136 12137 12138 12139 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 12206 12207 12208 12209 12210 12211 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 12224 12225 12226 12227 12228 12229 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 12242 12243 12244 12245 12246 12247 12248 12249 12250 12251 12252 12253 12254 12255 12256 12257 12258 12259 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 12272 12273 12274 12275 12276 12277 12278 12279 12280 12281 12282 12283 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 12314 12315 12316 12317 12318 12319 12320 12321 12322 12323 12324 12325 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 12356 12357 12358 12359 12360 12361 12362 12363 12364 12365 12366 12367 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 12398 12399 12400 12401 12402 12403 12404 12405 12406 12407 12408 12409 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 12422 12423 12424 12425 12426 12427 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 12440 12441 12442 12443 12444 12445 12446 12447 12448 12449 12450 12451 12452 12453 12454 12455 12456 12457 12458 12459 12460 12461 12462 12463 12464 12465 12466 12467 12468 12469 12470 12471 12472 12473 12474 12475 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12531 12532 12533 12534 12535 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 12642 12643 12644 12645 12646 12647 12648 12649 12650 12651 12652 12653 12654 12655 12656 12657 12658 12659 12660 12661 12662 12663 12664 12665 12666 12667 12668 12669 12670 12671 12672 12673 12674 12675 12676 12677 12678 12679 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12710 12711 12712 12713 12714 12715 12716 12717 12718 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 12756 12757 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 12770 12771 12772 12773 12774 12775 12776 12777 12778 12779 12780 12781 12782 12783 12784 12785 12786 12787 12788 12789 12790 12791 12792 12793 12794 12795 12796 12797 12798 12799 12800 12801 12802 12803 12804 12805 12806 12807 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 12818 12819 12820 12821 12822 12823 12824 12825 12826 12827 12828 12829 12830 12831 12832 12833 12834 12835 12836 12837 12838 12839 12840 12841 12842 12843 12844 12845 12846 12847 12848 12849 12850 12851 12852 12853 12854 12855 12856 12857 12858 12859 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 12873 12874 12875 12876 12877 12878 12879 12880 12881 12882 12883 12884 12885 12886 12887 12888 12889 12890 12891 12892 12893 12894 12895 12896 12897 12898 12899 12900 12901 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 12914 12915 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12932 12933 12934 12935 12936 12937 12938 12939 12940 12941 12942 12943 12944 12945 12946 12947 12948 12949 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 12962 12963 12964 12965 12966 12967 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12979 12980 12981 12982 12983 12984 12985 12986 12987 12988 12989 12990 12991 12992 12993 12994 12995 12996 12997 12998 12999 13000 13001 13002 13003 13004 13005 13006 13007 13008 13009 13010 13011 13012 13013 13014 13015 13016 13017 13018 13019 13020 13021 13022 13023 13024 13025 13026 13027 13028 13029 13030 13031 13032 13033 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 13045 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 13086 13087 13088 13089 13090 13091 13092 13093 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 13106 13107 13108 13109 13110 13111 13112 13113 13114 13115 13116 13117 13118 13119 13120 13121 13122 13123 13124 13125 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13141 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 13154 13155 13156 13157 13158 13159 13160 13161 13162 13163 13164 13165 13166 13167 13168 13169 13170 13171 13172 13173 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 13250 13251 13252 13253 13254 13255 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13286 13287 13288 13289 13290 13291 13292 13293 13294 13295 13296 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 13308 13309 13310 13311 13312 13313 13314 13315 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 13394 13395 13396 13397 13398 13399 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 13429 13430 13431 13432 13433 13434 13435 13436 13437 13438 13439 13440 13441 13442 13443 13444 13445 13446 13447 13448 13449 13450 13451 13452 13453 13454 13455 13456 13457 13458 13459 13460 13461 13462 13463 13464 13465 13466 13467 13468 13469 13470 13471 13472 13473 13474 13475 13476 13477 13478 13479 13480 13481 13482 13483 13484 13485 13486 13487 13488 13489 13490 13491 13492 13493 13494 13495 13496 13497 13498 13499 13500 13501 13502 13503 13504 13505 13506 13507 13508 13509 13510 13511 13512 13513 13514 13515 13516 13517 13518 13519 13520 13521 13522 13523 13524 13525 13526 13527 13528 13529 13530 13531 13532 13533 13534 13535 13536 13537 13538 13539 13540 13541 13542 13543 13544 13545 13546 13547 13548 13549 13550 13551 13552 13553 13554 13555 13556 13557 13558 13559 13560 13561 13562 13563 13564 13565 13566 13567 13568 13569 13570 13571 13572 13573 13574 13575 13576 13577 13578 13579 13580 13581 13582 13583 13584 13585 13586 13587 13588 13589 13590 13591 13592 13593 13594 13595 13596 13597 13598 13599 13600 13601 13602 13603 13604 13605 13606 13607 13608 13609 13610 13611 13612 13613 13614 13615 13616 13617 13618 13619 13620 13621 13622 13623 13624 13625 13626 13627 13628 13629 13630 13631 13632 13633 13634 13635 13636 13637 13638 13639 13640 13641 13642 13643 13644 13645 13646 13647 13648 13649 13650 13651 13652 13653 13654 13655 13656 13657 13658 13659 13660 13661 13662 13663 13664 13665 13666 13667 13668 13669 13670 13671 13672 13673 13674 13675 13676 13677 13678 13679 13680 13681 13682 13683 13684 13685 13686 13687 13688 13689 13690 13691 13692 13693 13694 13695 13696 13697 13698 13699 13700 13701 13702 13703 13704 13705 13706 13707 13708 13709 13710 13711 13712 13713 13714 13715 13716 13717 13718 13719 13720 13721 13722 13723 13724 13725 13726 13727 13728 13729 13730 13731 13732 13733 13734 13735 13736 13737 13738 13739 13740 13741 13742 13743 13744 13745 13746 13747 13748 13749 13750 13751 13752 13753 13754 13755 13756 13757 13758 13759 13760 13761 13762 13763 13764 13765 13766 13767 13768 13769 13770 13771 13772 13773 13774 13775 13776 13777 13778 13779 13780 13781 13782 13783 13784 13785 13786 13787 13788 13789 13790 13791 13792 13793 13794 13795 13796 13797 13798 13799 13800 13801 13802 13803 13804 13805 13806 13807 13808 13809 13810 13811 13812 13813 13814 13815 13816 13817 13818 13819 13820 13821 13822 13823 13824 13825 13826 13827 13828 13829 13830 13831 13832 13833 13834 13835 13836 13837 13838 13839 13840 13841 13842 13843 13844 13845 13846 13847 13848 13849 13850 13851 13852 13853 13854 13855 13856 13857 13858 13859 13860 13861 13862 13863 13864 13865 13866 13867 13868 13869 13870 13871 13872 13873 13874 13875 13876 13877 13878 13879 13880 13881 13882 13883 13884 13885 13886 13887 13888 13889 13890 13891 13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 13904 13905 13906 13907 13908 13909 13910 13911 13912 13913 13914 13915 13916 13917 13918 13919 13920 13921 13922 13923 13924 13925 13926 13927 13928 13929 13930 13931 13932 13933 13934 13935 13936 13937 13938 13939 13940 13941 13942 13943 13944 13945 13946 13947 13948 13949 13950 13951 13952 13953 13954 13955 13956 13957 13958 13959 13960 13961 13962 13963 13964 13965 13966 13967 13968 13969 13970 13971 13972 13973 13974 13975 13976 13977 13978 13979 13980 13981 13982 13983 13984 13985 13986 13987 13988 13989 13990 13991 13992 13993 13994 13995 13996 13997 13998 13999 14000 14001 14002 14003 14004 14005 14006 14007 14008 14009 14010 14011 14012 14013 14014 14015 14016 14017 14018 14019 14020 14021 14022 14023 14024 14025 14026 14027 14028 14029 14030 14031 14032 14033 14034 14035 14036 14037 14038 14039 14040 14041 14042 14043 14044 14045 14046 14047 14048 14049 14050 14051 14052 14053 14054 14055 14056 14057 14058 14059 14060 14061 14062 14063 14064 14065 14066 14067 14068 14069 14070 14071 14072 14073 14074 14075 14076 14077 14078 14079 14080 14081 14082 14083 14084 14085 14086 14087 14088 14089 14090 14091 14092 14093 14094 14095 14096 14097 14098 14099 14100 14101 14102 14103 14104 14105 14106 14107 14108 14109 14110 14111 14112 14113 14114 14115 14116 14117 14118 14119 14120 14121 14122 14123 14124 14125 14126 14127 14128 14129 14130 14131 14132 14133 14134 14135 14136 14137 14138 14139 14140 14141 14142 14143 14144 14145 14146 14147 14148 14149 14150 14151 14152 14153 14154 14155 14156 14157 14158 14159 14160 14161 14162 14163 14164 14165 14166 14167 14168 14169 14170 14171 14172 14173 14174 14175 14176 14177 14178 14179 14180 14181 14182 14183 14184 14185 14186 14187 14188 14189 14190 14191 14192 14193 14194 14195 14196 14197 14198 14199 14200 14201 14202 14203 14204 14205 14206 14207 14208 14209 14210 14211 14212 14213 14214 14215 14216 14217 14218 14219 14220 14221 14222 14223 14224 14225 14226 14227 14228 14229 14230 14231 14232 14233 14234 14235 14236 14237 14238 14239 14240 14241 14242 14243 14244 14245 14246 14247 14248 14249 14250 14251 14252 14253 14254 14255 14256 14257 14258 14259 14260 14261 14262 14263 14264 14265 14266 14267 14268 14269 14270 14271 14272 14273 14274 14275 14276 14277 14278 14279 14280 14281 14282 14283 14284 14285 14286 14287 14288 14289 14290 14291 14292 14293 14294 14295 14296 14297 14298 14299 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 14312 14313 14314 14315 14316 14317 14318 14319 14320 14321 14322 14323 14324 14325 14326 14327 14328 14329 14330 14331 14332 14333 14334 14335 14336 14337 14338 14339 14340 14341 14342 14343 14344 14345 14346 14347 14348 14349 14350 14351 14352 14353 14354 14355 14356 14357 14358 14359 14360 14361 14362 14363 14364 14365 14366 14367 14368 14369 14370 14371 14372 14373 14374 14375 14376 14377 14378 14379 14380 14381 14382 14383 14384 14385 14386 14387 14388 14389 14390 14391 14392 14393 14394 14395 14396 14397 14398 14399 14400 14401 14402 14403 14404 14405 14406 14407 14408 14409 14410 14411 14412 14413 14414 14415 14416 14417 14418 14419 14420 14421 14422 14423 14424 14425 14426 14427 14428 14429 14430 14431 14432 14433 14434 14435 14436 14437 14438 14439 14440 14441 14442 14443 14444 14445 14446 14447 14448 14449 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 14462 14463 14464 14465 14466 14467 14468 14469 14470 14471 14472 14473 14474 14475 14476 14477 14478 14479 14480 14481 14482 14483 14484 14485 14486 14487 14488 14489 14490 14491 14492 14493 14494 14495 14496 14497 14498 14499 14500 14501 14502 14503 14504 14505 14506 14507 14508 14509 14510 14511 14512 14513 14514 14515 14516 14517 14518 14519 14520 14521 14522 14523 14524 14525 14526 14527 14528 14529 14530 14531 14532 14533 14534 14535 14536 14537 14538 14539 14540 14541 14542 14543 14544 14545 14546 14547 14548 14549 14550 14551 14552 14553 14554 14555 14556 14557 14558 14559 14560 14561 14562 14563 14564 14565 14566 14567 14568 14569 14570 14571 14572 14573 14574 14575 14576 14577 14578 14579 14580 14581 14582 14583 14584 14585 14586 14587 14588 14589 14590 14591 14592 14593 14594 14595 14596 14597 14598 14599 14600 14601 14602 14603 14604 14605 14606 14607 14608 14609 14610 14611 14612 14613 14614 14615 14616 14617 14618 14619 14620 14621 14622 14623 14624 14625 14626 14627 14628 14629 14630 14631 14632 14633 14634 14635 14636 14637 14638 14639 14640 14641 14642 14643 14644 14645 14646 14647 14648 14649 14650 14651 14652 14653 14654 14655 14656 14657 14658 14659 14660 14661 14662 14663 14664 14665 14666 14667 14668 14669 14670 14671 14672 14673 14674 14675 14676 14677 14678 14679 14680 14681 14682 14683 14684 14685 14686 14687 14688 14689 14690 14691 14692 14693 14694 14695 14696 14697 14698 14699 14700 14701 14702 14703 14704 14705 14706 14707 14708 14709 14710 14711 14712 14713 14714 14715 14716 14717 14718 14719 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 14732 14733 14734 14735 14736 14737 14738 14739 14740 14741 14742 14743 14744 14745 14746 14747 14748 14749 14750 14751 14752 14753 14754 14755 14756 14757 14758 14759 14760 14761 14762 14763 14764 14765 14766 14767 14768 14769 14770 14771 14772 14773 14774 14775 14776 14777 14778 14779 14780 14781 14782 14783 14784 14785 14786 14787 14788 14789 14790 14791 14792 14793 14794 14795 14796 14797 14798 14799 14800 14801 14802 14803 14804 14805 14806 14807 14808 14809 14810 14811 14812 14813 14814 14815 14816 14817 14818 14819 14820 14821 14822 14823 14824 14825 14826 14827 14828 14829 14830 14831 14832 14833 14834 14835 14836 14837 14838 14839 14840 14841 14842 14843 14844 14845 14846 14847 14848 14849 14850 14851 14852 14853 14854 14855 14856 14857 14858 14859 14860 14861 14862 14863 14864 14865 14866 14867 14868 14869 14870 14871 14872 14873 14874 14875 14876 14877 14878 14879 14880 14881 14882 14883 14884 14885 14886 14887 14888 14889 14890 14891 14892 14893 14894 14895 14896 14897 14898 14899 14900 14901 14902 14903 14904 14905 14906 14907 14908 14909 14910 14911 14912 14913 14914 14915 14916 14917 14918 14919 14920 14921 14922 14923 14924 14925 14926 14927 14928 14929 14930 14931 14932 14933 14934 14935 14936 14937 14938 14939 14940 14941 14942 14943 14944 14945 14946 14947 14948 14949 14950 14951 14952 14953 14954 14955 14956 14957 14958 14959 14960 14961 14962 14963 14964 14965 14966 14967 14968 14969 14970 14971 14972 14973 14974 14975 14976 14977 14978 14979 14980 14981 14982 14983 14984 14985 14986 14987 14988 14989 14990 14991 14992 14993 14994 14995 14996 14997 14998 14999 15000 15001 15002 15003 15004 15005 15006 15007 15008 15009 15010 15011 15012 15013 15014 15015 15016 15017 15018 15019 15020 15021 15022 15023 15024 15025 15026 15027 15028 15029 15030 15031 15032 15033 15034 15035 15036 15037 15038 15039 15040 15041 15042 15043 15044 15045 15046 15047 15048 15049 15050 15051 15052 15053 15054 15055 15056 15057 15058 15059 15060 15061 15062 15063 15064 15065 15066 15067 15068 15069 15070 15071 15072 15073 15074 15075 15076 15077 15078 15079 15080 15081 15082 15083 15084 15085 15086 15087 15088 15089 15090 15091 15092 15093 15094 15095 15096 15097 15098 15099 15100 15101 15102 15103 15104 15105 15106 15107 15108 15109 15110 15111 15112 15113 15114 15115 15116 15117 15118 15119 15120 15121 15122 15123 15124 15125 15126 15127 15128 15129 15130 15131 15132 15133 15134 15135 15136 15137 15138 15139 15140 15141 15142 15143 15144 15145 15146 15147 15148 15149 15150 15151 15152 15153 15154 15155 15156 15157 15158 15159 15160 15161 15162 15163 15164 15165 15166 15167 15168 15169 15170 15171 15172 15173 15174 15175 15176 15177 15178 15179 15180 15181 15182 15183 15184 15185 15186 15187 15188 15189 15190 15191 15192 15193 15194 15195 15196 15197 15198 15199 15200 15201 15202 15203 15204 15205 15206 15207 15208 15209 15210 15211 15212 15213 15214 15215 15216 15217 15218 15219 15220 15221 15222 15223 15224 15225 15226 15227 15228 15229 15230 15231 15232 15233 15234 15235 15236 15237 15238 15239 15240 15241 15242 15243 15244 15245 15246 15247 15248 15249 15250 15251 15252 15253 15254 15255 15256 15257 15258 15259 15260 15261 15262 15263 15264 15265 15266 15267 15268 15269 15270 15271 15272 15273 15274 15275 15276 15277 15278 15279 15280 15281 15282 15283 15284 15285 15286 15287 15288 15289 15290 15291 15292 15293 15294 15295 15296 15297 15298 15299 15300 15301 15302 15303 15304 15305 15306 15307 15308 15309 15310 15311 15312 15313 15314 15315 15316 15317 15318 15319 15320 15321 15322 15323 15324 15325 15326 15327 15328 15329 15330 15331 15332 15333 15334 15335 15336 15337 15338 15339 15340 15341 15342 15343 15344 15345 15346 15347 15348 15349 15350 15351 15352 15353 15354 15355 15356 15357 15358 15359 15360 15361 15362 15363 15364 15365 15366 15367 15368 15369 15370 15371 15372 15373 15374 15375 15376 15377 15378 15379 15380 15381 15382 15383 15384 15385 15386 15387 15388 15389 15390 15391 15392 15393 15394 15395 15396 15397 15398 15399 15400 15401 15402 15403 15404 15405 15406 15407 15408 15409 15410 15411 15412 15413 15414 15415 15416 15417 15418 15419 15420 15421 15422 15423 15424 15425 15426 15427 15428 15429 15430 15431 15432 15433 15434 15435 15436 15437 15438 15439 15440 15441 15442 15443 15444 15445 15446 15447 15448 15449 15450 15451 15452 15453 15454 15455 15456 15457 15458 15459 15460 15461 15462 15463 15464 15465 15466 15467 15468 15469 15470 15471 15472 15473 15474 15475 15476 15477 15478 15479 15480 15481 15482 15483 15484 15485 15486 15487 15488 15489 15490 15491 15492 15493 15494 15495 15496 15497 15498 15499 15500 15501 15502 15503 15504 15505 15506 15507 15508 15509 15510 15511 15512 15513 15514 15515 15516 15517 15518 15519 15520 15521 15522 15523 15524 15525 15526 15527 15528 15529 15530 15531 15532 15533 15534 15535 15536 15537 15538 15539 15540 15541 15542 15543 15544 15545 15546 15547 15548 15549 15550 15551 15552 15553 15554 15555 15556 15557 15558 15559 15560 15561 15562 15563 15564 15565 15566 15567 15568 15569 15570 15571 15572 15573 15574 15575 15576 15577 15578 15579 15580 15581 15582 15583 15584 15585 15586 15587 15588 15589 15590 15591 15592 15593 15594 15595 15596 15597 15598 15599 15600 15601 15602 15603 15604 15605 15606 15607 15608 15609 15610 15611 15612 15613 15614 15615 15616 15617 15618 15619 15620 15621 15622 15623 15624 15625 15626 15627 15628 15629 15630 15631 15632 15633 15634 15635 15636 15637 15638 15639 15640 15641 15642 15643 15644 15645 15646 15647 15648 15649 15650 15651 15652 15653 15654 15655 15656 15657 15658 15659 15660 15661 15662 15663 15664 15665 15666 15667 15668 15669 15670 15671 15672 15673 15674 15675 15676 15677 15678 15679 15680 15681 15682 15683 15684 15685 15686 15687 15688 15689 15690 15691 15692 15693 15694 15695 15696 15697 15698 15699 15700 15701 15702 15703 15704 15705 15706 15707 15708 15709 15710 15711 15712 15713 15714 15715 15716 15717 15718 15719 15720 15721 15722 15723 15724 15725 15726 15727 15728 15729 15730 15731 15732 15733 15734 15735 15736 15737 15738 15739 15740 15741 15742 15743 15744 15745 15746 15747 15748 15749 15750 15751 15752 15753 15754 15755 15756 15757 15758 15759 15760 15761 15762 15763 15764 15765 15766 15767 15768 15769 15770 15771 15772 15773 15774 15775 15776 15777 15778 15779 15780 15781 15782 15783 15784 15785 15786 15787 15788 15789 15790 15791 15792 15793 15794 15795 15796 15797 15798 15799 15800 15801 15802 15803 15804 15805 15806 15807 15808 15809 15810 15811 15812 15813 15814 15815 15816 15817 15818 15819 15820 15821 15822 15823 15824 15825 15826 15827 15828 15829 15830 15831 15832 15833 15834 15835 15836 15837 15838 15839 15840 15841 15842 15843 15844 15845 15846 15847 15848 15849 15850 15851 15852 15853 15854 15855 15856 15857 15858 15859 15860 15861 15862 15863 15864 15865 15866 15867 15868 15869 15870 15871 15872 15873 15874 15875 15876 15877 15878 15879 15880 15881 15882 15883 15884 15885 15886 15887 15888 15889 15890 15891 15892 15893 15894 15895 15896 15897 15898 15899 15900 15901 15902 15903 15904 15905 15906 15907 15908 15909 15910 15911 15912 15913 15914 15915 15916 15917 15918 15919 15920 15921 15922 15923 15924 15925 15926 15927 15928 15929 15930 15931 15932 15933 15934 15935 15936 15937 15938 15939 15940 15941 15942 15943 15944 15945 15946 15947 15948 15949 15950 15951 15952 15953 15954 15955 15956 15957 15958 15959 15960 15961 15962 15963 15964 15965 15966 15967 15968 15969 15970 15971 15972 15973 15974 15975 15976 15977 15978 15979 15980 15981 15982 15983 15984 15985 15986 15987 15988 15989 15990 15991 15992 15993 15994 15995 15996 15997 15998 15999 16000 16001 16002 16003 16004 16005 16006 16007 16008 16009 16010 16011 16012 16013 16014 16015 16016 16017 16018 16019 16020 16021 16022 16023 16024 16025 16026 16027 16028 16029 16030 16031 16032 16033 16034 16035 16036 16037 16038 16039 16040 16041 16042 16043 16044 16045 16046 16047 16048 16049 16050 16051 16052 16053 16054 16055 16056 16057 16058 16059 16060 16061 16062 16063 16064 16065 16066 16067 16068 16069 16070 16071 16072 16073 16074 16075 16076 16077 16078 16079 16080 16081 16082 16083 16084 16085 16086 16087 16088 16089 16090 16091 16092 16093 16094 16095 16096 16097 16098 16099 16100 16101 16102 16103 16104 16105 16106 16107 16108 16109 16110 16111 16112 16113 16114 16115 16116 16117 16118 16119 16120 16121 16122 16123 16124 16125 16126 16127 16128 16129 16130 16131 16132 16133 16134 16135 16136 16137 16138 16139 16140 16141 16142 16143 16144 16145 16146 16147 16148 16149 16150 16151 16152 16153 16154 16155 16156 16157 16158 16159 16160 16161 16162 16163 16164 16165 16166 16167 16168 16169 16170 16171 16172 16173 16174 16175 16176 16177 16178 16179 16180 16181 16182 16183 16184 16185 16186 16187 16188 16189 16190 16191 16192 16193 16194 16195 16196 16197
|
-----------
| Changelog |
-----------
***** Tagged with galax-1-1 for GODI O'Caml release 3.10 *****
March 24, 2008 - Mary
o Typing_call
- Fixed insidious bug in Typing_call in which static type checking
for binary overloaded function call did not match on all
possible pairs of types, thus excluding valid output types,
which lead to type-based rewriting incorrectly converting the
overloaded/polymorphic call to a monomorphic call.
March 21, 2008 - Jerome
o Typing:
- Fixed wrong signatures for op:is-same-node, op:node-*.
***** RE-Tagged with galax-1-0 for GODI O'Caml release 3.10 *****
March 12, 2008 - Jerome
o Installation:
- Now installing the extensions examples directory.
- Added missing META.in.
o Serialization:
- Fixed a few issues with serialization (showing up while doing
the tutorial).
o Documentation:
- Added table of contents back.
- Pass on installation chapter. Added section on how to run the
W3C XQuery test suite.
- Removed the 'accessing and storing XML' part relating to Jungle
and datamodel, empty or obsolete.
- Added back chapter on APIs.
- Shuffled the chapters in the reference part (alignment is
renamed conformance and comes first, 'general' last).
- Removed tutorial part on serialization as well-formed,
buggy. Added text for more useful 'standard' mode.
- Pass on tutorial chapter added a short tutorial section on
printing compilation phases.
o Testing:
- Fixed the default config file to not point to the
Galax-specific test suite. (for distribution).
February 21, 2008 - Jerome
o Release:
- Changed the status to 'Stable'
o Documentation:
- Pass on Chapter 1.
February 21, 2008 - Jerome
o Debian:
- Folded in Stefano's patches.
o Documentation:
- Re-enabled documentation generation.
- Fixed some formatting issues.
***** Tagged with galax-1-0 for GODI O'Caml release 3.10 *****
February 12, 2008 - Mary
o Ran XQuery Test Suite
o Fixed the APIs
January 29, 2008 - Mary [DXQ]
o Galaxd
BUG ALERT:
Added default configuration: Conf.set_materialize_tables Conf.Always;
Changes Conf.materialize_tables_kind from Analysis (i.e., always
do analysis) to Always, due to quadratic memory usage bug somewhere
in Alg_path_structutil.path_sequences_with_disjoint_roots
o Typing_expr
Bugs in typing Eval and Insert.
o Webgui
Added new graph-drawing for <node> and (sub)<tree>
o Top_util
load_graph raises error if named graph does not exist.
o Procmod_phases
Permitted code selection phase to be optional
January 14, 2008 - Mary [DXQ]
o Playing with Willow
December 5, 2007 - Mary
o Java API
- Changes to get Java API to link
TODO: align examples/galapi/java_api
November 26, 2007 - Mary
o C API
Makefile.galax: Had to add "-lrt" and CONF_C_LIBPCRE to C-API link
opitons.
November 16, 2007 - Mary [DXQ]
o Changed syntax of box-closure expression to:
for server P implement Q box { E }
Assumption is that closure will be evaluated at some server P
that implements interface Q, but we do not know the ultimate
destination.
NB: Now that we ship arbitrary code in closure, we have even more
motivation to distinguish between functions that are (1) location
dependent and/or (2) updating. We ue 'updating' modifier to
describe both, which conflates meaning. This will eventually bite
us when we want to optimize an expression for a particular server.
o Updated Willow example
- Changes friend for a domain based on latency
November 7, 2007 - Mary [DXQ]
o Changed glx:gettime() to use Unix.gettimeofday()
o Fixed bug in normalization & code selection for
'for server P box { E }' to have same semantics as the remote
execute expressions.
November 6, 2007 - Mary [DXQ]
o Changed config files to use uniform graph format for neighbors and
latencies.
See examples/dxq/narada/latencies.xml & examples/dxq/willow/topology.xml
o Webgui
Added "-t graph.xml" option to load initial neighbor topology from file.
October 25, 2007 - Jerome
o DXQ:
- Fixed precedence conflicts in the parser for boxstuff
expressions.
o Anonymization:
- Factored out occurrences of 'Galax' in strings into
a single constant, to facilitate anonymization. (SIGMOD stuff).
***** Tagged with galax-0-9-9 for Debian Release to Stefano Zacchiroli <zack@bononia.it> *****
October 24, 2007 - Mary
o Documentation:
Woefully incomplete vis a vis Updates, XQueryP, APIs, etc.
o Code_selection:
Fixed insidious bug in code selection for references to imported
variable or imported function: Incorrectly returned
code-selection-context of imported module instead of importing
module.
o configure script
Disabled C and Java APIs until we figure out what we want to do
with them.
o OCaml API examples
Aligned with new processing model
October 23, 2007 - Jerome
o Unicode:
- Added support to change the location of Unicode character maps
through an environment variables.
October 16, 2007 - Mary [DXQ]
o Typing_expr:
Added default typing rules for update expressions so that
sub-expressions are also typed.
o Conf.mlp:
XQueryP is containted in DXQ: Fixed is_xqueryp() to account for
inclusion.
o Narada:
Initialized global variables to be non-empty, to avoid this bug:
[TODO : There is a nasty stack overflow bug in Subtyping_gluskov.includes:
Internal Error: Subtyping_gluskov.includes
small = element route of type xs:untyped, text?, element route of type xs:untyped (min 0) (max 0)
big = attribute * of type, (...rest of item()*...)
]
***** Tagged with galax-0-7-10 *****
October 15, 2007 - Mary
o Release:
- Set config/Makefile.galax RELEASE number to 0.7.10
Should this be 1.0...finally?!
October 15, 2007 - Mary [DXQ]
o Added two new constructs to DXQ: boxing an expression in a closure
and evaluating a boxed closure. This expression:
for server S box Expr
constructs a closure for Expr in the context of server
implementation S. The closure is an XML tree. This expression:
eval box Expr
unboxes the closure in Expr and evaluates the closure. A
rough definition of at-server-do (similarly, for-server-return) in terms
of box and eval:
at server S do E
===
let $v := for server S box E return
at server S do { eval box $v }
Semantics of these constructs still a bit fuzzy.
o Implementation required changes all the way from parser to code
selection and plan serialization.
October 10, 2007 - Jerome
o Join detection:
- Disabled rewriting of "some" into "let" to facilitate join
detection in a few specific cases (affects q10 in XMark).
- Changed how XMark query 10 is written (manual inlining of two
variables) to avoid issues with independance checking
interacting with optimization.
September 20, 2007 - Jerome
o Location hints:
- Fixed schema_import.mlp to use the new location hint calls.
September 20, 2007 - Jerome
** Please run configure again due to changes to detect Camomile's version **
o Galax Compilation:
- Fixes to ./configure to support camomile's version.
- Upgraded to Ocaml 3.10
(changes in compilation due to new camlp4)
- Added support for Camomile 0.7.* on top of Camomile 0.6.
(changes due to new library names)
- Now forcing use of Netsys, coming with latest ocamlnet.
o Join optimization:
- Another fix to the compiler, to properly clean-up selec
clause for join detection.
Sept 25, 2007 - Mary [DXQ]
o Grammar + Xquery_ast/Xquery_core_ast
- Added optional "implements URI [at Expr]" clause to module declaration:
"module" "namespace" NCNAME "=" URI ["implements" URI ["at" Expr]];
- GLXTS : Galax Test Suite
Added "Interfaces" test group for testing interfaces & modules
o Processing_context
- Location hints are completely managed in this module
- Now distinguish between interface, module and schema location
hints.
Sept 19, 2007 - Mary [DXQ]
o Grammar + Xquery_ast/Xquery_core_ast
- Added global server declaration to prolog:
"declare server NCNAME implements NCNAME at Expr;"
aligns with :
"let server NCNAME implement NCNAME at Expr return Expr"
It doesn't match other declarations that define namespaces:
e.g., "module namespace X = URI";
o Namespace_names + many normalization modules
Added support for interface and server prefixes:
- Extended Namespace_names.prefix to distinguish between interface
and server prefixes.
(Pre-requisite to implementing function shipping correctly.)
- Fixed scoping of declare/let-server prefixes and added static
checks that server-functions are actually defined in
corresponding interface.
Open questions/TODO
~~~~~~~~~~~~~~~~~~~
x Should globally declared server in a module be imported into
importing module? Right now, it's not, but it probably should
be.
x Norm_ident_top/expr are incomplete vis a vis declare-server and
let-server.
o DXQ Examples
Use new declare-server syntax
o General clean-up of Web GUI
Webgui:
- Flashplayer interface is now primary GUI
- Excised all SVG code and event reporting from HTML interface
- HTML interface only useful for quick access to servers'
programs, debug logs, and sending queries
- Still not very clean code, but there's a lot less to grapple
with
September 15, 2007 - Jerome
o Streaming:
- Disabled stream inside tuple fields because of some serious
problem with the streaming analysis...
September 13, 2007 - Jerome
o Compilation:
- Fixed bug in the compilation of where clauses, affecting some
queries with conjunctive/disjunctive predicates.
o Processing model:
- Added a debug option for the compiler.
o Namespaces:
- Fixed expected results for Usecase NS, and regression tests.
September 12, 2007 - Mary
o General clean-up of Web GUI
Webgui:
- Flashplayer interface is now primary GUI
- Excised all SVG code and event reporting from HTML interface
- HTML interface only useful for quick access to servers'
programs, debug logs, and sending queries
- Still not very clean code, but there's a lot less to grapple
with
September 10, 2007 - Mary
o General clean-up of DXQ server code
Galax_server_util:
- Contains server utility functions shared by Galax_server,
Galaxd, Webgui: server logging, signatures for server functions,
etc.
Galax_server:
- Consolidated GADS of replicated code:
queries from peers, queries from GUIs, error handling
- Defines HTTP/TCP and UDP server functions
- Builtin DXQ functions except those depending on
Thread/Mutex/Condition modules
- All calls to Browser/GUI isolated here
Galaxd:
- Thread server definition and definitions of thread primitives
exposed as builtin DXQ functions.
- Mainline for server start-up: reads directories, parses files,
etc., but does not handle query evaluation or call GUI. All
query evaluation and GUI I/O in Galax_server.
September 7, 2007 - Mary
(Warning: NS,SGML,XMP usecases currently failing regression)
o General clean-up of HTTP code
Http :
All HTTP functions (client-side, server-side, and rpc-like) are
now in http.ml. This module is in a "hybrid" state: the HTTP
get function is implemented using Http_client; all others are
implemented using home-grown HTTP request code.
Client-side functions only return HTTP message payloads (no
status or headers) and an raise exception if any status other
than 200/"OK" is received.
Galax_http :
Is replaced by Galax_url, which only handles URL decoding and
user-installed schemes.
September 4, 2007 - Nicola
o added a new function, glx:http-get-request() that (temporarily)
implements HTTP get calls with full HTTP/1.1 features (using Netclient),
until we fix and unify the HTTP support.
August 30, 2007 - Jerome
o Namespaces:
- Added a couple of optimizations to the namespace resolution
process.
- Now avoiding serialization of namespace bindings that are
already in scope.
August 29, 2007 - Nicola
o Workflows:
- Added support for HTML forms.
August 27, 2007 - Jerome
o XQueryP:
- Removed obsolete while normalization code.
August 27, 2007 - Jerome
o XQueryP:
- Fixed normalization of already normalized expressions with while
loops.
August 27, 2007 - Jerome
** NOTE: Complete re-implementation of while loops in XQueryP. It
has only been tested with simple kinds of while loops and
Narada. Please report any problem. **
o XQueryP:
- Full re-implementation of while loops. Now preserved as such all
the way down to the algebra. This fixes problems with variable
scoping, and (seems to) improve performances.
- Added proper checks in the parser for some of the XQueryP
expressions (while, letvar, set).
- Fixed the core pretty-printer for: while,letvar,set,imperseq
expressions.
August 23, 2007 - Jerome
o Join support:
- Re-enabled support for conjunctive normal form of predicates
during compilation of where clauses, needed to support proper
hash/sort-join detection. [Likely disabled by mistake]
August 23, 2007 - Jerome
o Rewritings:
- Fixed bug in inlining inside the fn:error() function.
o Updates:
- (Somewhat) improved performances for insert operations. Most
significant for "insert into" or "insert as first into".
** Note: insert into now behaves as insert as first!! Please use
explicit location to override that behavior.
August 21, 2007 - Jerome
o Testing:
- Updated the reference for the test results.
August 21, 2007 - Jerome
Feature Galax
Minimal Conformance 14555 / 69 / 14637 (99.4%)
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 32 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
o Oops:
- Guarded printing of table materialization size by proper debug
flag.
o Namespaces:
- Fixed bug in the fn:in-scope-prefixes() function.
o XQueryP:
- Added support for multiple declarations in blocks.
In the style of: declare $x := 1, $y := 2;
o Testing:
- Re-generated expected plans for the Galax test suite, aligning
with the current compiler.
August 21, 2007 - Jerome
o Processing model:
- Fixed issue with compilation of main modules in the context of
the standard module. (semi-hackish)
August 17, 2007 - Jerome
o Testing:
- Cleaned up some dead-wood code in test_core.
o Updates:
- Propagated several bug fixes in the update usecases.
o DXQ:
- Fixed namespace issue related to I/O of query plans in XML.
August 17, 2007 - Jerome
o Processing model:
- Added call to compile a statement into a logical plan.
August 17, 2007 - Jerome
Feature Galax
Minimal Conformance 14535 / 89 / 14637 (99.3%)
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 0 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
*** WARNING ***
This commit includes grammar changes to the update feature. This
implements the new W3C grammar for updates. Users code is affected
and should be modified accordingly.
Here is a summary of the changes:
do delete Expr ==> delete node Expr
or delete nodes Expr
do insert Expr.. ==> insert node Expr..
or insert nodes Expr..
do rename Expr.. ==> rename node Expr..
do replace Expr.. ==> replace node Expr...
do replace value of Expr.. ==> replace value of node Expr...
transform copy $x := Expr.. ==> copy $x := Expr..
*** WARNING ***
o Testing:
- Fixed text comparison in the test harness to be equivalent to
fragment comparison.
- Precompiling the queries producing the test results, should lead
to major improvement in running time for the test harness.
o Updates:
- Implemented the new update grammar. (See changes above).
- Reflected new update grammar in usecases and dxq code in
./examples directory.
o Pretty-printer:
- Fixed pretty-printing of interface files, now printing
function signatures properly. [For Nicola]
- Fixed pretty-printing of updates, following new grammar as well
as fixing bugs in printing of core updates.
o Namespaces support:
*** Still more work needed -- Should be functional though ***
- Pretty major re-implementation of namespace propagation in
constructed elements. Notably properly implements in-scope namespaces.
- Fixed lurking bug in namespaces for the produced test results.
- Fixed the NS usecase to produce and check against the correct
results (finally...).
o Processing model:
- Added data structures for compilation to algebraic plans,
without doing code-selection. Still more work needed.
August 15, 2007 - Michael
o Galapi:
- Added validate_document Caml API function
o Ast_printer:
- Print_type_core's output should now be parseable as an XQuery type
o Ast_walker:
- Added fold_over_cxtype
o Config:
- Combiner the printer and walker in Makefile.galax so allow for
Print_type_core's use of fold_over_cxtype
o Datamodel:
- Fixed comment
August 9, 2007 - Jerome
o XQueryX:
- Added support for module interfaces in xqueryx2xquery.
o Interfaces:
- Fixed pretty-printing of module interfaces.
o Galax Compilation:
- Added missing dependencies for some target executables to the Galax
library.
August 9, 2007 - Mary
o Galaxd:
Fixed bug that snuck in when added support for async calls to self
to use TCP
August 8, 2007 - Mary
o Planio : Added planio serialization for let-server-implements and
at-server-do expressions so that they can be shipped as remote
expressions.
Static scoping of function calls is still not quite right.
August 7, 2007 - Mary
o Galaxd
- Fixed bug that did not handle asynchronous calls to the local
server (aka "self") correctly.
NB: In the process of consolidating and cleaning up code in Galaxd,
Galax_server, Http, and Webgui.
August 3, 2007 - Jerome
o XQueryX:
- Added support for library modules in xqueryx2xquery.
- Added support for batch processing of modules in xqueryx2xquery.
Usage: xqueryx2xquery -batch q1.xqx ... qn.xqx
Produces: a set of files: q1.xq ... qn.xq
- Replaced XQuery parser by XML parser in xqueryx2xquery.
August 3, 2007 - Nicola
o Added a new built-in function, glx:doc-of-string() for
parsing a string into an XML document
o Modified glx:http-request() to return only the content
of the message, without headers.
August 2, 2007 - Nicola
o Added a new built-in function: glx:http-request() for
sending a generic HTTP request
o Enabled zerod to send the content of the HTTP message to
galaxd.
August 1, 2007 - Jerome
o Normalization:
- Resolved inconsistency when dealing with schema import between
Norm_ident_top and Norm_top.
o Rewriting:
- Properly hooked-up rewriting support for the XQuery Prolog.
August 1, 2007 - Mary
o Code_execute (See July 13, 2007)
- Sigh. Re-enabled optimization of Execute expressions to
local server, which simply evaluate the remote expression
locally. Evaluating closure in place and exporting/importing
closure should be absolutely equivalent, but they are not
behaving as such:
Willow example throws dynamic type errors when optimization is
enabled; Narada doesn't run when optimization is
disabled. Gotta figure this one out.
August 1, 2007 - Jerome
o Toplevel:
- Added flag to turn warnings on/off ('-print-warnings').
August 1, 2007 - Jerome
o Rewriting:
- Started cleaning up rewriting support for the XQuery Prolog.
o XQueryX:
- Made direct embedding of XQueryX elements in queries an option
(off by default). This restores the conformant behavior of the
processor in the presence of those elements.
You can turn the behavior back by using '-embed-xqueryx on'.
August 1, 2007 - Jerome
o XQueryP: Fixed bug in syntax of while expression.
******************************************************
WARNING: while expr return ... is no longer supported.
You have to write: while (expr) return expr
******************************************************
o XQuery: Added missing modules! Ugh too...
Aug 1, 2007 - Mary
o schema/schema_import.mlp : incorrectly updated the generated file
schema_import.ml, then put it back in CVS. Ugh.
removed schema_import.ml from CVS, again.
August 1, 2007 - Jerome
o XQueryX: First-cut support for XQueryX with trivial embedding
in Galax. It supports the following features:
(1) Compiling XQueryX to XQuery using a command line tool called
xqueryx2xquery.
(2) Running XQueryX with galax-run with the flag '-syntax
xqueryx'.
(3) Embedding XQueryX expressions directly within XQuery.
(1) and (2) work on whole modules, while (3) only works with
expressions since it has to be integrated with the rest of the
grammar.
o Processing model:
- Fixed ugly bug in the way parse handlers were built. Now
properly taking configuration into account.
August 1, 2007 - Mary
o XQuery Test Suite Modules Group
- Normalization : Numerous changes to pass XQTS Modules group
- Location hints: schemata, modules and interfaces may have
multiple associated location hints.
Their meaning for modules and interfaces , i.e., alternative
locations or locations of multiple fragments, is
implementation-defined. However, the XQTS *requires* that they
mean locations of multiple fragments, which are then
concatenated during normalization.
- Processing_context: Added flag indicating whether to merge
module fragments from multiple locations. false, by default.
- regress/testconfig-tmpl.xml : added Modules group
o DXQ examples :
- Align with new module requirements
July 31, 2007 - Jerome
o Parsing:
- Fixed another lurking bug in the lexing of sequence types,
transitioning to the wrong state... (Was tripped by e.g.,
instance of or typeswitch inside a constructor).
[Replaced old hack by better working new hack...sigh
Queries to test:
<a>{1 instance of item()}</a>
<a>{1 instance of item()*}</a>
<a>{1 instance of item()(::)*}</a>
every $a as item()* in (1, 2), $b as item()* in $a satisfies $b]
o Prolog:
- Fixed another lurking bug in cyclic variable dependency
checking (not clearing up the previous variable table in
parallel branches of the dependency graph).
o XQueryX:
- Started to prepare support for Trivial Embedding. Added hook in
normalization.
July 27, 2007 - Nicola
o Zero Daemon: Moved the logic for dispatching messages to DXQ
functions from the daemon into a special function called
dispatch() that is to be constructed in each module. The
namespace prefix of dispatch() is passed as a command-line argument
to zerod.
July 24, 2007 - Nicola
o Zero Daemon: Implemented the full protocol between the proxy
and the DXQ workflow server, including management of newly
enabled activities, except for the case of "pick" and
"while" activities.
July 21, 2007 - Nicola
o Workflows:
First version of an HTTP server providing an interface for
ProjectZero workflows and acting as proxy towards the DXQ
server running the workflow script.
The current version does not support yet receive activities
that are not enabled from the beginning.
July 20, 2007 - Jerome
o Prolog:
- Fixed bug in cyclic variable dependency checking (not handling
multiple occurrences of the same dependence).
July 19, 2007 - Mary & Trevor [DXQ]
o Willow: added Willow:replace_attributes() function to work-around
replace-node bug in Galax
July 13, 2007 - Mary & Trevor [DXQ]
o Willow : kind of, sort of working
o DXQ:
- Added support for conditional variables.
July 18, 2007 - Jerome
Feature Galax
Minimal Conformance 14528 / 96 / 14637 (99.3%)
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 0 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
o WSDL:
- Removing wsdl_load.ml at cleanup-time, since it's being
generated.
o Prolog:
- Added check for cyclic definitions of global variable in
modules.
o Testing:
- Added group testing for the XQuery Appendices.
July 18, 2007 - Nicola
o WSDL support: changed AST creation of attributes to always use
EText constructors
July 13, 2007 - Mary
o Xquery_algebra_ast.mli + all files that depends on Algebra AST
- Changes names of AST nodes for imported variables & functions.
Conflated interfaces with imported
o Changed Pervasives _back_ to an XQuery module from an interface,
because it really is a module whose functions are built-in.
Sorry for churn on this.
- Removed stdlib/pervasive.xqi
- Added glx:string_of_item
o Planio:
- Fixed bug in parsing of ElementKind and AttributeKind
o Code_execute:
- Temporarily disabled optimization of Execute expressions to
local server, which simply evaluate the remote expression
locally, because there is an insidious bug when its called.
o Parse_xquery:
- Changed parsing of interfaces so that variables and functions
are correctly tagged as coming from interfaces. Previously,
did this with an ugly hack in normalization.
o Galaxd & Galax_server:
- Added exception-handler argument to tcp_server and udp_server
so that internal errors and async errors can be reported to the
Gui.
July 12, 2007 - Nicola
o Normalization of XQueryP functions: Functions with side effects
need to be annotated with the "updating" flag. The compiler was
checking this annotation only for XQuery! programs, but not for
XQueryP. I corrected it.
July 10, 2007 - Jerome
o Pretty-printer:
- Fixed pretty-printer for blocks inside function declarations.
- Fixed pretty-printer for fixed attributes in elements! [See
Nicola's thread]
July 6, 2007 - Jerome
o DXQ:
- Fixed bug in variable access analysis not taking the variable
in the [from server ... at server ...] expressions into
account.
o Optimization:
- Turned variable inlining on by default.
July 5, 2007 - Mary [DXQ]
o Factored dxq "utility" functions in glx: namespace into
examples/dxq/dxq.xqi with new namespace dxq:
Need to update DNS and Narada to use this module. They won't work
until updated.
o Changed Galaxd to implement dxq: functions
o Added some bit-manipulation functions
o Worked on Willow definition
July 5, 2007 - Nicola
o WSDL: fixed serialization of WSDL elements and attributes
(there were extra quotes and curly braces)
July 5, 2007 - Jerome
o Normalization:
- Fixed normalization of function calls whose expected type is
xs:anyURI (wrongly casting to xs:string).
o Optimization:
- Added clean-up optimization rule for inverse MapFrom/MapTo:
Map{#x}(Map{[x:ID]}(Op)) == Op
June 30, 2007 - Mary
o Modules: Fixed bugs in normalization.
- References to functions and variables in an imported module were
normalized as references to funcs/vars in an imported interface,
which wraps them in DXQ let-server expressions under the
assumption that they are remote references.
Need to distinguish between these references in Core but
subsequent phases can/do treat them equivalently.
- Extraction of a module's interface neglected to include
namespace declarations.
June 28, 2007 - Nicola
o WSDL: Updated the WSDL parser to make it work again with the
latest changes in Galax.
o Removed wsdl_load.ml from the repository, as it is supposed to
be generated from wsdl_load.mlp
June 7, 2007 - Mary [DXQ]
o WebGUI: Simulated network delays were not being injected into UDP
messages. Now they are.
o Galax_server: returns XML results in HTTP message with xhtml+xml
header.
o Galaxd: latencies/topology file are now loaded from simulation
directory.
o Narada example: added simple multicast and unicast messages.
June 6, 2007 - Mary [DXQ]
o Lots of last minutes changes
o WebGui : Yet another logging bug
June 5, 2007 - Mary [DXQ]
o WebGui : Added labels to neighbor edges; tweeked DNS example
May 30, 2007 - Mary [DXQ]
o WebGUI
- Fixed bug that caused clock skew between webgui and gui.swf.
May 29, 2007 - Mary [DXQ]
o DNS example : coded up scenarios for live demo
o WebGUI logging
At start-up, webgui creates directory $TMPDIR/webgui-<processid>
and writes all logs into this directory.
webgui.log contains complete playback log to be run by
tracegui.swf.
Content of each message is written to a file with name:
<clock-tick>-<source>-<target>.msg
May 29, 2007 - Mary [DXQ]
o Implemented Flashplayer/WebGUI messages:
- Display program
- Broadcast/unicast query
- Added "-msg true" option to enable reporting of message content
to Flashplayer, which are displayed when player is paused and
"Details" button is clicked.
[By default, messages are written to files in directory
/tmp/webgui-<processid>/ and read on demand when "Details"
button is clicked in Flashplayer (still working on this feature).]
- Fixed start-up and timing bugs: nodes now appear on start-up and
messages appear "on time".
May 25, 2007 - Mary [DXQ]
o Temporary bug fix : In galaxd, allow_streamed_tuple_fields is
false, because calls to the built-in glx:gui-* functions are
failing when streaming is enabled. Don't know why.
o Variety of changes to WebGui to handle messages from flashplayer
May 23, 2007 - Jerome
Grammar changes summary:
declare function f { { declare $x ... } };
==> declare function f { declare $x ... };
let server ... return { Expr }
==> let server ... return Expr
from server T return { Expr }
==> from server T return Expr
at server T do { Expr }
==> at server T do Expr
o XQueryP/DXQ:
- Fixed bug in normalization of blocks, not registering variables
declarations properly.
- Fixed parser for function declarations. Now using directly a
block instead of requiring extra curly braces.
- Fixed issue with parsing of DXQ expressions. Removed unnecessary
curly braces.
- Fixed issue with lexing state when parsing DXQ expressions
inside constructors.
- Fixed parsing precedence conflict for 'at server' expression.
o Optimization cleanup:
- Removed the '-pruning' option, unused. Pruning code is still
called from the staircase join implementation.
- Turned '-code-selection-by-physical-type' on by default, removed
the corresponding option from the command line. Removed the
corresponding old versions of code selection.
- Turned '-allow-streamed-tuple-fields' on by default.
o Code selection:
- Fixed code selection for tuple field assignment. Was doing it at
run-time instead of at compile time!!!
- Fixed type assertion support in tuple construction over lists of
nodes.
May 22, 2007 - Mary [DXQ]
o Updated Narada example with new syntax.
May 21, 2007 - Mary [DXQ]
o Implemented syntactic sugar for references to remote variables &
functions, e.g., remote function call is the same as a synchronous
call to function at the remote server.
T:foo() => from server T return { T:foo() }
- Reports an error when remote function/variable is not in the
scope of an implementation namespace.
- Updated DNS example w/ new syntactic sugar.
o TODO:
- Need real syntax for interface declarations. "external" is
overloaded: Used both for genuinely external functions and
imported functions.
- Import module/interface: exclude symbols that are not in
module/interface's namespace.
- Physical types for external and imported variables: Right now,
they are completely materialized XML values.
- Need help from Jerome on weird parsing problems with braces.
o APIS:
- examples/caml_api/test.ml
- C or Java APIs
May 18, 2007 - Mary [DXQ]
o Implemented new DXQ syntax (note curly braces!)
let server NCName_1 implement NCName_2 at Expr_1 return { Expr_2 }
from server NCName return { Expr }
at server NCName do { Expr }
o Migrated DXQ programs in examples/dxq/test and examples/dxq/dns
to use new syntax.
- Working on Narada example
May 16, 2007 - Mary
MODULES and INTERFACES
*** PLEASE READ THE WHOLE MESSAGE ***
o Deep changes to support separate module interfaces and module
implementations.
- Compilation/evaluation now occur within context of a "compiled
program". (In new module code_selection/Compiled_program_units)
A compiled program consists of imported module interfaces,
imported library modules, and an optional main module.
- All program units (statements,prologs,modules) are compiled in
context of a compiled_program unit.
- New pre-processing phase (before normalization), computes
transitive closure of imported library modules. Used to
populate compiled_program unit.
- Recursive module imports (as per standard) are prohibited.
o Changes to ASTs:
We distinguish between "external" functions/vars (which are
defined in external programming environment) from "imported"
functions/vars (which are defined in imported XQuery modules)
New kinds of declarations:
Xquery_ast : EFunctionInterface and EVarInterface
Xquery_core_ast : CEFunctionInterface and CEVarInterface
Xquery_algebra_ast : AOEFunctionInterface and AOEVarDeclInterface
o Importing interfaces and modules
Module interfaces are imported during normalization. Variable
and function declarations in the Core rep of the imported
interface are merged into the Core rep of the importing module.
If a module does not have an interface, an interface is created
for it during the pre-processing stage.
o New interface stdlib/pervasive.xqi replaces stdlib/pervasive.xq
- Removed stdlib/pervasive.xq
- NB: new file suffix ".xqi" for module interfaces.
o Code selection
References to imported variables and functions are resolved
during code selection of the importing module.
The code_selection_context for a module points to the
code_selection_contexts of the modules that it imports to resolve
references to imported variables/functions.
o What works:
- Usecase, XQuery testsuite, and Galax regressions all pass
o What doesn't work:
- examples/caml_api/test.ml
- C or Java APIs
- Any DXQ program
May 8, 2007 - Mary
o TODO: Change pervasive.xq to an interface and don't give it
special treatment in procmod_compiler.
May 2, 2007 - Mary
Changes to prepare for separate compilation of modules:
o Processing_context:
- processing_context now contains STATIC context for
PROGRAM unit, i.e., configuration options and values.
- module_processing_context contains STATIC context for
MODULE unit & is contained in norm_context.
name_generators moved here from processing_context.
o Algebra_context:
- algebra_context contains DYNAMIC context for PROGRAM unit.
alive_documents moved here from processing_context.
April 25, 2007 - Jerome
o Parsing:
- Replaced "declare" "server" token by "let" "server" token.
April 23, 2007 - Mary [DXQ]
o Narada example : Got rid of workaround for syntax bug
April 23, 2007 - Jerome
o Parsing:
- Added missing "implements" token for DXQ.
April 23, 2007 - Jerome
o Parsing:
- Fixed bug in XQueryP parser. Lexing states for opening blocks
not transitioned properly.
- Added DXQ tokens in the lexer.
April 20, 2007 - Mary [DXQ]
o Narada example : workaround for syntax bug
April 10, 2007 - Jerome
o Parsing:
- Fixed lexing transition states for updates and XQueryP
tokens. Bug only showing up when popping the state for the curly
braces in direct constructors. The new parser has been checked
against the ULTF usecases and Nicola's bug example. [Bug
reported by Nicola]
April 9, 2007 - Mary [DXQ]
o Webgui fix
o DNS : implementing a variety of resolution algorithms
April 9, 2007 - Mary [DXQ]
o Changed format of Webgui output to XML
March 21, 2007 - Mary
o Galax_server:
- Removed log of query-response size that was growing without
bound!
- Drip, drip, drip: other small memory leaks abound...
March 18, 2007 - Mary
o Evalution_expr
- Fixed two long-standing problems in evaluation of tail-recursive
functions, resulting from compilation of XQuery while loop:
* Slow growing memory leak in O'Caml heap due to recursive
evaluator in algebra_execute_aux not being tail recursive.
* Unbounded growth of O'Caml stack due to Galax evaluator not
"unrolling" tail recursive calls to the correct Galax stack
frame.
***NOTO BENE***
Seemingly innocent changes to the core recursive evaluator in
algebra_execute_aux can cause the O'Caml compiler to yield a
*non-tail-recursive* function.
The code is well documented, but DO NOT CHANGE this code without
consulting Mary or Jerome first.
o Added glx:livewords()
- Function executes an O'Caml major
collection then returns number of live words in heap. Useful for
debugging, so I left it in.
March 9, 2007 - Mary
o AST fold operators
- Changes Ast_walker_fold.compute_cexpr to Ast_walker_fold.fold_over_cexpr
- Added Optimization_walker_fold.fold_over_algop
- TODO:
Define Optimization_judge.{has_side_effect_internal,has_non_trivial_snap_subexpr,
subexpr_has_side_effect,contains_update} all in terms of Optimization_walker.fold_over_algop.
o Datamodel TODO:
- Noted recursive functions in Cursor.ml that are not *tail
recursive*. Must be fixed.
March 9, 2007 - Mary (DXQ)
o Code_execute
Added "label" to remote query (name of first user-defined function
called in plan, which corresponds to "message" name) to report to
Webgui.
o Webgui
Added "-log [false/true]" option to log every message in
Javascript Object Notation (JSON) for flash-movie generation.
March 8, 2007 - Mary (DXQ)
o More changes to Galax_server and Webgui.
Added -drop option for Galax_server and/or Webgui to drop
non-status messages (i.e., asynchronous inter-server messages),
but to record/show status messages sent from application.
March 2, 2007 - Mary (DXQ)
o Playing with graph drawing
March 1, 2007 - Mary (DXQ)
o Galaxd & GUI
- XQuery GUI report functions: changed names to glx:gui-*
- Added new GuiNode message "g" to print a graph
- Added glx:gui-status, which takes graph of
(source, target, label) edges to print. XML type:
element graph {
element edge {
attribute s of simple type xs:string,
attribute t of simple type xs:string,
attribute l of simple type xs:string
}* }
o Webgui
Added "-drop" option to drop all messages and node-reports except
"!" (user request), "x" (error), and "g" (graph status).
o Top_util.InternalQuery
Three modules apply internal queries : Test_core, Galaxd, Webgui.
Moved common code for evaluating internal queries (e.g., setting
up context, boxing/unboxing XQuery values, etc.) into
Top_util.InternalQuery.
March 1, 2007 - Mary (DXQ)
o Galaxd:
Added "-t" option to galaxd to load file containing pair-wise
latencies between servers. See
examples/dxq/narada/latencies.xml.
Useful for approximating network delays. Right now, just
latencies. Could be generalized to network topology.
February 28, 2007 - Mary (DXQ)
o Clean-up of Galax Server code
- New module Galax_server_util:
Factorized functionality shared by Galax_server, Galaxd, and
Webgui into Galax_server_util. Contains:
* Server UDP defaults
* Server-name management (maps from virtual to actual names)
* Shared GUI utilities
- Moved file and directory management utilities into Gmisc.
- Moved DXQ options into Top_options.
- Processing_context contains "short" hostname and port of server.
February 21, 2007 - Jerome
o Options:
- Moved the shebang options to some more logical places in the
options list.
- Removed option for streamed variable, now always allowing
potential streaming for variables.
February 21, 2007 - Nicola
o Rewriting:
- Added rewriting rule for removing CECopy from CEInsert when
source expr. is an elem. constr. (It was previously done
at normalization)
February 12, 2007 - Jerome
o Testing:
- Fixed small bug in Makefile.
February 12, 2007 - Jerome
o Code clean up:
- Removed obsolete modules: Factorize_update, Factorize_util.
o Galax Test Suite:
- Added a first version of the Galax test suite in the CVS
repository. This currently contains a few tests for: plan
stability of the use cases, and join detection tests.
o Testing:
- Finalized support for comparing query plans in the test
harness.
- Added an option to automatically generate expected results in
case the file for that expected result is missing.
Usage: [galax-test -generate-results] to generate results.
o Toplevel:
- Added three plan conversion utilities for convenience.
[xquery2plan] generates a plan from an XQuery. **
[xquery2xmlplan] generates an XML plan from an XQuery.
[xmlplan2plan] generates a plan from an XML plan.
**you can turn optimization on by writing -optimization on.
o Updates/Parsing:
- Removed 'snap delete' etc. variants for the update
operations. Fixing shift/reduce conflicts. (e.g., WITH could
parse as either a do replace or a snap replace).
The changes are:
MapFromItem[$x]{P1}(P2) --> Map{P1}(P2) where occurrence of $x
in P1 is turned into ID.
MapToItem{P1}(P2) --> Map{P1}(P2)
INPUT --> ID
snap { P } --> Snap(P), same for Delete,Replace,Insert,Rename.
o Pretty printer:
- Fixed the algebraic pretty-printer to align with the current
formalization of the algebra [Ghelli,Onose,Rose,Simeon].
o Compiler:
- Consolidated name creation (variables, tuple fields, etc.)
throughout the compiler. This is now handled by a proper module
[Namespace_generate]. This is important notably for the
regression tests to ensure stability of variable names accross
separate sets of compilation.
February 11, 2007 - Nicola
o Rewriting:
- Added tests for side effects in rewriting rules
that may change the semantics of the query when
triggered on expressions containing side effects.
***** Tagged with galax-0-7-2 *****
February 5, 2007 - Mary
o Release:
- Set config/Makefile.galax RELEASE number to 0.7.2
February 1, 2007 - Jerome
o Compilation:
- Fixed issues after the merge [not compiling!!].
February 1, 2007 - Jerome
o Code cleanup:
- Cleaned up all the source file headers. Added module
descriptions when missing, as well as CVS Id.
- Removed obsolete modules: Optimization_rules_treepattern_old,
Factorize_side_effect.
o AST Walker:
- Added support for a generic fold operation on the AST (useful
to compute a boolean property on the AST for instance).
o Normalization:
- Small fix to the normalization of comparisons to re-enable join
detection, not using let bindings for the comparator
anymore. [hack]
o Rewriting:
- Added a judgment to check for side-effects, removed
corresponding obsolete judgment in Factorization.
- Moved the snap removal rule from optimization to rewriting,
cleaning up the plans as early as possible.
February 1, 2007 - Mary
o ***Warning: You need to re-run ./configure before compiling***
Changes to configure script, config/Makefile.galax
to align with O'Caml 3.09.3.
Added conditional linking of Netsys library.
In preparation for godi-galax package release.
January 30, 2007 - Mary [DXQ]
o Execute operator
- Removed hack in which default port was always "0".
Port is now computed dynamically from host-port argument, or if
port is missing, is determined by Galax_server.
o Narada example
- Fixed insidious bug in which sequence numbers were being
compared *lexicographically* because XML values are treated as
untyped strings after export then load. Shows what happens when
you don't have a semantics for export/load of typed values.
- Added N:init() function so that nodes can be restarted with
initial state without having to restart Galaxd processes.
- Added individual "loop" functions so that each message-loop can be
debugged in isolation of all others; argument is delay between
each message.
January 30, 2007 - Jerome
Current testing results on XQTS 1.0.2:
Feature Galax
Minimal Conformance 14514 / 110 / 14637 (99.1%)
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 0 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
o Normalization:
- Now properly detecting mal-formed option declarations
(unresolved prefixes notably).
o Optimizer:
- Fixed bug in selection pushdown rule, bogus when pushing down
over a concatenation (expecting a single tuple). Bug triggered
when variable inlining is on.
o Namespace declarations:
- Fixed bug: now handling undeclaration of non-declared prefixes
properly.
o Parser:
- Fixed bug in lexing of typeswitch case branches.
- Fixed wrong transition for DECLAREVALUEINDEX and DECLARENAMEINDEX.
o Value index support:
- Fixed code selection to first perform code selection for global
variables before indices, allowing indices to access global
variables.
- Turned glx:keyref to a standard built-in Galax function,
providing direct support for static typing, and cleaning up the
corresponding code.
January 28, 2007 - Philippe
o Fixed SBDO rewrites
January 26, 2007 - Philippe
o Some more changes to sbdo optimization.
Sbdo optimization is in flux, moving currently moving to enable
the optimization over more than just tree patterns. This means
propagating the state of the automaton from one tree pattern to
the other.
January 26, 2007 - Philippe
o Fixed treejoin rewrite rule to clean up some more projects
o Fixed label setting on Attribute SAX events, so that
streaming aggregation functions return the correct result
o Fixed bug in SBDO rewriting (nested tree patterns should pass on their state)
January 25, 2007 - Trevor
o Added a broadcast action to the gui
o Added filtering by regexp and nodes
January 24, 2007 - Mary [DXQ]
o Narada example: added routing tables
January 24, 2007 - Mary
o Normalization
Changed normalization of expressions so that newly created
functions (e.g., for while-loops) are added to global context
correctly. Got rid of a lot of unused, hackish code.
o Planio
Added Dep="No|One|Two|Many", Ind="No|One|Two|Many" attributes to
operator elements to permit easier parsing.
January 23, 2007 - Mary
o Changes to support tail-recursive function calls.
Code_user_defined_fn:
Code selection for user-defined function calls now returns code
for (default) non-tail-recursive calls and entry and exit code
for tail-recursive calls.
Evaluation_expr:
Interpreter changed to detect tail-recursive calls and evaluate
them within the same stack frame.
Status:
Only works for XQueryP "while" loops, which are compiled into
self-tail-recursive calls. Need analysis to detect arbitrary
tail-recursive calls.
o Webgui - better error messages
January 18, 2007 - Trevor
o Tweaked the narada cluster example for a smaller network.
January 18, 2007 - Trevor
o Added options to gui that will let us run multiple instances on
a machine without conflict:
-port <n> Use <n> as the default port for servers
-guiport <n> Use port <n> on localhost for the gui
January 18, 2007 - Mary
o PlanIO:
- Paired down XML rep of plans to something reasonable.
TODO: Omit function signatures from serialization of Call ops
o Tail recursion:
- Modified Call operators in Core/Algebra ASTs to include tag for
tail-recursive function calls.
XQueryP while loops, compiled into tail-recursive calls, are
tagged.
- Still working on changes to interpreter to evaluate
tail-recursive XQuery function calls in O'Caml while loops
(which are tail recursive!)
o Webgui [DXQ]
- Moved XHTML pretty printing into GUI.
January 18, 2007 - Trevor
o New file to start up multixterm for cluster example
January 16, 2007 - Trevor
o GUI prints error events in red
January 12, 2007 - Trevor
o GUI can now filter out events based on type
January 11, 2007 - Mary
o Optimization_rewrite:
Modified two "Inlining" rules: singleton_product_to_concat and
singleton_map_inline to not inline independent operators that are
_updating_, i.e., have mutable state.
o DXQ Narada example : got rid of all the P2 rules, which were
not helpful.
o Pervasive: Added "updating" modifier to functions with mutable
state.
January 11, 2007 - Trevor
o Report errors on async exec to GUI.
January 11, 2007 - Mary
o Added glx:random_int which exposes O'Caml Random.int function. We
need to have a consistent way of exposing O'Caml standard library
functions.
o Started clean-up/simplification of PlanIO closures etc.
o More work on DXQ Narada example.
January 9, 2007 - Trevor
o Exposed GUI report functionality to XQuery in galaxd.
January 9, 2007 - Trevor
o Cluster testbed for Narada example.
January 9, 2007 - Trevor
o Use the same port for TCP and UDP in communications
between the servers and gui.
o Now use UDP for asynchronous plan execution between galax servers,
with plans > 16384 bytes falling back to TCP.
January 8, 2007 - Mary
- Added examples/dxq/chord directory and pseudo-code for Chord
protocol.
January 5, 2007 - Mary & Kristi
- Continued work on Narada definition. TODO: latency.
January 5, 2007 - Trevor
o Removed remaining fork() calls from GUI, so that it is completely
threaded. Added -v flag for verbose operation. Fixed a file
descriptor race bug.
o Narada example now spawns a new thread on go() instead of looping
infinitely without returning. make clean; make run needed to see
this change.
December 23, 2006 - Jerome
o Testing:
- One more step toward support for comparison of Query
plans. Still not fully functions.
o Compilation:
- Removed separate compilation of single let expressions into
AOELet, now uniformly compiling FLWORs to the tuple part of the
algebra.
- Changed AOELet to AOELetvar, which are now handled separately.
o Optimization/Rewriting:
- Fixed function inlining to handle return types properly.
- Started moving function inlining from optimization to
rewriting.
- Removed obsolete rewriting_ddo_* modules.
- Removed "Double Null Index Removal" optimization rule, both
buggy and wrong!
- Fixed several bugs in "Map item on Singeton tuple, inline"
optimization rule, ignoring the presence of type assertion in
the tuple constructor, and removing computation that may have
side effects of raising errors.
- Turned off "Combine Groups" optimization rule, wrong! (sigh...)
o Code:
- Fixed bug in NullMap operator not returning a tuple in case of
the empty sequence.
December 15, 2006 - Nicola
- fixed bug in alg_path_analysis: an incorrect # of subops. of
AOERename was assumed
- changed normalization of do-insert not to wrap the source
in a copy statement if it is an element constructor
December 13, 2006 - Jerome
Current testing results on XQTS 1.0.2:
Feature Galax
Minimal Conformance 14498 / 114 / 14637 (99.1%)
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 0 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
o Compilation:
- Added support for separate -galax-regression option to indicate
where the Galax Test Suite is installed.
- Fixed circular dependency in optimization walker/judge modules,
resulting from the latest reorg.
o Testing:
- Fixed support for multiple test units, generating distinct
files instead of overriding them. Fixed printing for multiple
test units.
- Added support for comparison of query plans.
o Updates:
- Fixed 'do rename' to properly handle xs:string and xs:untyped
values for the name expression.
o F&O:
- Fixed fn:dateTime to support empty sequence parameters.
o Pragmas:
- Now properly resolving Pragmas QNames.
- Fixed serious parsing and lexing issues with pragmas (wrong
lexical state created in some cases).
- Fixed bug, now raising an error when there is no expression.
- Added check that the pragma QName and content is separated by
at least a whitespace character.
o Parsing:
Long over-due cleanup of the lexers. This fixes two major
problems: (1) we now have keyword tables which makes for a more
easily extensible parser, and smaller lexing tables. (2) we don't
rely on long keywords anymore which means we properly implement
comments within keywords. [ Note that it's not completely true, we
still have a few long keywords hanging around, notably those with
QNames inside... This still need some work, but should get us
going. ]
- Removing numerous unused lexing rules in some of the states,
notably in the operator's state.
- Moved part of the keywords used in prolog declarations from the
operator's state to the declaration state.
- Consolidated duplicated string literals and comments lexing
rules to use the same lexer.
- Added support for simple kind of look ahead in lexing handlers.
- Added keyword tables for the operator, default, and namespace
declaration states.
- Removed (almost) all long keywords from the default,
operators, and namespace declaration state.
- Fixed bug, 'as' not recognized as a qname in the default state.
December 8, 2006 - Trevor
o Bug fix for galaxd thread exit
o GUI is now threaded too
December 8, 2006 - Trevor
o GUI changed to display asynchronous queries and jobs differently
than synchronous queries/jobs.
o Galaxd submits jobs to GUI using UDP
December 6, 2006 - Mary & Trevor
o Norm_top:
- Library modules were not normalized properly for XQueryP :
Generated functions were not included.
December 6, 2006 - Mary & Trevor
o DXQ & Optimization
ISSUE: glx:my_address() returns DXQ server state and therefore
cannot be pushed into a remote exec. Same is true for all Mutex
functions. Would labeling them as "updating", i.e., has side
effects be good enough?
We should probably have DXQ functions in their own namespace,
labeled as "updating", so the optimizer doesn't mess with them.
December 5, 2006 - Trevor
o Galaxd [DXQ]
Added external Mutex XQuery module. Interface in
examples/dxq/narada/mutex.xq. Implementations in Galaxd.
November 29, 2006 - Jerome
o Joins:
- Added pattern matching case to deal with join detection when
the query is not type-checked (i.e., with starting fn:boolean()
call in the where clause). This should enable join detectin in
the presence of side-effects -- long-standing bug for Nicola.
November 21, 2006 - Jerome
o Code cleanup:
- Removed obsolete module: Xquery_physical_algebra_ast_util
o Dynamic typing:
- Fixed bug in handling of type assertions in tuple constructors.
- Fixed bug in type assertion code for attributes.
- Fixed bug in type assertion for processing instructions with a
name.
o Testing:
- Fixed bug in test harness when handling input-URIs.
- Removed some left-over debug printings for modules.
November 13, 2006 - Nicola
o Created directory for the DXQ webdemo in
examples/dxq/webdemo
November 12, 2006 - Mary and Trevor [DXQ]
o Fixed bugs in async exec. Works but SLOWLY!
- I'm generally unhappy with the ill-defined interfaces between
Galaxd, Galax_server, and Code_execute. This needs to be
cleaned up with a focus on error handling.
November 10, 2006 - Mary and Trevor [DXQ]
o Added an asynchronous variant of exec. Uninspired syntax:
exec { Expr1 } [ Expr2 ]
In DXQ server, creates thread to eval Expr2 and immediately
returns ().
- Added EExecute, CEExecute, etc. to ASTs.
- Added AOEASyncExecute
November 7, 2006 - Mary [DXQ]
o Added a lift-execute-over-join rewrite when both branches of Join
are evaluated at same location.
o Now handle AOEExecute correctly in Compile_annotate and Cs_code_typing_top
TODO: See long list in https://yang.princeton.edu/wiki/Things%20to%20fix
HOW TO RUN DEMO: https://yang.princeton.edu/wiki/How%20to%20run%20demo
October 29, 2006 - Nicola
o Normalization: corrected normalization of transform expressions
to register their variables in the normalization context.
October 25, 2006 - Philippe
o Fixed handling of Project operators in streaming annotation
October 25, 2006 - Philippe
o Added missing entry for AOECharRef in planio
o Added missing moniker for AOEPromoteAnyString in planio
o Added a hack rule in TPNF normalization to avoid the compiler
to go in let-only FLWOR block compilation, since this
interferes with join detection (why is that anyway?)
o Added two 'robustness' rewrite rules s.t. combinations
of selects, project and tree patterns also get
picked up as joins and that projects get pushed through
outermaps in order to pick up LO-Joins
October 24, 2006 - Philippe
o Fixed a TreePattern rewrite dealing with variables wrongly
o Moved algebraic let-inlining rule to the cleaning rules
(note, once inlining is done properly at the core level,
this rule is no longer required)
o Disabled buggy type based core rewrite 'fs_untyped_to_atomic_type_rewrite'
October 24, 2006 - Philippe
o Work-around for the need for re-typing TPNF' expressions
October 23, 2006 - Philippe
o Adding removal of redundant wrapping ddo's to TPNF normalization.
All tree patterns in XMark are now picked up.
October 22, 2006 - Philippe
o Some fixes to TPNF and ddo-optimization modules
October 22, 2006 - Philippe
o Made printing of sbdo-mode in tree patterns default
October 22, 2006 - Philippe
o Aligned the TPNF rewrite rules with the ICDE paper. We now need
only five rules, plus three Galax-specific rules to deal with
projects and MapConcats. This clean-up is a consequence of
introducing TPNF, and thus, for TTPs and streaming TreeJoins
to be picked up, factorization needs to be enabled!
o Big advantage: Tree Patterns no longer depend on the
-inline-variables option to be introduced and the interference
with join introduction is gone
o The old rewrite rules are kept (for now) in
Optimization_rules_treepattern_old
o TODO: need to make TPNF normalization more robust, especially
with respect to the other XPath axes.
o TODO: More testing
October 21, 2006 - Nicola
o Logical optimization: modified introduction of Left Outer Join
according to the latest specifications of the algebra
October 20, 2006 - Philippe
Added FLWOR decomposition to TPNF for robustness
October 20, 2006 - Philippe
The reorganization of the optimizer is not expected to cause any
trouble. All the XQTS tests pass as before. Let me know if you
run in trouble anyway.
o Created new module Optimization_walker and factored out AST walker
functionality from Optimization_rewqrite to it
o Factored out the Tree Pattern, Treejoin and Cleanup rewrites into
respectively Optimization_rules_treepattern,
Optimization_rules_treejoin and Optimization_rules_cleanup
o TODO: Lots!
- Try to factorize out most of the rules in separate modules, so
that the optimizer becomes manageable again, i.e., we should
add separate modules for the group-by and join rewrites
- Either merge Optimzation_jugde and Optimization_util or push
the functions in both to the appropriate module
o Fixed Streaming bug: attribute axis failed to test for label on
parent, giving weird results for some MemBeR benchmarks
October 17, 2006 - Philippe
o TPNF in place! Lots of bug fixes to TPNF normalization rules
o All rules have undergone some testing now and seem to do fine
October 16, 2006 - Philippe
o Removed earlier additions in ast_walker, decided to go with own
TPNF substitution algorithm, which is easier for the TPNF
fragment
o Aligned TPNF normalization with paper. More testing is needed
to ensure conformance with TR.
October 16, 2006 - Jerome
o Serialization:
- Fixed corner case issue with serialization of floating point
numbers.
October 16, 2006 - Philippe
o Adjusted select compilation to pick up conjunctions that return
CEEmpty in addition to those returning fn:false()
o Added a rename_variable function to ast_walker_rewrite
o Modified substitution in ast_walker_rewrite to deal with variable
substitution for axis calls
o Removed faulty access_onesub call for (among others) AOEProject
operators in compile_annotate that compromised streaming plans
October 13, 2006 - Mary
o Put glx:deep-distinct() back.
October 10, 2006 - Nicola
o Physical optimization:
- corrected pipeline analysis not to do double materialization
- implemented analysis for joins, but cannot be tested until
pattern matching in code_util_join is modified to accept updates
October 10, 2006 - Nicola
o Physical optimization and updates: implemented analysis of pipelining
for all operators on tables, with the exception of Joins.
***** Tagged with galax-0-6-10 *****
October 10, 2006 - Mary
o Release:
- Set config/Makefile.galax RELEASE number to 0.6.10.
October 5, 2006 - Nicola
o Logical Optimizations:
- corrected/aligned the push mapconcat through group rule
to push the MapConcat as regular MapConcat, and not as
OMapConcat
- added a rule for converting MapConcat {OMap ..} into OMapConcat
- updated compilation to detect AOEParse when the argument of
fn:doc is fs:promote-to-anystring
October 5, 2006 - Mary [DXQ]
o DXQ regressions started in examples/dxq/test/
I guess they should go under the regress directory
o Changed "exec {}{}" to take hostname:port pair, so that galax-run
can call a server directly.
o Fixed several bugs in unboxing of DXQ results.
o Hacked namespaces to include prefix-uri pairs of imported
modules.
Time to fix this and implement imported modules correctly.
October 5, 2006 - Nicola
o optimization and updates: enabled detection of left outer joins
for queries with side effects
October 4, 2006 - Mary
o planio/ cleanup
Re-organized directory to align with other directories.
Contains:
Planio_common: shared QNames, symbols
Planio_util: utility functions
Planio_physical_value: Boxing & unboxing of physical values
Planio_top: Boxing & unboxing of closures/modules/algebraic plans
TODO: Cleanup serialization of tables
October 3, 2006 - Mary
o Extricated threads from all modules except Galaxd.
Galax_server is now a functor, which takes the "kind" of server
module (Thread or Forked) as an argument.
Extended processing context to include the server function to
invoke a remote query, because it depends on the kind of
Galax_server. The "toplevel" program (galaxd) determines what
kind of server to use.
The server's query function must be available to the Execute
operator, so I extended the Processing_context to include it.
October 2, 2006 - Jerome
A few more Galax bugs fixed, which were lurking in the tests listed in
knownbugs.xml. This does not change the results for XQTS 1.0.
o Testing:
- Cleaned up and updated the known-bugs files, reported
corresponding bugs to Galax or XQTS bugzilla as appropriate.
o Galax Compilation:
- Directing ocaml compilers to not raise overridden methods
warnings.
- Cleaned up unused variables throughout the code.
o Type promotion:
- Finished implementing support for type promotion of xs:anyURI
to xs:string.
o F&O:
- Properly implementing fn:resolve-uri, notably checking for
absolute URI when necessary.
- Fixed fn:local-name-from-QName to return a value of type
xs:NCName instead of xs:string.
September 29, 2006 - Jerome
Results as submitted to W3C:
Feature Galax
Minimal Conformance 14410 / 195 / 14618
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 0 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
o Normalization:
- Finally added proper support to check variable scoping. About
time... This is used notably to check for the scope of
variables inside the prolog.
o User-defined functions:
- Re-enabled type matching on user-defined functions, mistakingly
disabled.
- Checking that functions are not in no namespace.
September 29, 2006 - Mary
o Added fn:doc* test groups
- Changed Test_core to load URIs so we can run fn:doc* test groups
o Added fn:id* test groups
- Partially implemented fn:id and fn:idref
This still needs LOTS of work but I put it in anyway.
[ Other notes: Static typing (weak or strong) of the validate {}
expression is broken.
]
Minimal Conformance 14317 / 194 / 14618
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 0 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
September 28, 2006 - Mary
Minimal Conformance 14289 / 153 / 14618
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 0 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
o Fixed fn:index-of and fn:deep-equal to correctly use the op:eq
semantics. fn:distinct-values still uses its own variant, which is
troublesome.
o Temporary fix to handle subtyping of derived types in
Subtyping_build_regexp (Line 75), but it's time to bite the bullet
and have compiled, derived types.
September 28, 2006 - Nicola
o Toplevel: added a flag -infer-independence for testing independence of
operators in the presence of updates
o Path analysis:
- added a modified field to the tuples of paths returned by the path analysis
- extended the physical annotation to contain not only the concatenated
paths of the sources, but also the returned, accessed and modified paths
for each operand
o Rewriting
- when -infer-independence is set, doing inlining of let clauses if the
return clause is a call to fn:doc
o Optimizer:
- updated the push-mapconcat-through-groupby rule to work when operands
have updates, using path analysis in the optimization_judge
September 27, 2006 - Jerome
Minimal Conformance 14210 / 169 / 14618
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 0 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
o F&O:
- Fix to the fn:abs fix!
- Fixed fn:ceiling, fn:floor, fn:round, fn:rount-half-to-even to
support optional parameters.
September 27, 2006 - Mary
o More date,time,duration fixes
o Static context checks
o Handling whitespace in QNames, hexBinary, etc.
o testconfig-tmpl.xml:
Minimal Conformance 14182 / 197 / 14618
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 0 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
September 27, 2006 - Jerome
o Prolog:
- Properly checking that the encoding declaration corresponds to
a valid encoding.
o F&O:
- Fixed fn:abs() to support optional parameters.
September 27, 2006 - Jerome
o Fixed bug in typeswitch optimization rule, implemented backward
(was removing branch when type is not subtype which is wrong as
there might be some intersection).
September 27, 2006 - Jerome
o Current status of regress/testconfig-tmpl.xml:
Minimal Conformance 14187 / 191 / 14618
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 0 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
o F&O:
- Fixed comparison operations for xs:AnyURI. Just broken...
- Fixed default-collation() function to return a string value,
consistently with its type.
- Numerous fixes to the compilation of fn:sum().
-- Added proper support for binary and unary variants.
-- Added proper typing rules.
-- Fixed several deep bugs in rewritings related to aggregate
functions.
- Fixed handling of NaN properly in fn:min, fn:max.
- Added proper min/max support for xs:string and xs:anyURI.
o Static typing:
- Fixed bug in type promotion detection when the input is has the
empty sequence type.
o Type promotion:
- Fixed several bugs in type promotion of xs:anyURI into
xs:string, from typing to rewritings.
- Fixed strange bug in type promotion for overloaded functions avg
and abs (hoping it's ok!?). See uncommented parts in the
function overloading tables norm_overloaded.ml
September 27, 2006 - Mary
o Current status of regress/testconfig-tmpl.xml:
Minimal Conformance 14151 / 227 / 14618
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 0 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
September 26, 2006 - Mary
o Current status of regress/testconfig-tmpl.xml:
Minimal Conformance 13878 / 149 / 14618
Optional Features
Schema Import Feature 0 / 0 / 174
Schema Validation Feature 0 / 0 / 25
Static Typing Feature 46 / 0 / 46
Full Axis Feature 130 / 0 / 130
Module Feature 0 / 0 / 32
Trivial XML Embedding Feature 0 / 0 / 4
September 26, 2006 - Mary
o More conformance fixes
- Overloaded functions. Default collations. URI comparison.
Lexical space for binary types, etc., etc., etc.
(Subtyping_build_regexp (Line 75) : type intersection for derived
atomic types needs to be fixed. See test K-SeqExprTreat-5
Pass 13837/14027)
September 23, 2006 - Nicola
o Algebra: removed the unnecessary AOEMaterialize operator
o Optimizer: corrected the is_singleton judgement for selections
o Code selection:
- added a "materialization" option at the top level
- this option, if set to "always", forces materialization
of tables output by the tuple operators
September 21, 2006 - Mary
o Makefile fixes
**********************************
*** You must re-run configure. ***
**********************************
September 21, 2006 - Mary
o Removed "-with-galaxd" option from configure script. Switch no
longer necessary. Makefile now compiles & links all top-level
targets appropriately: galaxd links with galax-threads.cm*a and all
other targets with galax.cm*a
Removed toplevel/top_server.ml from CVS b/c it's generated.
September 21, 2006 - Philippe
o Quick compile error fix (unclosed comments in code_fn)
September 20, 2006 - Mary
o More conformance fixes
- Boundary & error conditions for durations, timezones, etc.
13698/13876 (total 14618)
September 20, 2006 - Mary
o Conformance fixes
- Fixed lexical space of hexBinary (pairs of hex digits)
- Fixed semantics of Castable on ()
- Made unknown character encoding a warning (per XQuery spec)
- Added "declare option" to prolog. Parses but is semantic NOOP.
September 19, 2006 - Mary
o Re-enabled typeswitch rewrite rule, once again
o Datatypes et al
- Numerous changes to pass Cast/Castable conformance tests
(Total: 13486/13876)
September 19, 2006 - Philippe
o Completed the TPNF normalization phase in factorization
Use -factorization on to test it
TODO: add an extra rule to combine doc() calls for
conjunctive path expressions.
September 18, 2006 - Jerome
o Type assertions:
- Fixed some pretty-printing issues.
- Fixed variable inlining in the optimizer to check for type
assertions.
o Optimization:
- Fixed bug in join detection, not picking up when using string
equality.
o Testing:
- Fixed bug in propagation of strong-typing setup in the
test-harness.
September 15, 2006 - Jerome
o Optimization:
- Added some checks so that constructors (element,attribute, etc.)
are considered as side effect operators. This is to avoid
rewriting MapConcats into cartesian products in the case the
dependant branch constructs something. Turning those into a
product means it is evaluated only once, hence may not construct
as many nodes as expected. Consider for instance, the following
query:
(for $v1 in (1, 2, 3, 4)
let $v2 := <b/>
return ($v2))/.
eventhough $v2 does not depend on $v1, we must keep this as a
MapConcat otherwise there will be only one b element and the
path expressions '/.' will collapse them into one node, instead
of the 4 expected nodes!!
Big issue here: is that going to be too restrictive. Is that a
limited form of side effect on which better can be done?!
o F&O:
- Fixed promotion of duration types in for fn:distinct-values().
September 15, 2006 - Philippe
o Normalization: XPath annotations are now replaced by scrambling
annotations.
o Overhaul of factorization phase for TPNF
September 14, 2006 - Nicola
o Optimization & side-effects: corrected the management of the
"updating" flag for builtin functions. Factorize_side_effect
probably became obsolete.
September 14, 2006 - Nicola
o Optimization -- aligned (partially) the following rewriting rules
to the xbangalgebra draft:
- natural product rewrite (except the independence considerations)
- join rewrite
- mild group creation
September 13, 2006 - Jerome
o Website:
- Preliminary XQuery! demo available.
o Testing:
- Fixed test harness to deal with static typing tests properly.
- Changed the test harness printing to indicate group names.
- Removed the InternalVariablesWithout test group which includes a
recursive funtion definition which makes the test harness go
into an loop.
- Added support for external context items in the test harness.
- Resynchronized the expected tests file with the current results
for v1.0.
**********************************
*** You must re-run configure. ***
**********************************
September 13, 2006 - Mary
o Added "-with-galaxd" option to configure script (default without)
-with-galaxd (re)compiles all modules with threads enabled,
link with threads library, and creates galaxd.
!!NB!!: All top-level executables will be thread-enabled and
therefore *RUN SLOW*. Only use -with-galaxd if you really need it.
o Added toplevel/{top,thread,unix}_server. Makefile selects
appropriate server based on config options.
September 11, 2006 - Mary
o Added processing-model options to galax-test so we can run
StaticTyping test group (still need to change Makefile by hand)
o Aligned config/Makefile.galax-inst with config/Makefile.galax
September 6, 2006 - Mary & Chris R
o Added -lthreadsnat -lpthread to C-API link options to support
threaded Galax.
Sepember 5, 2006 - Nicola
o Fixed the looping rewriting introduced in the combine selections rule
August 30, 2006 - Nicola
o Corrected two bugs related to side effects
- functions with snapped effects should still be considered
updating.
- fixed the updating flag on the compilation of while loops.
August 18, 2006 - Trevor
o Added the web interface for galaxd.
August 18, 2006 - Nicola
o Added a modified dxq example with a DNS resolver having
a simple cache.
August 18, 2006 - Trevor
o Galaxd cleanup.
August 18, 2006 - Trevor (Distributed XQuery)
o Bug fix for threaded galax server. (Needed to
explicitly flush output on Thread.exit().)
August 18, 2006 - Nicola
o Added a glx:gettime() function that returns the current time,
in seconds. It differs from current-dateTime(), which returns
the time when the query context was built.
August 18, 2006 - Trevor (Distributed XQuery)
o The galax server is now threaded.
**********************************
*** You must re-run configure. ***
**********************************
August 17, 2006 - Jerome
o Updates:
- Fixed pretty printer for updates.
August 17, 2006 - Jerome
o Testing:
- Added cleaner diff for expected vs. actual test results using
XQuery.
***** Tagged with galax-0-6-8 *****
August 16, 2006 - Jerome
o Release:
- Set the version number to 0.6.8.
- Added 0.6.8 entries in the documentation and Web sites.
- Some minor fixes the documentation, notably updating the
contributor's list.
- Added some text for support for ULTF, XQueryP in the release
notes.
- Fixed the ns_usecase expected result to match the one generated
by Galax. Namespace handling in constructors may be fixed at
some point and result in subsequent changes.
- Fixed usecase Makefile to not set monitoring on.
o ULTF/XQuery!/XQueryP Trilogy:
- Added -language ultf option for W3C Update Facility.
- Added minimalistic tutorial in the documentation for how to run
those.
- Added examples in ./examples/extensions for each of the 3
languages.
o F&O:
- Fixed fn:matches function to not take optional second and third
arguments anymore.
August 16, 2006 - Nicola
o Added -language option to galaxd.
August 16, 2006 - Mary
o Configure script
- Sets $ocaml_home if not set by default
o Code_selection_context:
- Added enter/exit_closure_context
o Cs_code_selection_top
Galapi/galax
Procmod_compiler
Procmod_phases
Procmod_types
Cs_code_selection_top.code_selection_statement now correctly
returns updated code_selection_context. Previously, it was
dumped.
Corresponding changes in modules listed above to propagate and
return updated code_selection_context.
o Cs_code_typing_top:
type annotation of top-level expression stored as a global
annotation so available to caller.
o Cs_util_coercion:
Added missing coercion functions
o Code_binding:
Tuple fields contain physical_xml_values, not physical_values:
minor changes to support this change
o Code_execute:
Added support for shipping plans that return tables/tuple-streams
o Code_util_materialize:
Changed names of functions to reflect type of materialization,
e.g., materialize_cursor_to_dom_value_array
Many files updated to reflect name change:
code_group_order.ml
code_hash_join.ml
code_join.ml
code_nestedloop.ml
code_sort_join.ml
code_tuple.ml
o Parse_xquery.mly:
Fixed long-standing bug: EOF missing from end of library and main
modules.
o Website/demo/querycgi.ml : alignment
August 16, 2006 - Mary (DXQ)
o DNS examples:
Changed name of module interface to dns.xqi
o Optimization_dxq:
Working on DXQ opts
o Planio/*:
Added support for serializing and parsing.
***All these files need to be reorganized. They are a mess***
o Galax_server: fixed error-return XML
o Galaxd: yet another debug log bug
August 15, 2006 - Jerome
o Testing:
- Added knownbugs.xml in the dependencies for testresults.xml
- Added query file information in test results for wrongly
succeeding tests.
o Type matching:
- Added missing checks for undeclared types during type matching.
o Lexing:
- Further fix to the lexer dealing with numeric literals followed
by a qname without separating whitespace.
August 15, 2006 - Nicola
o XML Updates:
- Changed the code generation for Insert and Replace to
expand document nodes into the list of their children,
as specified by the W3C draft.
- added two examples to test these expansions, in a new
examples/xquerybang/tests folder
August 14, 2006 - Jerome
o DXQ:
- Fixed wrong pattern matching in error printing, not catching DXQ
errors.
o Binary types:
- Properly implemented xs:hexBinary and xs:base64Binary types, now
get converted to the correct internal binary value. Fixed
corresponding comparison operators and cast into each others.
August 14, 2006 - Nicola
o XML Updates:
Added a Makefile and .expect files for performing
automatic regression tests for the
XQuery Update Facility Use Cases.
The addressbook usecase is skipped, because of an issue
related to update conflicts in the last W3C draft.
The current output of Galax on these programs needs to
be checked again.
August 11, 2006 - Jerome
o Date & Time:
- Fixed bug in comparison of durations, not comparing the sign
properly.
- Added missing support for promotion of xs:yearMonthDuration and
xs:dayTimeDuration into xs:duration.
August 11, 2006 - Kristi (Distributed XQuery)
o Modified galax-parse.ml, top_options.ml, top_config.ml,
top_config.mli to support -diff option (compares 2 XML files), so
can use galax-parse -diff to diff 2 XML files
o Added preliminary test cases for DXQ in examples/dxq/test/q along
with 2 programs, run-tests and generate-tests run-tests is a shell
script that calls galax-parse -diff to check if tests passed.
generate-tests is a perl script that generates null-ary test cases
August 10, 2006 - Jerome
o Parsing:
- Fixed parser to properly impose whitespace around arithmetics
operators (10div 3, etc.).
o Date & Time:
- Added support for addition of xs:yearMonthDuration or
xs:dayTimeDurations as first operands, missing.
- Fixed multiplication of double with yearMonthDuration when the
numeric value is infinite, or nan (overflow and parameter
mismatch respectively).
August 10, 2006 - Jerome
o Normalization:
- Fixed normalization of Expr[Numeric] to use subsequence only for
integer literals, since it is wrong for other kinds of numeric
literals.
- Fixed predicate boolean value to not do rounding for numeric
values.
August 9, 2006 - Jerome
o Parser:
- Fixed precedence for XQueryP expression.
- Fixed {1} like expressions to be errors except when XQueryP is
on.
o Variable handling:
- Fixed variable lookup in static typing to use expanded-Names
lookups rather than triple (prexix,uri,localname) lookups.
- Fixed name comparison in variable inlining in the optimizer.
August 8, 2006 - Trevor (Distributed XQuery)
o One more XML printing fix for the DXQ GUI.
August 8, 2006 - Trevor (Distributed XQuery)
o Better printing of XML for the DXQ GUI.
August 2, 2006 - Nicola
o XQueryP: turned static typing off (by default) and
corrected the "binding.xq" example
August 2, 2006 - Nicola
o XQueryP:
added ImperativeSeq in the core and algebra. It is similar
to Seq, but it only returns the result of the last expression
in the sequence. Syntactically, an ImperativeSeq constitutes
the content of an XQueryP block and the delimiter between
expressions is the semicolon.
August 1, 2006 - Nicola
o Optimizer: fixed the variable inlining rule that did
not respect scoping. Also, corrected annotation for
AOESet to Many (because it redefines the variable).
o XQueryP:
- implemented parser and normalizer for blocks
!! For the time being, blocks are similar
to sequences, concatenating their results.
This should be changed to returning the
result of the last expression.
- added "-language xqueryp" option to Galax
- added a couple of first examples, inspired from
the XIME-P presentation; some things are broken due
to static typing
August 2, 2006 - Mary
o Parse_xquery.mly:
Fixed long-standing bug: EOF-token was omitted from xquerymodule
and librarymodule productions, permitting parser to ignore first
error in a module file.
August 1, 2006 - Trevor (Distributed XQuery)
o New primitive functions for domain name comparison, used in
DNS example.
July 31, 2006 - Mary
o Error : added DXQ_Error
o Variable_manager_context, et al
- Changed variable manager to store Physical_value.xml_value
(Trees only) instead of Physical_value.physical_value (Tables or
Trees), because variables never contain Tables. Avoid lots of
unnecessary boxing & unboxing.
- All functions for storing/accessing variables changed as well.
o Cs_util : added function to demangle names in dxq: namespace.
o Code_execute: numerous bug fixes
o Galax.compile_serialized_closure : working on adding tuples
o Streaming_constructors : added try-with around constructors to
propagate better error messages.
o Galax_server: added <alg:Result> box around <glx:error/> for
consistency.
o QUESTION: Why do we return item lists in Physical_load instead of
item cursors?
July 31, 2006 - Nicola
o Fixed treatment of letvars in the normalization of while loops
o Fixed variable assignment to return the empty sequence.
July 31, 2006 - Nicola
o Fixed glx:getdoc() to avoid any form of document caching.
July 31, 2006 - Nicola
o Imperative statements:
Corrected normalization of WHILE loops; some free variables in
the CEInsert were missed
July 31, 2006 - Nicola
o Imperative statements:
finished implementing variable assignment; but code selection
for it is probably unefficient at this moment
July 28, 2006 - Jerome
o Alignment:
- Correctly raises errors with mal-formed entity references in
string literals.
July 27, 2006 - Nicola
o Added the glx:getdoc() function that behaves similar to
fn:doc() except that it always re-reads the document from
the source. If the document changed in the meantime,
it will retrieve the new data.
July 27, 2006 - Mary
o Optimization_rewrite:
Fixed bug in re-annotation: previously reannotated "root"
expression, but if optimization rewrites "root" as a new
expression, the old root, not the new expression, was incorrectly
reannotated.
o Namespace_context.make_binding:
Did not handle (NSDefaultElementNamespace, NSUri "") correctly.
o Code_selection.retrieve_annotation:
Added provenance of call to make debugging less painful.
o Compilation/code-selection of user-defined, external functions
that are not built-in.
Right now, the treatment of F&O built-in functions is conflated
with user-defined external functions. We know a function is
user-defined & external if it is _not_ in the compile_context.
Must handle this case in optimization and code selection:
Code_user_defined_fn
Optimization_judge
Optimization_rewrite
TODO: We might want to "de-conflate" these two.
o Galax.compile_serialized_closure:
Returns prepared_prlog, statement pair. Prepared_prolog contains
all info for closures' environment vars for execution of statement.
July 27, 2006 - Nicola
o Imperative statements:
- added Set as a new statement at XQuery and Core level, without
runtime code yet
- filled missing matches for letvar and set in the normalizer&
compiler
July 27, 2006 - Nicola
o Imperative statements: completed normalization of letvar's
into AOELet
July 27, 2006 - Mary
o Namespace_context:
- Fixed bug in which duplicate namespace entries were not removed
from delta bindings. Resulted in serialized element with
duplicate xmlns:<prefix> attributes, which is not well-formed.
TODO:
o Serialization
Streaming_ops.prefix_xml_stream & Namespace_context.cleanup_bindings:
The computation of required namespace attributes in
prefix_xml_stream seems pretty inefficient. We end up comparing
strings of (prefix,uri) pairs --- why not compare (int) symbols?
July 26, 2006 - Jerome
o XML Updates:
- Fixed precedence problems in the new XML update grammar.
July 26, 2006 - Nicola
o Imperative statements:
- corrected normalization of while loops
- added syntax for letvar's
July 26, 2006 - Mary & Kristi (DXQ)
o Closures
- Added boxing/unboxing for stand-alone attribute values
July 26, 2006 - Mary
o Debugging messages
- Slowly changing all calls to *print* functions to use Debug
module instead.
o Code_selection_context
Add enter_closure/exit_closure to set up variable and tuple
contexts.
TODO:
o Debug module - We are using List.exists to check debug variables,
which is really inefficient; should use bit vector.
July 26, 2006 - Philippe
o Added two normalization rules + fixed bugs in other rules.
o Changed factorization to do TPNF normalization only for now.
July 25, 2006 - Nicola
o Implemented glx:sleep() that pauses execution for a given time
July 25, 2006 - Nicola
o XML Updates: corrected normalization of ETransform (it was not doing
the `copy' after my last changes)
o Imperative statements: added parser support for while loops and
a way to normalize them into XQuery! core
o Norm_ident_expr now raises exceptions for the new ETransform and
EWhile expressions
July 25, 2006 - Jerome
o Patched SBDO stuff (makefile and call to
Optimization_sbdo_automaton instead of Sbdo_automaton) so that
Galax compiles again. SORRY PHILIPPE, you'll have to look this
over again.
July 25, 2006 - Mary (DXQ)
o Code_execute, Galax, Planio modules
- Completed (type) boxing and unboxing of datamodel values passed in
closure environments and returned as results from Galaxd server.
o Physical_load
- Fixed very old bug in load_xml_value_from_typed_stream that
delegated to load_document instead of load_xml_value.
July 25, 2006 - Philippe
o Fixed compile error
July 25, 2006 - Philippe
o Added factorization plugin module for rewriting CXQ expressions
into TPNF normal form. Files:
- factorization/factorize_tpnf.ml(i)
- factorization/factorize_tpnf_rules.ml(i)
The rules are of course only triggered when factorization is
turned on.
July 24, 2006 - Mary & Kristi
o Galaxd.ml updated to include prelim support for type information in
a boxed request on the server side.
o planio_print_xml.ml contains some udpates
July 24, 2006 - Mary
o Debug module now prints to Conf.glx_err_formatter.
o More DXQ changes
July 24, 2006 - Nicola
o XML Updates code generation:
Implemented conflict detection for "replaces" and "renames",
according to the W3C's July 2006 specs
July 21, 2006 - Mary & Kristi
o Code_execute: changed to construct and emit a closure
o Added Galax.compile_serialized_closure
- Unboxes an environment, extends code-selection, execution, &
physical-type contexts with free variables and their values
- Invokes body of closure in new context
o TODO: Change code_execute to parse XML stream result from server
directly instead of redirectly to a file. Yuck.
o Changed Debug.print_*_debug() to check flags internally so that
they do not have to be guarded by if (*_debug()) then print_*_debug()
July 21, 2006 - Mary
o Unstable state for DXQ ONLY
July 21, 2006 - Nicola
o Normalization & updates:
corrected normalization of Replace Value Of; the construction
of the text node out of the "with" clause was wrong
o XML Updates code:
removed the check for insert-insert conflicts
July 21, 2006 - Nicola
o XML Updates:
- Added support for the "transform copy ... modify" statement
(which is normalized into other XQuery! constructs)
- Finished implementing "replace" statements
- disabled "snap nondeterministic"; conflict detection should
in general be updated soon
o XML Update Use Cases:
- Added all the W3C usecases, with some fixes. A Makefile
will be needed to run them automatically.
July 20, 2006 - Jerome
o Streaming:
- Added test support for streaming of ','.
July 20, 2006 - Mary
o Unstable state for DXQ ONLY
July 19, 2006 - Nicola
o XML updates:
- Aligned the parser with the latest W3C draft, except for
"transform modify" which is still missing
- Added an "updating" modifier keyword in the function declarations
(also specified in the W3C draft) that is required in the declaration
of functions that can return lists of pending updates
- Propagated information provided by the "updating" flag to function
declarations and function calls at all levels: AST, core, algebra
- Removed the "Detach" update (at all levels), as it subsumed by "Delete"
- Implemented the "Rename" update in the galax datamodel. Still
working on "Replace" and "Replace_value"
- Added a new directory usecases/xqupdate for the XML Update Use Cases
(from W3C). For now it only has the R and the Parts usecases. The
rest will follow soon (but many of the queries are not correctly
specified by W3C).
o Configuration: set the -with-c flag for the configuration script to
be false by default, as ./configure -help says it should be. Attn:
there is a problem with the $RANLIB variable here, so you should
probably still compile the C API.
July 19, 2006 - Jerome
o Overloaded function calls:
- Factorized type access during the generation of type promotion
code. This significantly reduce the number of operations for
overloaded functions (pretty pervasive).
July 19, 2006 - Mary & Kristi (DXQ)
o Skeleton for closures in Code_execute
o Debug module: added two new options for "typing" and "dxq"
July 18, 2006 - Jerome
o FSA:
- Removed duplicates in visited states list during intersection
leading to blowup in size and huge performance issues during
subtyping. (Issue Circa 2000).
July 18, 2006 - Kristi and Mary (Distributed XQuery)
o Added stubs and initial code for supporting POExecuteTuple in
code_selection/code/code_execute.ml and
code_selection/code/cs_code_typing_top.ml
July 17, 2006 - Trevor (Distributed XQuery)
o Bug fix for determining short server name in galax_server.ml
o Added -d option to galaxd.ml to make it easier to start a cluster
of galax servers.
July 17, 2006 - Trevor (Distributed XQuery)
o Added dxq: name demangling.
o Changed the example to use the dxq: name convention and
added an interface file. Cleanup.
July 14, 2006 - Kristi & Mary
o Optimization_top
- Fixed long-standing bug in which function bodies were not optimized.
TODO : Optimize global variables definitions
o Physical algebra
- Now have two variants of AOEExecute: POEExecuteTree and POEExecuteTuple,
to permit remote plans to return either tree or tuple values.
o Galaxd
- Added options for function & variable inlining
July 14, 2006 - Trevor (Distributed XQuery)
o Change parser and lexer to support a new syntactic form:
exec { "foo" } { bar() }
executes the code bar() on host foo.
July 13, 2006 - Mary
o Xquery_algebra_ast:
- Changed function body into a structure with two fields containing
logical plan (before code selection) and physical plan (after
code selection)
- Permits in-lining & optimization of function calls in top-level
user queries by inlining the _logical_plan_. Previously, it
attempted to inline physical plan, which is just wrong.
o Updated usecases/xmark_usecase.expect to align w/ input file
July 8, 2006 - Trevor (Distributed XQuery)
o Correct locking and reporting of debug log in galaxd.
July 6, 2006 - Mary & Kristi (Distributed XQuery)
o Changed galaxd so that prolog is both compiled and evaluated on
server start-up. Led to numerous questions on what should happen
on server start-up (see "Things-to-fix" on Wiki).
July 6, 2006 - Trevor (Distributed XQuery)
o Eliminated useless proc_ctxt replication in galaxd
o Correctly set dxq host and port in proc_ctxt for non-simloop case
o Allow simulations to be run from a directory different than the directory
containing the source code
July 6, 2006 - Mary and Kristi (Distributed XQuery)
o Modified ast_printer to add support for printing plans of an
Execute{} operator after optimization.
o Modified base/galax_http.ml to disambiguate the Http module
July 6, 2006 - Mary
o Fixed name conflict in base/galax_http.ml
July 5, 2006 - Trevor (Distributed XQuery)
o debug log is now flushed properly.
July 5, 2006 - Mary and Kristi (Distributed XQuery)
o Changed Code_execute/build_default_ceexecute_code() to detect when
a Galaxd server issues a remote plan to itself: Now circumvents
server and evaluates plan locally.
o Processing_context: added procctxt fields to identify Galaxd
host/port.
o Questions:
- In processing_context, why are monitor_context, external_nsenv
not copied?
- In Print_xquery_algebra, line 730, handle two cases for
AOEExecute. See comments there.
June 29, 2006 - Kristi
o Flattened the function calls in the following files to reduce recursion:
o examples/dxq/directory-doc-remote/a.xq
o examples/dxq/directory-doc-remote/b.xq
o examples/dxq/directory-doc-remote/c.xq
o examples/dxq/directory-doc-remote/d.xq
o examples/dxq/directory-doc-remote/e.xq
June 28, 2006 - Trevor
o -print-plan-kind added to galaxd, needed to avoid a problem with
the standard plan printing
June 28, 2006 - Trevor
o Debug log for prolog now prints to a file in galaxd.
o Galaxd no longer uses a temp file for server startup.
June 26, 2006 - Mary
o Added extra debug options to galaxd : "-print-prolog on" to print
library module when it is loaded.
June 21, 2006 - Kristi
o Integrated and added support for the pre-generated logfiles (see
note from June 20) into each .xq file:
o examples/dxq/directory-doc-remote/a.xq
o examples/dxq/directory-doc-remote/b.xq
o examples/dxq/directory-doc-remote/c.xq
o examples/dxq/directory-doc-remote/d.xq
o examples/dxq/directory-doc-remote/e.xq
o examples/dxq/directory-doc-remote/summary.xq
June 21, 2006 - Trevor
o Fixed bug with -print-plan-shebang output
o Added a debugging log to galaxd
o Use a buffer for evaluation output rather than a temp file
June 20, 2006 - Kristi
o toplevel/galax_server.ml: added support for logging query/response
sizes
o toplevel/galaxd.ml: added support for logging query/response sizes
(fn:log query response host)
June 16, 2006 - Trevor
o toplevel/top_options.mli: export dxq options from module
o toplevel/galaxd.ml: added various options
June 16, 2006 - Mary
o fn:collection()
Added all necessary hooks for fn:collection(), which currently
loads a document, not a document fragment.
base/galax_io.ml: See Galax_io.pull_parser_from_input_spec for info
on how/where document fragments should be added.
June 16, 2006 - Chris Rath
o Fixed configure script to work with Solaris /bin/sh
o Updated RELEASE number in Makefile.galax to 0.6.6
June 16, 2006 - Mary, Trevor, Kristi (Distributed XQuery)
o Processing_context
Added dxq_optimization flag
o Top_options
Added -dxq [on/off] option to enable DXQ optimizations.
June 16, 2006 - Chris Rath
o Removed == test in configure as it does not work with older
versions of /bin/sh
***** Tagged with galax-0-6-6 *****
June 16, 2006 - Mary (Distributed XQuery)
o Optimization rules
Added new Optimization_dxq module for Distributed XQuery.
Uncomment rules in Optimization_rewrite to enable.
o Usecases
Changed expected outputs to align with "ugly" (non-pretty-printed)
serialized XML output.
o Working on fn:collection() -- see comment in Galax_io on how to
create a PXP entity manager for document fragments. Also
Pxp_ev_parser.
June 15, 2006 - Jerome
o Updates:
- Fixed bug in physical typing of insert/replace/rename.
- Added top-level flag to select the language support (between
XQuery 1.0 and XQuery!). Default is XQuery 1.0. Please use the
following option to turn XQuery! support on:
-language xquerybang
Notes:
* This only currently work with optimization off!! Something
got broken in the safety checks of the optimizer with all
the work we are going on it...
* This also turning static typing off since it is not
implemented (and wouldn't be safe!).
June 13, 2006 - Chris Rath
o Removed newer shell constructs in configure so it will work
with machines that use an older version of /bin/sh.
June 12, 2006 - Michael
o Streaming_conv
Fixed bug in streamed fn:count
June 6, 2006 - Mary
o Type simplification
In Schema_simplification.simplify_union:
Fixed long-standing bug in which only duplicates of atomic types
were removed from union types, resulting in "simplified" union
types that contained multiple occurrences of node item types, e.g.,
element(), comment(), etc. Now correctly removes duplicates of any
(item) types that can be compared syntactically, that is, does not
required full-blown type inclusion.
If we had _compiled_type_ identifiers, we could do this more
efficiently by sorting and removing duplicates.
See comments in Schema_simplification.simplify_union.
June 6, 2006 - Jerome
o Serialization:
- Turned pretty-printing off. In preparation for an overhaul of
serialization for purposes of improving performances.
o Optimizer:
- Fixed bug in handling of equality predicates that do not contain
fs:untyped-to-any() calls. Changed the variable allocation for
the existential quantification to a safe one.
- Improved the detection of join predicates when
fs:untyped-to-any() calls are removed, covering asymetric
cases. (Impacts XMark Q11 and Q12 which for which sort joins are
now picked up).
June 1, 2006 - Philippe
o Optimizer
- fixed the remove_materialize_flwor rule to use has_non_trivial_snap
instead of has_trivial_snap, which is the negation of the latter.
The fact that has_trivial_snap is implemented as
not(has_non_trivial_snap) seems weird.
- fixed the twig merge rule to be robust wrt. project operations that
may/may not occur in the subexpression of the select.
- Fixed the map_from_to rewrite. It was checking wether order matters,
but that information is irrelevant for this rule.
- Fixed the map_concat_pushdown, to not push MapConcats past projects
blindly. There is a special rule for this.
Now all of my tests regarding TTP rewrites work again.
ADVICE: wehen running tests: verify that al rewrites you expected to be
apllied indeed are applied. The optimizer is a mess, it is almost
impossible to guarantee this right now.
Good news: so far no evidence was found that buggy [Cleanup 0] is
necessary for TTP rewrites.
May 31, 2006 - Jerome
o Optimizer:
- Cleaned up various modules and pieces of code. Moved things
around to the right places. Added comments.
- Turned [Cleanup 0] rule off, since it's wrong until we know what
it's usage is and how/whether we want to fix it.
May 30, 2006 - Jerome & Mary
***
RANT: compile annotate is evil. we need to rewrite it.
compile_annotate.ml
compile/compile_annotate
WHY IS THIS IN ./compile ANYWAY? ***
o Optimizer:
- Turned off group flatten rule which is incorrect, creating bugs
in conjunction with at least TTP rewrites.
- Improved detection of join predicates in the case the predicate
operation is internally creating and accessing new tuple fields.
- Improved pattern matching of join predicates, picking up
existential quantification rewritten as a let.
May 25, 2006 - Jerome
*** Improved support for debugging. Important changes:
- Conf.debugging is gone, you should use ./base/debug instead.
- Please always use the Debug.print_debug printing function.
- You can now cluster debugging messages per feature.
There are currently two features: join and default. join
correspond to join debugging messages, default is currently for
everything else. You can turn those features on by using:
./galax-run -debug join
./galax-run -debug default
./galax-run -debug default,join
etc.
To add a given debugging feature 'MYFEAT' that you want to
isolate, you should change ./base/debug.ml as follows: (1)
add an entry in the list of debug flags (e.g., MYFEATDebug),
(2) add a function which returns true if MYFEATDebug is on
(e.g., val MYFEAT_debug : unit -> bool), and add "MYFEAT" as
the recognized string for MYFEAT. ***
o Debugging:
- Cleaned up debugging support. Removed Conf.debugging. Now
debugging must go through the base/Debug module.
- Added support to categorize debugging output. Currently there
are two categories, which can be set independantly: join
debugging, and misc debugging for everything else.
o Joins:
- Fixed normalization to introduce EBV properly for the where
clause. Consequently removed hack in the compilation phase
which was introducing EBV back.
- Made the join predicate analysis used to detect hash/sort joins
more robust to variations in the core expression for the
predicate. Those are necessary since rewritings often change
the form of the predicate because of weak typing.
May 25, 2006 - Mary
o Added implementation(s) for fs:item-sequence-to-node-sequence on
DOM tree & XML-token cursors.
This function is only necessary for typing purposes, but if
rewriting is off, it must be implemented as the identity function
on both DOM trees and XML-token cursors.
o galax-parse command-line options:
-dm => All phases through loading
-validate => All phases through validation
o Documentation - some updates
May 23, 2006 - Michael
o Compile_annotate
Small fix to tuple field use count analysis
May 19, 2006 - Philippe
o TTP rewriting (optimization_rewrite):
Generalized rule TP 3
***** Tagged with galax-0-6-5 *****
May 17, 2006 - Mary
o Browser interface/Website
- Updated to align w/ GODI configuration & Galax 0.6.5.
- Fixed CGI printing bug. All output now printed correctly.
o Documentation
- Updating documentation for GODI release.
o Logical Plan Printing
- Fixed old bug that replicated algebra: namespace.
o Loading
- Made interface names more mneumonic
o Java API & Examples Makefiles
- Added path to CAPI libraries
- Fix to install: target
TODO: Document command-line options :=(
May 17, 2006 - Michael
o Conf.ml_p_
- Fixed initial settings of dynamic buffering for streaming
May 16, 2006 - Jerome
*** Test suite change: we now run 0.9.0.
WARNINGS:
- 0.8.6 will NOT run, because of xdt: to xs: namespace changes.
- several Galax bugs are being exposed by 0.9.0 which are not
fixed yet. ***
o Printing:
- Fixed issue with flushing of formatters in pretty-printing
stubs. (Gmisc module).
o Alignment:
- Removed xdt: namespace, now replaced by xs: namespace.
- Added support for 'encoding' option in the XQuery version
declaration.
- Implemented fn:codepoint-equal() function.
- Fixed bug in parsing for 'castable as' expression with an
optional type.
o Arithmetics:
- Fixed long-standing bug in arithmetics of dates and time not
dealing with the empty sequence properly, both in the type
signatures and evaluation code.
- Short-circuits the evaluation in the case one of the operand is
the empty sequence.
o Constructor functions:
- Constructor functions are now properly normalized to cast based
on whether the function name derives from xs:anyAtomicType,
instead of just as being in the xs: namespace.
- Constructor functions now properly normalized to a cast
expression with an optional type.
o Testing:
- Fixed test harness to handle cases where the error comes out of
serialization rather than evaluation.
May 16, 2006 - Michael
o Alg_path_analysis
- Added handling of AOEProject to path analysis
May 15, 2006 - Chris Rath
o Added a new target, "byte" to the toplevel and subordinate Makefiles.
- Only creates the byte-code galax library and byte-code toplevel applications.
o Added a new target "byteworld" that works like "make world"
- Only creates the byte-code galax library and byte-code toplevel applications.
May 14, 2006 - Michael
o Stream_conv
- Fixed bug in typed_of_typed_labeled_xml_stream
o Streaming_xpath
- Added streamed treejoin for attribute-axis
o Dynamic_buffer
- Set initial buffer size to zero
- Now doubling buffer size on resize
May 12, 2006 - Chris Rath
o Fixed missing files and typos in Makefile.galax
o Added "regression" target to top level Makefile.
o Removed regress/testconfig.xml from CVS; this file is now generated from testconfig-tmpl.xml
o Updated all lower-level Makefiles to ensure they all have the standard targets
May 12, 2006 - Jerome
o QNames:
- Fixed bug in casting of QNames introduced when improving the
parser.
o Parsing:
- Fixed bug in text-node merging during parsing, introduced while
experimenting with parser improvements.
o Testing:
- Fixed the knownbugs file to align with 0.8.6 and Galax status.
May 11, 2006 - Jerome
** The test-suite should work again **
o XML Parsing:
- Fixed bug introduced last week about resolution of attributes
in the default namespace, affecting testing.
May 10, 2006 - Philippe
Until now, MapTo/MapFromItem combinations got eliminated for
TupleTreePatterns. However, the combination of MapToItem with
MapFromItem is actually a kind of projection. Just eliminating it is
wrong because some fields that where invisible, now become visible
again. This was interfering with some other rewrites, like the join
rewrites. The MapFromItem/MapToItem combo is now replaced with a
project operator. This and some project-related rewrites allow picking
up both tree patterns and joins correctly. XMark queries 8-12 now get
compiled in a combination of joins and tree patterns.
o Added AOEProject operator
o Added some optimization rewrites related to projects (this
get rid of the redundant products in the XMark queries)
Project is basically a no-op: it only manipulates the returned
fields of a subexpression.
May 9, 2006 - Philippe
Fixed wrongful bulk TTP rewrite.
May 8, 2006 - Jerome
o New compiler:
- Started cleaning up unused variable detected by the latest Caml
compiler.
o Streaming:
- Removed unnecessary file id lookups during stream parsing.
- Fixed expensive QName parsing calls during stream parsing.
o Toplevel:
- Added support for intermediate parsing phases in
galax-parse. Command-line options allow to individually call
the following XML processing phase operations: PXP parsing,
Galax stream parsing, Namespace resolution, Type annotation,
Load, Export, Erasure, prefixing the stream, and serialization.
May 7, 2006 - Michael
o Top_config
Added code_selection_by_physical_type to streaming_shebang
o Compile_annotate
Minor changes to tuple field use count analysis
April 26, 2006 - Chris Rath
o Added toplevel command sources to the .depend target.
o Updated the configure script to support -enable-profiling option.
o Updated Makefile.galax to support profiling.
April 24, 2006 - Philippe
o added print-plan-shebang for
printing all plans (core/rewritten/logical/optim/physical) w/o
annots, but including logical rewrites
April 24, 2006 - Philippe
o added "shebang" options
-streaming-shebang on/off
-scjoin-shebang on/off
-twigjoin-shebang on/off
April 18, 2006 - Chris Rath
o Fixed some bugs in the configure script.
April 17, 2006 - Chris Rath
o Changes necessary to align with GODI
***** Tagged with pre-godi *****
April 14, 2006 - Mary
o Changes to align Abstract DM with Galax DM (document-constructor
now takes (atomicAnyURI option ref) argument)
Does anyone know how was this compiling? They have been out ofp
alignment for a while...
Who made this change?
April 12, 2006 - Mary (Distributed XQuery)
o Minor changes to plan printing & Galax server.
April 12, 2006 - Philippe
Getting ready for code alignment.
Small fix related to debug output
April 6, 2006 - Mary and Doug
o Updated distributed directory example to work correctly
April 4 2006 - Mary (Distributed XQuery)
o Fixed galaxd to report fatal errors to stderr on startup.
o Changed AOEExecute operator to take arbitrary expressions for host
and port values.
TODO:
o Change galaxd/galax_server to report errors in original files;
Do not copy to temp files.
April 4 2006 - Mary (Distributed XQuery)
o Temporary fix to GUI reporting in Galax_server
March 26, 2006 - Philippe
o Moved SBDO optimization code to optimizer
o Applied SBDO optimization over TupleTreePatterns
March 24, 2006 - Mary (Distributed XQuery)
o Added pseudo-function glx:remote-plan(host, port, plan), for
executing plan at remote Galax server. Temporary place-holder for
new extension operator "execute at Expr {Expr}".
o Added corresponding algebra operator AOEExecute (host, port, plan)
o Code_selection/code/code_execute: Implementation of AOEExecute
o Galax.mli: Added compile_serialized_logical_statement to support
shipping of query plans for individual statements.
o Galax_server.ml:
Changed "/plan" command to take plan of an individual statement.
Should probably permit both plans for complete modules & for
individual statements.
March 24, 2006 - Philippe
o Snap removal fix
March 24, 2006 - Philippe
o c1 AND c2 - conditional expressions got rewritten into
if c1 then c2 else false
where the 'false' was an atomic value instead of an fn:false()
call. Since compilation was relying on fn:false() to compile
this into a normalized select-predicate description, it
failed at doing so. The rewriting rule now uses a boolean
call to fix this.
March 23, 2006 - Philippe
o Serialization and parsing for TupleTreePattern operator.
March 23, 2006 - Michael
o Added preliminary handling of TupleTreePatterns to
tuple field use count/path analyses
March 21, 2006 - Philippe
o Added a fall-back rewrite rule for rewriting
TupleTreePatterns into TreeJoins:
TupleTreePattern [dot1](s1/.../sk{dot2}* ) (indep)
==
MapConcat { MapFromItem{v -> [dot2 : $v]}(
TreeJoin[sk](...(TreeJoin[s1](INPUT#dot1))))
} (indep)
This rule could replace all other TTP elimination
rules, but then we would end up with a lot of maps,
which may interact with Michael's work.
March 15, 2006 - Mary & Doug (Distributed XQuery)
o Changed Galaxd to take "/plan" command, which executes logical
plan
o Added glx:remote-plan(host, port, plan) function to Galax_server
to ship plan.
o Added examples/dxq directory
March 15, 2006 - Mary (Distributed XQuery)
o Changed Galaxd to compile each library module once.
March 15, 2006 - Mary (Distributed XQuery)
o Lifted Sim,Gui, and Server modules out of galaxd.ml and put into
toplevel/galax_server.ml, which is a misnomer, because it contains
both server and client code. Need to organize this.
o Added client-side glx:remote-query() function to galax_server.ml.
March 14, 2006 - Mary
o Compile_annotate : added some comments per meeting with Michael
March 13, 2006 - Mary
o Fixed bug in .depend dependencies
March 10, 2006 - Mary
o tools/escaping/Makefile: removed unnecessary reference to galax.cma
March 10, 2006 - Mary
o Makefile: changed .depend target to depend only on .mli files
o In regress/test_core.ml
- Changed so that queries on XQTSCatalog.ml are not statically
type checked, but actual test-suite queries are statically type
checked.
- Hard-coded strong typing for "StaticTyping" test group.
o Schema_simplification.ml:
Type simplification now takes atomic named type hierarchy into
account when simplifying types, so that resulting type does not
contain any types that are derived from other types and therefore
is guaranteed to be deterministic.
March 10, 2006 - Michael
o Revived rudimentary version of galax-project. It takes a
single argument (the query file to be processed) and prints
the result of path analysis together with any projected
documents.
March 9, 2006 - Mary
o Added file locations to warning messages.
March 8, 2006 - Mary
o Uncommented typeswitch_rewrite rule, which was incorrectly
disabled.
March 8, 2006 - Michael
o Added streaming version of fs:first-item (Code_builtin_fn).
March 7, 2006 - Michael
o Tuple field use counts (Compile_annotate)
Added inference rule formulation and lots of documentation;
added dummy stream consumption in case variables/tuple fields
are never accessed explicitly - this is necessary in case the
cardinality of a streamed item sequence must be known (for
iteration).
NOTE: Dummy consumption is uniformly applied for both bindings
that affect values in their entirety (let-binding) and
those that 'chop' values into slices and bind a single
slice at a time (for-loop), meaning that, should a use-
count-zero-let-binding (which is useless except for an
optional type assertion) be discovered in a plan, the
stream cursor for the bound value will actually be
consumed, though it would not be necessary.
OBSERVATION: Tuple field use count analysis should take place
at the physical algebra level; physical operator
variants of one and the same logical operator
behave differently at times!
o Physical typing (Cs_code_typing_top)
Aligned inference rule formulation and code
o Builtin functions (Code_builtin_fn)
Started implementing selected builtin functions over XML token
streams - fn:count is the first
March 6, 2006 - Mary
o Fixed bug in tools/escaping/Makefile
o Added Xquery_type_core_ast_annotation.ml*
March 3, 2006 - Mary
o Weak typing is now default
- Processing_context : changed default to weak typing
- All 7500 of version 0.8.4 test suite tests pass except these
two (but they'll pass soon)
v0.8.4/Queries/XQuery/Expressions/OrderExpr/Orderexpr-19.xq
v0.8.4/Queries/XQuery/Expressions/OrderExpr/Orderexpr-20.xq
- All usecases pass
o Typing_call.compute_type_overloaded_function_call
Rewriting_rules_typing.overloaded_type_rewrite:
- In computation of type for overloaded function call and in
conversion of overloaded to statically dispatched calls, fixed
long-standing bug in which quadratic number of all possible type
signatures were checked. Now uses (average case) linear-time
lookup on first type signature to match.
March 2, 2006 - Mary
o Numerous changes to speed up static typing & bug fixes revealed by
weak typing:
- Passes all of XQuery Test Suite 0.8.4 except for 12 queries that
either Galax fails or on queries that have empty() static type.
- Subtyping_top.includes: Now do syntactic sub-type check on all
common top-level types (e.g., xs:anyType, numeric*?+, etc.)
before building & running type automata.
- Typing_util.can_be_promoted_to : replaced calls to
Subtyping_top.is_subtype_of by faster Schema_judge.is_derived_from.
- Xquery_type_core_ast_util.equal_cxtypes: structural equivalence
on cxtype_descriptor, ignoring File location.
- Schema_simplification.simplify_ty : any given type is only
simplified once, replaced by its simplified form, and labeled as
simplified.
- Schema_builtin: All builtin types are labeled as simplified.
- Schema_builtin: All type expressions over builtin types are
predfined.
- Removed sub-type check to terminate recursion in descendant
type, replaced with simple List membership test.
- Physical_util.ml: Fixed get_ATOMICTYPE functions to take named
type hiearchy into account, e.g., get_duration applies to
duration, yearMonthDuration, and dayTimeDuration values;
get_decimal to integer and decimal.
- pervasive.xq: Fixes to signatures
TODO :
- Compiled type name identifiers.
Xquery_type_core_ast_util: All declared named types are labeled
with computed type identifier (pre, post) such that T1 <: T2 iff
(T1.pre <= T2.pre) and (T2.post <= T1.post).
March 2, 2006 - Philippe
o Fixed typo-bug in twig inlining
March 1, 2006 - Philippe
o TTP rewrite robustness fixes
February 24, 2006 - Jerome
o Datatypes:
- Added limited support to check for facets on built-in derived
integer types.
o F&O:
- Implemented fn:namespace-uri-for-prefix().
February 23, 2006 - Jerome
NOTES:
*** We are now using the W3C XQuery Test Suite 0.8.6.
*** Function inlining has been turned off by default, since this
does not handle type assertion on the *output* type of the
function properly.
o Processing context:
- Turned off function inlining by default.
- Added 'system' flag, which must be turned on to parse
pervasive, to account for fn: functions being reserved.
o DateTime:
- Fixed handling of dates and dateTimes with negative years.
- Fixed bugs in parsing of xs:duration.
o F&O:
- Fixed handling of unknown timezones in fn:timezone-from-*
functions.
- Fixed numerous problems with fn:adjust-*-to-timezone functions.
- Implemented fn:document-uri accessor function.
- Implemented fn:resolve-QName function.
- Implemented fn:in-scope-prefixes function.
- Fixed empty sequence case for fn:QName.
- Fixed corner case in fn:resolve-uri().
o Sequence Type Matching:
- Fixed bug in sequence type matching for element(*,Type) and
attribute (*,Type) cases.
o Casting:
- Implemented casting from xs:double to xs:decimal.
o Parsing:
- Fixed lexing of character entities in namespace declarations.
o Normalization:
- Now raises an error for variable in the same for and at
clauses with the same name. (e.g., for $x at $x in ...).
- Now raises an error for two variables with the same name in the
prolog.
- Now properly normalizing whitespace in URI literals.
- Now properly checking for reserved URIs in function declarations.
- Now properly checking for duplicate parameters in function
declarations.
o XML Schema:
- Fixed bug, not parsing xs:notation as a schema component.
o Testing:
- Switched to test suite version 0.8.6.
- Added some hackish quoting for the text comparison to deal with
inconsistencies in the test suite expected results...
- Added support for external variables bound to query results.
February 23, 2006 - Philippe
o Added a more conservative rule for pulling TTPs out
of MapToItem operators as bulk TreeJoins
o Added a typed rewriting rule for removing sbdo calls
over expressions that yield subtypes of item()?
o Fixed the SCJoin self axis to perform nodetests correctly
February 22, 2006 - Philippe
o Fixed handling of predicates when reverting to
bulk TreeJoin execution plan
o Some fixes in SC-Join operators
February 20, 2006 - Michael
o Fixed severe bug in Streaming_xpath (uncaught Stream.Failure).
o Minor fixes to tuple field use count analysis in
Compile_annotate.
February 18, 2006 - Philippe
o SC Join code completed. A lot of bugs remain to be
dealt with.
February 16, 2006 - Michael
o Compile_annotate
- Started refining tuple field use count analysis as to
more closely reflect physical operator implementations.
- It is still incomplete, but works correctly on approx.
the subset of the algebra that should be streamable.
February 15, 2006 - Jerome
o F&O:
- Fix to fn:seconds-from-duration, wrong for negative seconds.
- Implemented fn:dateTime, missing.
o DateTime:
- Fixed bug with 24:00:00 time.
February 15, 2006 - Jerome
o DateTime:
- Added support for xs:duration missing.
o Namespaces:
- Internal renaming of xdt: into xs:. Surface syntax still uses
xdt: for compatibility with the current test suite.
o Pretty-printing:
- Fixes to pretty-printing of GroupBy.
February 15, 2006 - Mary & Doug
o Added AOEParse to list of monikers in planio_print_common.ml
o Fixed bugs with printing and parsing of query plans
February 15, 2006 - Michael
o Evaluation_expr
- Added debugging code that counter-checks values against
inferred physical types at runtime. This is compiled out
by default.
o Cs_util
- Removed unnecessary item cursor conversion in _old_
build_add_var_xml_value_unsafe_allowed code.
February 14, 2006 - Philippe
o Bug fix to the inlining rewrite
February 14, 2006 - Michael
o Added several refinements to physical typing
February 14, 2006 - Philippe
o Changed the variable inlining rewrite to be restricted
to XPath expressions by using the SBDO XPath annotations.
It is still possible to inline all variables by using the
-inline-variables switch.
NOTE: The inlinings that happen now are sufficient for the
introduction of TTPs and *should* not impede the introduction
of joins. For instance, the expression
doc("x")/a[doc("y")/b = c]
should be compiled/optimized as a join expression.
o Added scjoin algo's for descendant-or-self, ancestor-or-self
following and preceding
o Fixed XPath annotation at the core level to include the
ddo-calls generated by predicates
February 13, 2006 - Philippe
o Rewriting: added optimization rule for streaming plan support
that eliminates residual MapToItem over MapFromItem ops
February 13, 2006 - Michael
o Fixed bugs in code building functions that depend on physical
typing (let, some, every). The test suite now passes with
-code-selection-by-physical-type on.
February 12, 2006 - Michael
o Fixed bugs in physical typing
o Fixed bug in Code_functional_ops.build_let_code
February 12, 2006 - Philippe
o Rewriting: added backup rule for inlining static uri
variable bindings. This enables the compiler to introduce
AOEParse ops, when variable inlining is turned off.
February 12, 2006 - Michael
o Physical typing
- Lifted variable and tuple field use count access to physical
typing
- Isolated code building functions that deal with variable/tuple
field bindings in Code_binding. Added separate functions for
binding sax values, item cursors and item lists
- Parameterized physical signatures of variable/tuple field
binding operators by the physical types of the corresponding
variable/tuple field. This circumvents the need to define
distinct physical operator versions for the possible kinds
of bindings that can occur, namely, binding a sax value, item
cursor or item list.
- Made various fixes to type_check_physical_op
o Code selection
- Established a stronger coupling between physical typing
and code selection of variable/tuple field binding operators
by selecting code in Code_binding according to the physical
type parameters of those operators
- This behaviour is shielded by the new command line option
-code-selection-by-physical-type (off by default).
- It currently affects AOELet, AOESome, AOEEvery, AOEMapFromItem,
AOECreateTuple
- Unless turned on explicitly, code selection, variable/tuple field
use count access and code building functions for those bindings
are treated as before. The old code is still in place (and needed
by., e.g., AOENullMap etc.).
Note: Physical typing is still buggy. The bugs did not show up
before, because code selection was not really controlled
by physical typing, but by its own logic. Now, the two
phases interact more, and pyhsical typing errors result
in concrete, possibly wrong, materialization behaviour.
February 11, 2006 - Philippe
o Bug fix in MapConcat over TTP rewrite
February 10, 2006 - Philippe
o Staircase join for Following
February 9, 2006 - Jerome
o Rewritting:
- Turned variable inlining off again, but added a switch to turn
it on (for Philippe).
o Pretty-printing:
- Added pretty-printing of physical signatures in physical plans
(showing the physical operator and the physical types for the
input and the output).
- Fixed other minor pretty-printing issues for query plans.
February 9, 2006 - Michael
o Physical typing of constructors now delegates operator selection
to Code_constructors. It differentiates between 'virtual' streamed
and materialized versions of constructors if -streaming on.
February 9, 2006 - Michael
o The decision wether to stream a parse operator or not
is now controlled by path annotations (if -streaming on).
o The decision wether to stream a treejoin operator or not
is now controlled by its input's physical type (if -streaming on).
o Prepared decision making for constructors:
For each physical constructor operator PO*, split up that name
into PO*_Stream and PO*_Materialized (in analogy to POParse_Stream
and POParse_Load)
NOTE: This is a purely 'virtual' distinction; we do not and won't
have materialized implementations of constructor operators.
We need that distinction in order to properly propagate 'non-
streamability' along data flow paths that start with a constructor.
February 9, 2006 - Philippe
o Full Axis Feature in place. SC-Join version of following
and preceding coming up.
February 8, 2006 - Jerome
o Overloaded functions:
- Cleaned up normalization/overloaded.ml module. Removed dead
code, reorganized the tables.
o FLWOR expressions:
- Fixed orderby code to deal with type promotion. (Note: this is
only doing a pairwise comparison, this may actually not give
the proper result in the case of decimals when all should be
promoted to float/double and the precision is an issue).
o Prolog:
- Added minimal support for collation declaration, at least
checking the constraints on which declaration is valid or not.
o Testing:
- Now properly resetting the base uri processing context.
o Validation:
- Fixed propagation of nilled property during validation.
o F&O:
- Fixed support for distinct-values, numerous problems with type
promotion and handling of NaN.
- Fixed fn:subsequence for negative starting points.
- Implemented fn:nilled function.
February 8, 2006 - Philippe
o Started adding full axis feature.
Februari 8, 2006 - Philippe
o Fixed bug in nested loop ancestor code (dm)
o Staircase join versions of ancestor and descendant
are now in place. NOTE: The ancestor algorithm
is optimized to use the DOM parent pointers. This is
because an ancestor scan would be suboptimal due to the
lack of skipping posibilities in our name indices.
The sc-join version of ancestor more or less corresponds
with nested loop + pruning. Early experiments show
substantial speedups for ancestor and descendant.
February 8, 2006 - Michael
o Path analysis now produces annotations for the logical
AST. These are carried over to the physical AST, and
can be used to guide decisions at code selection.
February 8, 2006 - Michael
o Plugged path analysis into the processing model as an
analysis preceding code selection.
It is controlled by the command line flag -streaming on
(defaut is off) that I want to use as a global switch for
streaming functionality, later.
Path analysis currently just prints the analysis result
_instead_ of producing logical annotations; this will be
fixed soon.
February 7, 2006 - Michael
o Added code that calculates tuple field use counts on the basis
of existing returned/accessed tuple fields information (still
overly conservative, probably).
Setting -allow-streamed-tuple-fields on enables that code
to selectively materialize tuple fields if necessary;
-allow-streamed-tuple-fields off (default) conservatively
materializes every field.
This option should always be used with the corresponding
-allow-streamed-variables option, since otherwise it's hard to
actually get a stream into a tuple field.
o Enhanced code_selection_context by an additional field
global_annotation that is used to communicate tuple field
use counts from the analysis to code_selection (resp.
physical typing in the future).
_Global annotations are not yet stored for global variables._
February 4, 2006 - Philippe
o Fixed bug in new code selection for TupleTreePatterns
o Added ancestor and descendant code for SC join
o Added some interface functions for different kind of
index scanners:
- scanner over a pre/post window
- scanner starting at the first node with pre-order >= p
- scanner starting at the first node with post-order >= p
February 3, 2006 - Mary
o Fixed bug in function inlining in Optimization_rewrite
Function inlining is implemented by applying the standard rule of
replacing formal arguments by let-bound variables.
declare function foo ($x,$y) = { BodyExpr };
foo (Expr_x, Expr_y);
foo not recursive
==>
let $x := Expr_x, $y := Expr_y return BodyExpr
o Added command-line option "-inline-functions [on/off]".
Default is on, as inlining seems relatively well-behaved at the
moment.
o Aligned all operators to take (asequencetype option, cvname)
pairs in that order.
o Pretty-printing of query plans: Fixed more bugs in AOELet and
AOEVarDecl.
February 2, 2006 - Jerome
o Testing:
- Now catching low-level failures of the system and report those
neatly as test results.
o Prolog:
- Raises proper errors for redeclaration of the xml and xmlns
namespaces.
o F&O:
- Fixed fn:resolve-uri: reversing the order of parameters,
dealing with the empty sequence properly.
o Pretty-printing of query plans:
- Added support for precedence in pretty-printer.
- Fixed numerous problems with boxes in the pretty-printer.
- Fixed bug in pretty-printing of 'treat as', 'cast as',
'castable as', (inverted parameters).
- Fixed bug in pretty-printing of fn:error (wrong namespace, and
only allowing one independent expressions instead of several).
- Made the printing of the algebra more consistent. Some more
work aligning with the algebra paper and/or the XQuery core...
February 2, 2006 - Mary
o Physical typing
- First implementation of physical typing
- NOTE!! Function inlining is disabled as it raises physical
typing errors.
Created Xquery_physical_algebra_ast_util.ml*
Xquery_physical_type_ast.mli
Renamed Physical_types.mli to Physical_values.mli
Physical_values.ml* to Physical_values_util.ml*
o Terminology fix-up
The term "materialized" was overloaded in Physical_types and
Physical_values: It meant "Dm.item cursor", "Dm.item sequence",
and "(Dm.item sequence) array".
In Physical_value.mli:
Sax denotes (SAX-token cursor)
Dom denotes (item list) or (item cursor)
XML denotes Sax or Dom
Tuple denotes XML array
Table denotes Tuple array
I've tried to clean this up by using "materialize" as a verb in
functions that take an ('a cursor) to an ('a list) or ('a array),
instead of using it as a noun to describe values.
o Note/TODO:
We are not compiling some/every into map operators as described in
paper.
February 1, 2006 - Philippe
o Added a rule for removing snaps over operator trees
without actual updates. For now, the rule is only
triggered by using '-treejoin-log treejoin'
January 31, 2006 - Mary and Doug
o Printing plans in XML
- Started fixing bugs in Planio modules for printing/parsing plans
January 31, 2006 - Philippe
o Fixed pruning rewrite in optimizer
o Fixed pruning to support other axes
o Introduced index windowing for Twig Joins
January 31, 2006 - Michael
o changed physical algebra AST annotation to pass on
path annotations from the logical algebra level
January 30, 2006 - Michael
o added support for streams in variables, namely in
AOELet, AOESome, AOEEvery, AOEMapFromItem
- streams are disabled by default; they can be activated
by setting '-allow-streamed-variables on' (in that case,
selective materialization is controlled by variable use
counts as is the case for item cursors -> item lists)
o added support for streams (and item cursors) in tuple fields
- streams (and item cursors) are disabled by default;
they can be activated by setting '-allow-streamed-tuple-fields on'
(in that case, *no materialization is applied at all*, currently;
this will be controlled by tuple field use counts, soon)
January 28, 2006 - Jerome
o Prolog:
- Raise error in case of multiple boundary space declarations.
- Raise error in case of multiple default namespace declarations.
- Raise error in case of multiple construction declarations.
- Raise error in case of multiple ordering declarations.
o F&O:
- Switched the order of the parameters in fn:lang (the node comes
last not first). Allowed the first parameter to be the empty
sequence, which is treated as the empty string.
o Data Model:
- Fixed bug in node_lang method, not catching the end of stream
accessing xml:lang attributes properly.
o Optimization:
- Fixed bug in function inlining, not checking properly for
QNames equality, and not dealing with mutually recursive
functions.
o Testing:
- Fixed bug in the test suite, not properly reinitializing the
processing context.
January 27, 2006 - Mary
o Added missing code_selection/cs_code_typing_type.ml*.
compile.
Still working on physical typing rules...Revealing all sorts of
nastiness in code selection.
o More open questions on physical typing:
I'm not sure about the physical typing for GroupBy's dependent
subexpressions. The formal definition says that it has two
dependent sub-expressions, one that takes an Item value and one
that takes a Tuple, so each has a different type for INPUT.
The creation of a GroupBy in Optimization_rewrite, however,
indicates that it only has one dependent subexpr, which takes a
Tuple to an Item.
January 26, 2006 - Mary
o Physical typing
- Added physical-typing/operator-selection sub-phase to code
selection in Cs_code_typing_top in code_selection/.
- Physical typing is still a NOP, but it is in place and doesn't
break anything.
- Removed all the hard-coded physical signatures in
Cs_util_coercion.
o Open questions on physical typing:
- What are physical types of functions' actual arguments & return
values? They can/should be context dependent if we do inlining.
For now, they are always completely materialized XML values.
- What is the physical type of an externally declared variable?
For now, they are always completely materialized XML values. In
theory, we could permit users to provide Sax token-streams as
input. BIG impact on API.
January 26, 2006 - Philippe
o Fixed rules to reintroduce treejoins in the optimizer to be more
robust
January 26, 2006 - Philippe
o Added basic documentation for name indices
January 26, 2006 - Philippe
o Fixed an incredibly stupid bug in xquery_algebra_ast_util
that was screwing up the twigstack evaluation
January 25, 2006 - Philippe
o Added functions for checking applicability of twig joins.
o Added empty staircase join modules
o Factorized some AST functionality from twigjoins to algebra_ast_util
o Fixed rewrite rule in optimizer to cover more cases
January 24, 2006 - Mary
o Re-organization of Code_selection modules & directories
The physical implementations for the algebraic operators are (more
or less) organized according to the groups in the ICDE compiler
paper. The operators with multiple or complex implementations,
e.g., Join, GroupBy, etc., are in their own modules. The
operators with related, simple implementations are grouped
together.
There is room for more improvement/refinement here, but I think
this re-org meets our current needs.
In code_selection/code:
Code_functional_ops : Let, If, Var
Code_builtin_fn : BuiltinFn, ConvertSimple, PromoteNumeric, UnsafePromote
Code_user_defined_fn: UserDefinedFn
Code_overloaded_fn : OverloadedFn
Code_constructors : All Node constructors, Scalar, Seq, Empty, Error
Code_type_operators : Treat, Validate, Cast, Castable
Code_typeswitch : Typeswitch
Code_item_tuple : Some, Every, MapToItem, MapFromItem
Code_tuple : Input, Create, Access, Concat, Product, Select, Materialize
Code_join : Join, LeftOuterJoin
Code_map : Map, MapIndex, MapIndexStep, MapConcat, OuterMapConcat,
NullMap
Code_group_order : GroupBy, OrderBy
Code_update : Copy, Delete, Detach, Insert, Rename, Replace, Snap
Code_parse : Parse
Code_treejoin : TreeJoin
Code_tuple_tree_pattern : TupleTreePattern
Code_prune : Prune
Code_nestedloop : Distinct
Code_keyref : KeyRef
Utility functions, grouped by the operators they support, are in Code_util_*.
January 23, 2006 - Chris
o Shredded Changes
- Fixed main memory btree and record bugs relating to cursor semantic
o Aligned with BDB's semantic for corner cases
- Added replace to shredded datamodel.
o Only limited testing of shredmm:// (main memory shredded version).
January 23, 2006 - Jerome
o Constructors:
- Fixed another bug in handling of whitespace in
processing-instruction constructors.
- Fixed handling of boundary whitespace: now defined as per the
specification, done cleanly at normalization time without
relying on strange empty text nodes, and dealing character
references properly.
o F&O:
- Fixed bug in fn:substring-before, in case there is no match.
- Fixed error in fn:matches, fn:replace, fn:tokenize, when
dealing with invalid regular expressions.
- Added consistency check fn:replace, for which the replacement
text shouldn't contain a standalone '\' or a '$' not followed
by a digit.
- Fixed bug in fn:compare, not handling empty sequence properly.
- Fixed fn:codepoints-to-string(), to handle the proper range of
character sets.
o Parsing:
- Implemented the proper normalization of end of lines in string
parsing.
o Testing:
- Fixed bug in test harness, not handling non-deterministic
queries where both a result and an error are possible.
January 23, 2006 - Philippe
o Optimization_judge:
- Fixed bug in order_dup_matters function caused
by structural/physical equality issue
o Optimization_rewrite:
- Fixed a structural/physical equality bug in
nested_null_index rewrite
This was causing the tests fn-node-name-2.xq and
last-10.xq of the XQTS to fail under weak typing.
January 19, 2006 - Mary
NB: Note file name changes
o TupleTreePattern code moved to
code_selection/code/code_tuple_tree_pattern.ml*
o TwigJoin code moved to code_selection/code/code_tj_*stack.ml*
o NestedLoop code moved to code_selection/code/code_nestedloop.ml*
January 19, 2006 - Mary
o Started changes to support Physical Typing phase that precedes
Code Selection
- Added code_selection/code sub-directory
For each algebraic operator OP, there is/will be a module that
contains all its physical implementations in
code_selection/code/code_OP.ml* Any code in
cs_code_selection_expr and cs_code that is specific to OP
is/will be moved into code_OP.ml.
- Xquery_physical_algebra_ast.mli : names of physical
operators.
January 19, 2006 - Philippe
o Added functionality for statically determining the
relevance of order (optimization_judge)
o Fixed some rewrite rules to take order-relevance of
on operator's context into account
January 18, 2006 - Philippe
o Twig Joins:
- fixed a bug related to subsequent evaluations of the same
tree patterns
- added optimized cursor navigation by using B-Tree lookups
for skipping nodes
o Optimization:
- added code that detects whether order/duplicates matter for
a certain operator. This avoid the wrongful rewriting of
FLWORS in tree patterns
o Fixed a bug in dynamic_stack.top
o Added a function to jump to a certain node for a twigjoin source
in physical_dm_name_index
January 17, 2006 - Jerome
o Constructors:
- Fixed bug in lexing of single-quoted strings containing
character references.
- Fixed bug in document loading, wrongly discaring text events
containing the empty string, resulting from text node
constructors containing the empty.
- Fixed computed text constructors to deal properly with the
empty sequence as input. Created
fs:item-sequence-to-untypedAtomic-optional special function
which propagates the empty sequence properly instead of
returning an empty string (which now results in an actual text
node).
- Fixed bug in handling of whitespace in processing-instruction
constructors.
- Fixed element constructors and element nodes in the data model
to propagate base_uri properly from the context.
o F&O:
- Fixed bug in EBV (effective boolean value), not returning an
error for multiple items the first of which is not a node.
- Fixed fn:base-uri() to normalize to fn:base-uri(.)
- Fixed fn:concat to cast atomic values to xs:string.
- Fixed fn:normalize-space() to normalize to
fn:normalize-space(.)
- Implemented support for fn:normalized-unicode().
- Implemented support for fn:encode-for-uri().
o Data Model:
- Fixed bug in base_uri method, not catching the end of stream
accessing xml:baseuri attributes properly.
o Base:
- Added ./base/glx_camomile to encapsulate some of the calls to
Camomile.
January 13, 2006 - Jerome
o Query plans I/O:
- Removed obsolete algebra printer from ./planio.
o Dates and time:
- Fixed all the operators on dates, which should rely on
dateTimes to deal with starting instants and timezones
properly.
- Fixed comparison operators between dates, which was using a
non-tail recursive function which was not scaling for large
dates.
- Fixed treatment of leap years, which are not only computed
starting 1582. Also XQuery uses a proleptic Gregorian calendar
(http://en.wikipedia.org/wiki/Proleptic_Gregorian_Calendar),
for which AD 4 and AD 8 are indeed leap years.
- Fixed bug in treatment of dates, there is no year zero, the
year before year one is year -1.
- Fixed bug in printing of negative years.
- Fixed implementation of subtraction of duration from a date,
very buggy.
- Fixed arithmetic operators on times to preserve the absence of
timezones properly.
- Fixed arithmetic operators on times to deal with time overflow
properly.
- Added support for gregorian types: xs:gYearMonth, xs:gYear,
xs:gMonthDay, xs:gDay, xs:gMonth.
o QNames:
- Fixed bug in equality for QNames, which should ignore the
prefix.
o Constructors:
- Provided proper XQuery error message when parsing a character
reference which is out of range. (Was breaking the test suite).
- Implemented the proper attribute value normalization for
attribute constructors (normalizing new lines, whitespaces,
etc.).
- Implemented the proper xml:id attribute extra value
normalization.
o Casting:
- Fixed casting of xs:decimal to xs:integer to truncate the
decimal part properly.
- Implemented casting of xs:float and xs:double to xs:integer.
- Implemented casting of xs:boolean to numeric values.
o Syntax:
- Fixed parsing bug for xquery declaration in the prolog.
o Testing:
- Fixed test harness to handle test-cases in non-leaf parts of
the test hierarchy properly.
January 12, 2006 - Philippe
o Fixed optimization_rewrite to deal with tree patterns
starting from variable references in a orderly fashion
January 11, 2006 - Michael
o Purely syntactical change:
Changed logical_algebra_types to contain path_annotation;
affected modules (syntax, only):
Logical_algebra_types,
Xquery_algebra_ast_util, Xquery_algebra_ast_annotation_util,
Compile_expr, Compile_util, Compile_top,
Optimization_rewrite,
Compile_context, Code_selection_context
Excised a function from Compile_context to its own module
Compile_context_util in order to resolve a cyclic dependency
and isolate the transition from generic to logical types.
January 11, 2006 - Philippe
o More small changes to align Twig Join code better with the paper
January 11, 2006 - Philippe
o Small change to align Twig Join code better with the paper
January 10, 2006 - Mary & Jerome
**** Began re-organization of Code_selection module to support
physical types and type-dependent code selection.
o Xquery_algebra_ast_annotation:
Added physical_type to align with physical_value
o Added new subdirectory code_selection/code
Do "cvs update -d"!
o Cs_code_selection_expr :
Started to move operator-specific code into individual modules in
code_selection/code.
E.g., AOEParse => code_selection/code/code_parse
AOETreeJoin => code_selection/code/code_treejoin
January 6, 2006 - Jerome
o Testing:
- Removed obsolete config files for XQueryUnit.
January 6, 2006 - Mary
o Fixed yet another bug introduced in Monitor on December 9 :
when nested document loads occured in evaluation phase, did not
record actual evaluation time that followed doc load
January 6, 2006 - Jerome
o Index support:
- Fixed bug in that indices should be allocated before doing code
selection for global variables. [Bug reported by Philippe.]
January 6, 2006 - Philippe
o Xquery_algebra_ast_util: fixed a bug related to restoring
output fields of a treepattern
o Some fixes / fine-tunings to the twigstack implementation
January 4, 2006 - Jerome
o Testing:
- Added the standard configuration flags to galax-test.
o Configuration management:
- Separated "optimization options" into: "logical optimization"
options, "code selection options", and "runtime" options.
- Factorized the code which creates sets of options, avoiding
code duplication (and the corresponding possible
misalignments).
- Changed the following configuration parameters:
-execute-normalized-expr
-execute-logical-plan
-execute-physical-plan
to -execute [standard/normalized/logical/physical]
with standard XQuery 1.0 syntax being the default.
- Changed the following configuration parameters:
-print-error-code on/off
to -print-error-kind [standard/code]
- Removed obsolete update optimization flags:
-update-hack-oi
-update-hack-bi
-update-hack-sbi
- Put back a flag to print query plan in XML:
-print-plan-kind [standard/xml]
o Query plans I/O:
- Hooked back the query plan XML printer to the processing model.
- Fixed bug in printing of plans with snap operations.
January 4, 2006 - Philippe
o Twig joins are now in place. They need more testing before
benchmarking can start.
o Bugfix in AST utility function for treepatterns
(get_sub_node_indices)
December 29, 2005 - Jerome
o Arithmetics:
- Removed native support for xs:int, raising numeric overflow
problems.
o Date and time:
- Fixed canonical lexical value for xdt:yearMonthDuration and
xdt:dayTimeDuration.
- Added missing inequalities for date and time types.
- Fixed division between two xdt:yearMonthDurations to rely on
the proper integer division.
- Fixed bugs in xdt:dayTimeDurations division.
o F&O:
- Fixed many bugs in fn:number().
December 28, 2005 - Mary
o Fixed bug introduced in Monitor on December 9 : double reporting
of document load times.
December 22, 2005 - Jerome
o XML Schema:
- Added preliminary support for derivation by extension. This has
been tested on complex types with simple content derived from
simple type (notably used heavily to support elements with
attributes and simple content). Needs more testing.
o XPath:
- Fixed bug in handling of following-sibling and
preceding-sibling axis.
o Atomic types:
- Fixed equality for the base64Binary and hexBinary types.
December 22, 2005 - Philippe
o Pathstack code cleanup
December 20, 2005 - Philippe
o Code selection: fixed a bug in nested loop style
evaluation of treepatterns.
o Streamlined pathstack algorithm some more. Added
in-place dulicate elimination to pathstack.
December 20, 2005 - Philippe
o Code selection:
- Removed some inefficiencies in pathstack.
- split up twigjoins in three modules:
pathstack, twigstack and a common part
o Optimization:
- Added a rewrite rule to clean up the residual
sbdo optimization around treepatterns.
o AST: Added a field to twig nodes indicating wether or not
the output of it's field should be restored. This is used
by twig joins to determine what part of the matching
patterns should be restored. I need to keep the field names
because nested loop evaluation uses these names as dot-fields.
December 15, 2005 - Jerome
o Physical Data Model. Implemented support for XML streams inside
tuple fields:
- Removed unnecessary usage of xml_value in the code (since now
it is either a materialized or a streamed value, the various
code bits should distinguish between those).
- New physical data model types are all grouped in the same
interface: ./physicaldm/physical_types.mli
- table materialization forces materialization of the tuple
fields.
NOTE: allowing more value in tuple fields has revealed how little
understanding we have of even item-cursor query plans. I had to
change the implementation of built-in functions to operate on lists
for now. This is bothering, but not surprising, hopefully we can
address that part of query planning as part of the large SAX
vs. materialized question.
Things to do:
(1) reorganize the code more consistently per physical type (e.g.,
SAX physical operators on one side, materialized operators on the
other side, etc.) another approach is to have a file per algebraic
operators with variants at the physical level.
(2) clean up of physical signature (used in coercion, code, etc.)
(3) more testing is necessary. This passes the current test-suite
and the usecases.
December 15, 2005 - Philippe
o Tweaked name index loading so that both the pre-order
and post-order b-trees are bulk-loaded in order, eliminating
the need for sorting the b-trees during finalization.
December 15, 2005 - Philippe
o Removing Twig index (Will switch to more efficient
name index instead)
December 13, 2005 - Mary
o Procmod_phases
- Fixed nasty little bug in which _all_ phases were curried and not
evaluated/forced until serialization!
o Testing
- Added Construct test-group bugs to regress/knownbugs.xml & bugzilla
December 13, 2005 - Philippe
o Added support for Twig Join indices.
All over the place.
December 13, 2005 - Jerome
o Alignment:
- Fixed bug in support for binary operators, not checking
properly that the operands are either a node or the empty
sequence (e.g., () is 100 was succeeding).
- Fixed normalization of processing instructions, broken (using
wrong Regexp to check for '?>' content.
- Fixed bug in fn:node-name(), can now take the empty sequence as
input.
- Implemented fn:prefix-from-QName().
- Re-implemented fn:namespace-uri-from-QName().
- Fixed serialization/printing of values of type xs:QName.
o Testing:
- Added support for handling bugs located in the test
suite. Those are flagged as 'inspect' instead of doing a real
comparison with the test-suite expected result.
December 9, 2005 - Mary
o Implemented weak typing.
To use: -static-typing on -typing weak
In usecases/Makefile: change to TYPE_KIND=weak. Default is "none".
Required changes to:
normalization/overloaded.ml
rewriting/rewriting_rules_typing.ml
schema/schema_judge.ml
typing/typing_call.ml
typing/typing_call.mli
typing/typing_errors.ml
typing/typing_expr.ml
typing/typing_fn.ml
typing/typing_util.ml
usecases/Makefile
Weak typing tripped bug in NS Uscase, which needs to be reported:
usecases/ns_context.xq
usecases/ns_usecase.xq
o Changed config/Makefile.gen to use camomileunpack.cma (no
'Camomile.' package prefix) instead of camomile.cma ('Camomile.'
prefix) to accommodate both O'Caml 3.08 and 3.09.
code_selection/cs_code_fn.ml
config/Makefile.gen
o Fixed bug in printing of string literals
ast/xquery_common_ast.ml
ast/xquery_common_ast.mli
ast_printer/print_common.ml
o Fixed bug in Galax API -- materialization function not wrapped in monitor
galapi/caml_api/galax.ml
o Fixed bug in Monitor
- Nested document loads not reported in results.
monitor/monitor.ml
monitor/monitor.mli
Analysis time not wrapped in procmod/procmod_phases.ml
December 9, 2005 - Jerome
o Alignment:
- Fixed bug in serialization of decimal values without
significant digit after the decimal point.
- Fixed several bug in serialization of xs:float and
xs:double. (not handling the number of digits after the decimal
point properly).
- Fixed bug in fn:round over xs:decimal.
- Implemented fn:round-half-to-even.
- Added proper exception for division by zero in the xs:integer
and xs:decimal cases.
- Fixed idiv support, just completely wrong again...
- Fixed mod support, now aligned with idiv properly.
o Testing:
- Added support for multiple output files (i.e., multiple
possible results for cases where part of the semantics is
implementation-defined or implementation-dependant).
December 8, 2005 - Philippe
o Bugfix #1: Restricted inlining of TupleTreePatterns to
only one selecting child twig.
o Bugfix #2: Removed infinite looping from the
map_concat_pushdown rewrite rule. Apparently, when a
MapConcat was pushed down another MapConcat, the optimizer
ended up switching around the two MapConcats eternally.
Fixed this by restricting the rewrite to non-MapConcat-ops.
December 7, 2005 - Philippe
o Bugfix in compile_expr.compile_flwor
whenever dot is explicitly used (e.g. step1[./step2]), this may
result in a core expression of the form
let $dot := $dot return TreeJoin[axis::nt]($dot)
If this happens, you need to make sure to compile the independant
subexpression of the let before hiding the corresponding dot-variable
field from the compilation context. This did not happen, but is now
fixed
o Added a small rule to deal with the returned let-bindings in
compiled path expressions in optimization_rewrite.
December 4, 2005 - Jerome
o Data model reorg:
- Moved support for items from ./dm to ./physicaldm. This is to
prepare for implementing support for item sequences (including
cursors) inside tuples.
- Removed dependency of AST over atomic types.
- Turned atomic values into 'protovalues' in the AST represented
directly as atomic_type.
- Added special core expressions and algebraic operators for
fs:functions which uses protovalues (fs:convert-simple-operand,
fs:promote-to-numeric, fs:unsafe-promote-to-numeric)
- Propagated the change throughout.
- Move atomic values support for dm/atomic (from datatypes).
NOTE: I haven't fully checked that the new support for protovalues
does not break some of the optimizations (either in rewritings or
optim/joins). This will require Mary/Chris's review.
o Derived atomic types:
- Added support for type annotations on atomic values in the data
model.
- Fixed casting and atomic value construction to take a type name
as input.
- Fixed serialization to print the proper type constructor based
on type annotations.
NOTE: this does not check for facets yet! only supports the type
name hierarchy. Allowing to construct, and process atomic values
derived from primitive atomic types (e.g., xs:short("42").
o Alignment:
- Fixed fn:boolean, wrong for xdt:untypedAtomic(""), and
xs:double("nan").
December 02, 2005 - Philippe
o optimization: clean up of some rules + making some rules more
robust
o rewriting: making loop fusion more robust and adding loop merging
rewrite (makes picking up chained predicates easier at the
algebraic level)
December 01, 2005 - Michael
o /projection:
Added modules Alg_path_struct, alg_path_structutil,
Alg_path_analysis, Alg_analysis_context that implement
path analysis functionality over the XQuery algebra
(in analogy to the corresponding modules without 'Alg'
prefix; they still coexist).
NOTE: Algebra AST annotations are prepared,
but not yet included.
o /toplevel:
Changed Galax-project to employ the new algebra-level
path analysis instead of the old core-level analysis.
December 1, 2005 - Philippe
o Cleaned up default (nested loop) code generation for
TupleTreePatterns + added support for chained predicates
November 30, 2005 - Philippe
o cs_code_nestedloop.ml:
Added dedicated module for nested loop code generation
o Added support for loop fusion over chained predicates in
rewriting_rules_notyping
o Support for rewriting chained predicates into tree patterns in
optimization_rewrite
o Added support for merging multiple twigs at a time in
xquery_algebra_ast_util
November 25, 2005 - Philippe
o Added loop fusion rule for normalized predicates
in rewriting_rules_notyping.ml
o optimization_rewrite.ml:
- Removed nested MapTiItem rewrite
- Changed syntactical treepattern introduction to
exploit the advantages of loop-fusion, disabling
the need for a complicate 'nested MapToItem'
rewrite
NOTE: TreePatterns are now correctly picked up for
predicates when static typing is enabled
November 25, 2005 - Mary
o Fixed bug : Missing file location in error reporting.
November 25, 2005 - Mary
o Fixed bug in typing of Cast --- code clean-up introduced error.
November 23, 2005 - Philippe
o Changed some optimization rules to seamlessly interoperate with
static typing rewrites and distinct-docorder calls
o Fixed the pathstack algorithm
November 22, 2005 - Mary
o Unicode support
*** NOTE! ***
- Added Camomile Unicode library Version 0.6.2
Download Camomile from :
http://prdownloads.sourceforge.net/camomile/camomile-0.6.2.tar.bz2
Follow INSTALL instructions.
(Version 0.6.3 is fine too, but requires O'Caml 3.09. Use 0.6.2
if you are still using O'Caml 3.08)
- Changes to Makefiles for Camomile
- Implemented fn:string-to-codepoints(), fn:codepoints-to-string()
o Support for Constructors
- Numerous changes for testing XQuery Test Suite Construct test
group. Currently, passes 385/423
- Aligned normalization of computed constructor names,
processing-instructions, and comments with spec.
- New exception Error.Constructor_Error
- Propogation of namespaces in core-to-algebra compilation
- Added NCNAME to Datatypes_lexer
- Streaming_constructors: added rules for checking dynamic content
of computed processing-instruction & comment constructors
o Cast
- Added namespace environment to Cast AST nodes in Core/Algebra.
Necessary for casting strings/untyped to QNames.
o Parsing
- Aligned Constructor productions with spec
- Added item type:
document-node { element-type | schema-element-type }
o Static Typing
- Subtyping_build_regexp, Subtyping_letter: Added support for document-node types
- Typing_step: Added support for kind tests
o Usecases
- Updated output of SGML, String, XMark to align with entity ref
serialization.
November 18, 2005 - Jerome
o Compilation:
- Removed cyclic dependency between ./schema and ./dm modules.
o Processing context:
- Added support for schema location hints.
- Moved the alive_documents to the compilation context. This
removes a problematic dependency on the data model.
o Testing:
- Added support for schema import, based on locations in the
catalog.
November 17, 2005 - Philippe
o Near-completion of twig join algorithm. The algorithm
works fine, but a problem with materialization of result
tuples persists
November 16, 2005 - Jerome
o I/O:
- Fixed long-standing problem with file handles not being closed
after parsing. (Occurring in SAX parsing, and utilities used to
bulk-load files).
o Streaming:
- Fixed stream-discard operations to fully consume the stream,
hence closing the corresponding opened files...
o Testing:
- Fixed test-harness to properly lookup the source files from the
catalog.
- Implemented the "Inspect" comparison (always succeeds, and
flagged to facilitate actual inspection).
- Added hashtable lookup for source files, avoiding repeated
parsing.
- Added some printing.
o Toplevel:
- Fixed back galax-parse to the right code (wrongly committed
debugging code).
November 16, 2005 - Philippe
o Optimization
- Adjusted rewrites to deal with ddo-calls in between
XPath steps
November 16, 2005 - Philippe
o Twig Joins
- Added twig join algorithm in cs_code_twigjoin
- added some utilities in dm_name_index and
xquery_algebra_ast_util for twigjoin support
o Fixed merging op TupleTreePatterns
November 14, 2005 - Jerome
o Testing:
- Small fixes to the text comparison.
- Slight reorganization of the test harness to support a small
debugging script.
November 14, 2005 - Jerome
o F&O:
- Fixed integer division which was wrongly using idiv.
November 14, 2005 - Mary
o Static typing
- Finished implementing static typing of KindTest
- Fixed bug in Subtyping_letter -- document types not handled
correctly.
November 14, 2005 - Mary
o Static typing
- Approximating interleave (&) types with factored type until
interleave types supported in Subtyping module.
- Axis/Node-tests : Still working on kind tests
November 11, 2005 - Jerome
o Serialization:
- Fixed sequence normalization to comply with the serialization
spec.
- Fixed some dealings with entities again.
o Testing:
- Fixed the test harness to properly work with version 0.8.0 of
the test suite.
o Type support:
- Fixed top-level structures for the core schemas (removing
unnecessary complexity).
o XPath:
- Fixed bug in support for the self:: axis, introduced when
implementing the new DM API with node tests.
November 10, 2005 - Mary
NB: NUMEROUS changes for static typing & rewriting. See detailed
notes in CRAlignmentNotes.txt, checked in separately.
o Implemented static typing rules & rewriting rules for all
expressions except for step expressions, and for all builtin and
special functions.
o Streaming constructors
- Aligned dynamic semantics of streaming constructors and typing
rules with CR spec. See CRAlignmentNotes.txt.
- Aligned signature of pi_constructor w/ other nodes.
o Constructors
- Fixed normalization of computed constructors to align with fixed
constructors.
o General alignment w/ CR working draft
cs_code_fn.ml
namespace_builtin.ml
namespace_builtin.mli
o Rewriting rules
- Gutted & rewrote rewriting_rules_notyping &
rewriting_rules_typing.
- Excised all SBDO rewrite rules
o Static typing
- Changed Subtyping_letter.subname, which did not handle xs_anyType
case correctly. Need to review change with Jerome.
- Added back type intersection in
Subtyping_top.intersects_with. Used in simplification of
typeswitch.
November 4, 2005 - Mary
*** NB : Static typing still under construction ***
o Rewriting_rules_typing:
- Reinstating all the old typing rules plus new ones for fs:*
functions.
o Align dyn/static semantics of fn:boolean() with CR working draft
November 2, 2005 - Jerome
o Schema:
- More simplification of the core schema structure, preparing for
more changes on the run-time for handling types.
November 2, 2005 - Jerome
o Cleanup:
- Removed ast/xpath_treepattern module, not used.
- Removed unused pattern matching when comparing letters in DFA.
o Schema and type support:
- Fixed bug in mapping atomic types names to atomic types. (not
using proper equality).
- Changed all names in the core type AST from resolved QNames to
symbols. Removed the corresponding mapping back from symbols to
resolved QNames in the run-time.
November 2, 2005 - Mary
o Errors
Changed Error.error_with_file_location so that _original_ exception is
returned & can be matched correctly.
Working through cs_code_selection to be sure all errors are
wrapped.
o Rewriting/Procmod
- Adding rewriting_rules that depend on typing one at a time
o More on static typing
October 31, 2005 - Philippe
o Put twig join related code selection in a separate
module cs_code_twigjoin.ml(i)
October 31, 2005 - Mary
o Galaxd (Galax daemon)
A little daemon for answering distributed queries using "dxq:",
distributed query protocol in fn:doc(). Implemented by Trevor Jim
for future use.
- Added galaxd target to Makefile
- Added toplevel/galaxd.ml
o Working on Static Typing
- Align/reimplement static typing rules aligned with FS and reimplemented
* fs: special functions
* Overloaded builtin operators and fn: functions
* Builtin functions
- Cs_code_fn
* Factored out gads of boiler-plate code. More work needed to
stream-line this module
* Implemented several missing aggregation functions
October 28, 2005 - Philippe
o Added SBDO functionality inside TupleTreePattern code selection.
October 25, 2005 - Philippe
o xquery_algebra_ast.mli
added sbdo annotation to twig nodes
o xquery_algebra_ast_util.ml(i)
some pattern manipulation and checking
utilities
o optimization_judge.ml(i)
factored out some judgements
o optimization_rewrite.ml
major reorganization of the XPath related rewrites
o processing_context.ml
changed default sbdo behavior to SBDO_Preserve
October 19, 2005 - Philippe
o Changed the AOETupleTreePattern operator
to support all axes
October 16, 2005 - Chris
o Bug in materialize annotations
- incorrectly determining safe/unsafe w.r.t materialization
October 16, 2005 - Chris
o The return of AOELet
- added to all the usual phases
- added an inlining rule in phase 6 of the optimizer
- fixed a bug in the compile context
- fixes empty iteration bug
o (untyped) predicates now have the form:
some $x in E1 satisfies
some $y in E2 satisfies
op:equal(fs:untyped($x,$y),
fs:untyped($y,$x))
October 16, 2005 - Chris
o Restoring rules about inling and phase ordering
in the optimizer
o Documenting some code
o NOT DONE: Need to restore Let in the algebra
October 14, 2005 - Jerome
o Test suite:
- Hacked query file names (added '.xq' to work with the new
catalog).
October 14, 2005 - Mary
o Native type testing
- Added processing-instruction & comment to type_lexer, xquery_type_ast,
normalization in schema_norm
- Fixed type printing in print_type_core
o Procmod_compiler
- Replaced call to exit() with an exception
** NB: PLEASE -- never call exit() directly! **
o Website
All pages refer to galax-*@research.att.com mailing lists
TODO: Still need to fix viewtarget.cgi which is broken
October 14, 2005 - Philippe
o Refactoring of the TupleTreePattern datamodel to make
twig join implementation easier and more efficient.
Ocotber 6, 2005 - Philippe
o Small fix in rewriting rules to restore the ability
to generate a streaming query plan (clean_fn_doc rule)
October 5, 2005 - Philippe
o Added support for TupleTreePatterns (i.e., a logical
tree pattern operator that consists of single
child/descendant twigs and that operates over tuples).
o Added rewrite rules for introducing TupleTreePatterns
from combination of TupleTreeJoin operators
o Added default evaluation (matching TupleTreeJoin eval)
for the TupleTreePattern operator
NOTE : TupleTreeJoins (and thus TupleTreePatterns) are
only introduced properly when evaluating
cleaned-up normalized expressions
September 27 - Philippe
o Some more tweaking of the rewrite rules + cleanup
The rules that are now used for XPath cleanup are
- Cleanup 0 - Remove redundant Concat of MapFromItem
with sequence construction
- TJ 1 - Introduce TupleTreeJoin for common steps
- TJ 2 - Introduce TupleTreeJoins for predicate steps
- Cleanup 2 - attempt to clean up MapToItem
- TJ 3 - Remove MapFromItem over MapToItem
Other rules are not used any more (at least for common
XPath expressions).
o Rule TJ A & TJ B are still used to map TupleTreeJoins
to bulk TreeJoins
September 21 - Philippe
o Rule for removing unnecessary fs:node-sequence calls
in rewrite_rules_notyping
o Added a rule for removing a MapConcat over a MapFromItem
in case of sequence construction (map_from_concat_bis)
o Moved rule for removing unnecessary MapConcats over
MapFromItem with singleton tuple access to the
TupleTreejoin rewrite phase to avoid conflict with
selection pushing
o Replaced rule for introducing TupleTreejoins in
predicate steps to work with the renewed optimizer
September 30, 2005 - Mary
o Test target mailing addresses for commit
September 18, 2005 - Chris
o Shredded Store Changes
- Added new descendant method
o controlled by a flag
-shredded-descendant-hack
- minor code cleanup
o Optimizer Changes
- added singleton products to concatenation rewrite
- added singleton MapToItem inlining.
o Small interface changes for testing harness
- additions only
August 31, 2005 - Jerome
o Alignment:
- Removed rule that functions declared in the prolog must always
have a prefix. This is not the case anymore. (this became only a
recommendation to developers).
September 11, 2005 - Chris
o Optimizer changes:
- optimizer works in mini-phases
o rules in a phase are applied to a fix point
- removed potential race condition (doc'd in code)
- optimization judgments to prolog
- added function inlining
o Algebra Utils:
- added function to do deep copies on algebra ops
o Code Cleanup
- removed unused compile_annotation.ml
- this had been moved to xquery_algebra_ast_annotation.ml
- reference from planio cleaned up
September 9, 2005 - Chris
o Added ordered determinstic semantic
- correctness required adding update_ordering
- parsers takes "snapo" instead of snap determinstic { }
because of lexer problems (will be fixed by Jerome?)
- modified all the necessary phases
o Changed annotations
- removed options from annotations
o fixes some phase ordering problems
- Added logical_algebra_types.mli for logical ops
- algebra_type.mli only contains physical op types
o Annotations (physical_annotations)
- added has_snap, has_nested_snap to annotations
o needed for determinstic ordered semantic
o resides in algebra_type.mli
o insert normalization now has explicit copy { Expr }
*******************************************************************
*** There should be a bug in the way cursors are handled in the ***
*** deterministic ordered semantic, but I haven't found a query ***
*** to trigger it. Please send along if you have one. ***
*******************************************************************
August 30, 2005 - Chris
o Optimization changes
- judgments for dealing with side-effects are now tied into
optimization.
o optimization_judge.ml(i)
- changes for optimization (these are documented in an optimization
note) which will be latex'd soon.
- optimizations semantics should not be effected without side-effects
though some rules, particular those involving tree-joins, are not
fired when side-effects are present.
o Someone more in the know about these semantics or formal
statements of them would be helpful.
o XQuery! Changes
- Modified parser/lexer to allow:
o "snap" "nondeterministc"? { Expr }
o "revalidates" are gone because of automaton
overflow in camllex
- Modified places were ast changes were necessary
o normalization, factorization, planio, compilation,
typing, algebra
- Implemented conflict detection for insert-insert
conflicts
- Modified galax_dm.ml to handle replace_value on attributes
- printer modified as well
August 28, 2005 - Chris
o Shredded_main_memory is up
- main memory version of shredded representation
- use shredmm:// - uri in the document function
o handles loading
- new (handcoded) btree.
o It has debugging support and internal tests
o Btree only pushes to the left (to avoid splits)
o Does not implement merge on delete
o Code Movement
- lots of little unnecessary shredded_jungle_* modules removed
- common modules factored into shredded/shredded_common/ directory
- Just the basic structures should be required now.
o Factorization fixes
- added judgement for side-effect free expressions
- changed factorization to use these
o Rewriting fix (can_fail)
- CECall and CEOverloadedCall did not
look at their arguments
o Added support in the store for rename
August 22, 2005 - Jerome
o Parsing:
- Removed obsolete native Galax XML lexer/parser. We only have PXP
now.
August 17, 2005 - Jerome
o AST annotations:
- Removed stream annotations from the core, not used
anymore. Removed computation of stream annotations, not called
anymore. This should be done at the algebraic level.
August 19, 2005 - Mary
o Typing_expr.ml: Added trivial typing rule for CESnap:
| CESnap ce -> type_cexpr typing_ctxt ce
o Fixed bug in typing of atomic constructors
August 17, 2005 - Mary
o Namespace_symbols.mli
- Exported
val rtype_symbol_of_unit_symbol : resolved_unit_symbol -> rtype_symbol
val ranon_symbol_of_unit_symbol : resolved_unit_symbol -> anon_symbol
August 17, 2005 - Philippe
o Added module for the tree patterns in the algebra AST
August 17, 2005 - Chris
o Syntax fix
- no need for parens inside snap
- removed print statements
August 17, 2005 - Chris
o Bug fix in snap:
- was not materializing input cursor.
August 16, 2005 - Chris
o Implementation of Deltas and Snaps
- *ESequencing -> *ESnap
- snap {Expr}
o takes only a sigle expression
o application of updates at the end of scope.
- Normalization puts a top-level "snap"
- update evaluation yield "delta"(s)
- apply in cs_code_update.ml
- *not* all update operations in place
o *ONLY LIMITED TESTING*
- so start writing queries!
August 16, 2005 - Chris
o Factorization
- Factorize_globals disabled
o This disables join pickup in
many cases.
- Factorize_iteration rewritten
- not ready to be turned on by default.
o Fixes:
- infinite loop bug on empty left outer joins
- group annotation bug
o Rewriting
- let_clause inlining off
August 15, 2005 - Jerome
o Data model clean up:
- Dm#node_type is now only defined on elements and attributes, and
returns a type annotation (non optional anymore). This
simplifies access to type annotations.
August 13, 2005 - Philippe
o Operators:
- Added a tuple-distinct operator
- Added functions to access the document order and document id
- Added u pruning operator (over tuples)
o Options:
- Added a pruning option
- Added prototype rewrite rule that introduces pruning
WARNING: This rule is triggered by the -prune option but
needs additioal work to e sound over predicates
August 12, 2005 - Mary
o C & Java APIs
Aligned C and Java APIs with change 20 July 2005 change to data model that
removed 'item' object as super-type of node and atomicValue.
C API requires that all Datamodel values be items:
galapi/c_api/galax_wrap guarantees that all values returned to C
API are wrapped as items, which enforces strong typing on C side.
August 11, 2005 - Jerome
o Another push on subtyping:
- Implemented pre-processing of types which allows proper
treatment of wildcards, the type name hierarchy and substitution
groups in subtyping.
- Reorganized subtyping directory. Split the regular expression
handling in separate sub-modules.
o Some clean-up of the indexing support:
- Fixed the dependency issue between loading, datamodel, dm,
physicaldm and index. The loading is now split in three parts
./dm/dm_load contains signatures (not implementation) for
loading function that can be used across the
system. ./physicaldm/dm_load_index contains loading operations
which also populate name indices, finally
./datamodel/galax_load contains actual loading code for the
main memory data model, and registers itself to dm_load and
dm_load_index.
August 10, 2005 - Chris
o shredded-jungle-load:
- typed/untyped load works
o Shredded_store:
- fixed bugs with typed values
- fixed bug in encoding of values
- some minor signature cleanup
August 9, 2005 - Jerome
o Fixed small bug in code selection for name indices.
August 9, 2005 - Jerome and Philippe
o Hooked up the code for index building together.
- Added dm/dm_name_index module
o Fixed bug in compilation which was only creating the Parse
operator call when streaming is on.
August 8, 2005 - Jerome
o Indexing:
- Added support for index syntax, replacing the key/keyref
stuff. Allows the definition of name indices as well.
August 8, 2005 - Jerome
o XML updates:
- Updates are now first class expressions and compositional with
the rest of the language, following the proposed syntax of
XQuery!.
- Added parsing, normalization and compilation support for:
rename, detach, and copy expressions.
- Cleaned up AST/Normalization to stop distinguishing expressions
from updates. Statements are still in place as
expressions. This simplifies the code greatly.
- Copy is implemented physically just as export from DM to
stream.
- Cleaned up DM API for updates, added call for detach, different
from delete. Delete is currently implemented as a detach.
- Serious clean up of the update code in cs_code_update, used
just above the DM API. Removed all the stuff related to
'concrete' updates not necessary anymore. Calls to update
algebraic operators now directly call the corresponding DM API
methods.
August 5, 2005 - Jerome and Philippe
o Added support for name indices in the code selection context. This
can now be used during code selection for building indices during
loading and during staircase join.
August 4, 2005 - Jerome
o Not giving up on cleaning up Chris's join code :)
- Cleaned up outer-join support.
- Factored out more code in various util modules.
- Factored out the building of conditions used in both hash and
sort joins.
- Factored out code selection of predicates up to the
code_selection_expr module!!
- Fixed a couple of bugs introduced during cleanup...
August 4, 2005 - Chris
o Additions/Changes to base/
- Added Shredded_Error to the base/error.ml
- Added Register_handlers module, to deal with closing and
syncing.
o Changes to Shredded_store_sigs.mli
- Added Cursor dm wrappers for both directions (prev/next)
- Added in duplicate flags for hash tables and btrees
- Added in appropriate accessors for hash
- Aligned get_set, get_both, get_set_range, get_both_range
o This convention is now documented in the signature file
o Shredded Representation
- Added in detach semantic
- Fixed insert support (passes XQueryUnit update tests)
- Cleaned up Store signature to move loading inside
- Renumbering is in place
- Code Factored
o Toplevel
- galax-run: calls close handlers
o Added in some comments in the config/Makefiles.* about linking
August 4, 2005 - Jerome
o A bit more clean up of predicates code, as preparation for
Philippe's work tomorrow.
August 4, 2005 - Jerome
o Fixed bug in datatypes/btree bulk-loader.
o Minor clean up of some of the optimization/code_selection modules
related to predicates.
August 3, 2005 - Jerome
o Mode clean up of the main-memory Btree support for Philippe:
- Made the interface to the cs_btree_array module polymorphic in
the value stored, this still relies on the fact the that value
is a pair whose first item is an atomic value.
- Moved total order for atomic types and values into the
respective util modules in ./datatypes.
- Moved Cs_btree_array into Datatypes_btree in ./datatypes, so
this occurs before streaming.
August 3, 2005 - Jerome and Philippe
o Join again:
- More cleanup of the sort join.
- Broke the huge sort-join code into modular pieces.
- Added sort-join variant which takes a table/btree index array
as input instead of the right branch.
August 2, 2005 - Jerome
o Datamodel: clean-up of the dm:typed-value() accessor.
- Limited the use of the export_typed_value() node accessor to
element and attribute nodes only (since this is the only place
this is used).
- Fixed dm:typed-value() accessor for attributes, now looking up
the type annotation properly.
- Factorized the dm:typed-value() code for comment, text nodes
and comments in the generic DM.
TODO: Still need some more work for element nodes, notably we need
to fix the support for mixed content.
August 1, 2005 - Jerome
o Moved int32/int64/bigint conversions in Gmisc.
o Some minor fixes to the testing infrastructure.
o Fixed type coercions to impose left-to-right evaluation order.
July 29, 2005 - Mary
o Makefile:
- Reinstated byte-code targets, all except shredded-jungle-load,
which must be native code.
o examples/jungle
- Hacked the Makefile so that jungle.cmxa and all dependent
libraries are linked in correctly.
July 29, 2005 - Jerome
o Join:
First set of changes to clean up join support (ouch)...
- Factored out the "BTree" code used in the Sort join in
./code_selection/cs_btree_array
- Factorized Ridlist support in ./code_selection/cs_ridlist
July 29, 2005 - Jerome
o Testing:
- Fixed again some whitespace processing issue during 'text'
comparison for the results.
July 28, 2005 - Mary
o Makefile:
- Eliminated byte-code targets, which complicated installation of
Jungle, which depends exclusively on native-code targets
o Galapi:
- Updated examples/caml_api to align w/ new Dm APIs (item is now
union, not object)
- Changed Dm_functions to align w/ new Dm APIs
- Updated examples/jungle/ to align with new Shredded_jungle_dm
o Lots more on static typing & testing
*** TODO ***
1. Write expands_to_union_interpretation_of, which yields union type
2. Hacks for supporting xs:integer until named typing is in place:
Typing_util.ml : added a hack for xs:integer in can_be_promoted_to
Schema_builtin.ml : added xs:integer to xdt_anyAtomicType_decl
added cxtype_integer to cxtype_atomic and cxtype_numeric
3. In Cs_code, need to review dynamic lookup of overloaded
functions and value promotion. Make sure it coincides with
static rules.
4. Critical subtyping checks:
t <: item()
July 28, 2005 - Philippe
o Rewrite rules
- Added rewriting rules that remove most of the clutter in
compiled path expressions.
- Fixed many bugs in the other rewrite rules.
o Command line options for XPath evaluation
- Replaced the '-treejoin' option with '-treejoin-log' and
'-treejoin-phys' to control physical and logical operators
separately.
o Changed CEForwardAxis and CEReverseAxis to operate over arbitrary
variable names instead of only the context item glx:dot.
o Fixed SBDO bug (bugzilla #36)
July 28, 2005 - Jerome
o Casting: Made several fixes to casting of numeric values.
- Fixed precision lost when casting float/double to decimal.
- Now calls the proper serialization operation when casting
float/double to string.
- Make disctinction between -0 and 0 when casting float/double to
string.
- Fixed several issues with precision when casting negative float/double
to string.
- Fixed bug in extraction of exponent during casting of
float/double to string.
- Fixed serialization of NaN, due to wrong NaN comparison.
o Literals:
- Fixed handling of character reference and predefined entity
references in string literals.
o Datatypes:
- Now relies on Int32, which gives the correct upper and lower
bounds for xs:int.
July 25, 2005 - Chris
o Other Changes
- Made string pool contents public
(i.e. exposed the triples in base/pool and namespaces)
o Shredded Changes
- Design changes
o Nodeids used instead of preorders
- Internal/External ids now used
o Start of renumbering and module for inserts
o XPath pushed into datamodel
o Functors cleaned up in the store
o Multiple documents can be opened in the store
- New Features
o Datamodel has nodetest
o Comments and PIs are now stored
o Validated documents (typed loading)
- Performance Changes
o IDL fixes
- copies removed (flags -> enums)
- fixed interfaces for cursors
o updated code appropriately
o EQNames stored (versus triples)
- Fixes in compilation
- Updates are completely excised in shredded
July 25, 2005 - Philippe
o Optimization
- Selection pushing rewrite destroyed a rule that is supposed to introduce
the TupleTreeJoin. Simply reordering the rules fixes this.
July 22, 2005 - Jerome
o Testing:
- Fixed testing output to compy to the W3C test suite result
descriptions guidelines, and the corresponding XML schema.
- Fixed bugs support to report when a bug seems to be fixed!
- Made text comparisons even more permissive, removing leading
and trailing whitespace, to account for the variations found in
some test results.
July 22, 2005 - Mary
o Xquery core AST & Normalization
- Changed all occurrences of (csequencetype) to (csequencetype *
cxtype) so that all normalization of exprs and types is
contained in Normalization module.
*** Work-in-progress ***
o Typing modules
- All static typing rules in place, but utterly untested
- Typing_util :
[FS Section 7.2.6] data_on
[FS Section 8.5.1] can_be_promoted_to
[FS 8.6.1 Elements in validation mode]
- Typing_step : rules for typing step expressions
[FS Section 8.2] Judgments for step expressions and filtering
o Schema modules
Slight reorganization
Schema_builtin : built-in types only
Schema_util : functions for building types
Schema_judge : ALL judgments from FS Section 8.1
Some of these should probably move to a typing_judge module,
but they're all in one place for easier debugging.
July 21, 2005 - Jerome
o XML Schema:
- Fixed long-time missing feature in schema import:
<xs:attribute name="foo"/> now works
(= <xs:attribute name="foo" type="xs:anySimpleType"/>)
<xs:element name="foo"/> now works
(= <xs:attribute name="foo" type="xs:anyType"/>)
July 20, 2005 - Jerome
o Datamodel:
- Semi-serious reorganization of the DM APIs. The items are now
back to a union type, between atomic values and nodes. The
node hierarchy is now independant from the atomic values
hierarchy.
- Provided a built-in implementation of
descendant/descendant-or-self/ancestor/ancestor-or-self at the
generic level. This can be overridden by a specific
implementation.
- Changed the data model node API so that each methods takes an
optional pair of nodetest with a schema (used as context to
check type tests).
o General code organization:
- Fixed numerous dependency issues, and compilation ordering
issues. As a result:
Created a new directory ./dm/base which contains some basic
operations used in several other part of the data model,
including streams.
Moved XML parsing back to the ./streaming directory.
Moved DTD import to the ./schema directory
Moved atomic type hierarchy to the ./datatypes directory.
*** TODO: THE SHREDDED DATA MODEL DOES NOT HANDLE NODETESTS PROPERLY!
July 19, 2005 -- Philippe
o ast/
xquery_algebra_ast.mli
xquery_algebra_ast_annotation.ml
- Changed the signature of the TupleTreeJoin to
"TupleTreeJoin (inv, outv, axis, nt)"
The TupleTreeJoin behaves like a MapConcat. The axis/nt
is evaluated for every item bound to the field denoted
by inv. The result is appended to the tuples in the field
out_v.
- Fixed the annotations so that the TupleTreeJoin correctly
reports that it accesses the tuple field out_v. This fixes
the problem with the erroneous introduction of the natural
join over TupleTreeJoins inside predicates.
o ast_printer/print_xquery_algebra.ml
- Improved pretty printing for TreeJoin and TupleTreeJoin.
o code_selection/
cs_code.ml, cs_code.mli, cs_code_selection_expr.ml
- Added default code selection for the TupleTreeJoin.
o compile/
compile_expr.ml
- Moved the introduction of the TreeJoin into the algebraic
rewrite phase. The "-treejoin allow" command line switch now
triggers a rewrite rule that has the same effect.
o optimization/
optimization_rewrite.mli, optimization_top.ml, optimization_top.mli
- Added rewriting rules that introduce bulk TupleTreeJoin operators
into compiled XPath expressions.
o rewriting/rewriting_rules_notyping.ml
- Fixed Bugzilla bug number 36 -- related to a buggy sbdo-related
rewrite rule. The rewrite rule "eliminate_axis_ddo_call" has been
diabled.
July 14, 2005 - Jerome
o Updates:
- Fixed node identity bug in the main memory update
implementation. [Introduced when putting postorder back in
place].
July 14, 2005 - Jerome
o Subtyping:
- Fixed one more bug in DFA negation (missing transitions for the
special final state).
July 13, 2005 - Jerome
o Testing:
- Made the test harness configurable. It can now support multiple
testing units (e.g., W3C tests, XQueryUnit test), assuming each
test unit follows the same structure as the W3C test suite.
- How to use:
(1) download and install the W3C XML Query test suite.
(2) edit the ./regress/testconfig.xml file appropriately
(3) Run the tests using make test-suite
(this runs the command line ./galax-regress regress/testconfig.xml)
- TODO:
- perform more tests
- provide better error messages when something goes wrong
(e.g., in the case of a wrong configuration)
- compare error codes properly (the error code is ignored for
now, until Galax can generate conformant error codes).
July 13, 2005 - Mary
o Static Typing
- Started re-implementation of static typing
Notes:
- We're missing sub-typing on scalar types.
- We don't do constructor-mode preserve ; only strip
July 12, 2005 - Jerome
o Testing:
- Very first version of test harness is operational. It is
located in ./regress.
NOTES:
-- You still have to set up parameters in the script itself
(see the Config section). Goal is to replace this by the
./regress/testconfig.xml file.
-- The file ./regress/knownbugs.xml is used to list bugs in
bugzilla and the corresponding test cases which trigger the
corresponding bug.
-- The test harness requires a copy of the W3C test-suite. (See
internal W3C XML query home page).
-- You can execute the tests by running 'make test-suite' in
main galax directory.
July 12, 2005 - Jerome
o Static typing:
- Added hooks to parse and normalization content models, useful
to test subtyping in isolation.
- Fixed bug in type simplification: was removing non-none types
from unions instead of removing none types.
- Fixed pretty-printing of NFA's and DFA's.
o Subtyping:
- FIXED OLDEST GALAX BUG EVER:
Negation for deterministic automatas was missing some final
states (when the original automata does not have a transition
for a letter, which is a short-cut for a sinc state). This was
breaking subtyping for examples like (a*,b) <: (a+,b).
According to the changelog, the last time this code was touched
was July 2001. :-( or :-) ?
- Moved negation outside of the DFA module since it needs to
create a new state, and that is done on integer states only for
now.
TODO:
- Add support for named typing. Notably, there is no support for
subtyping of atomic types.
July 11, 2005 - Jerome
o Constructors, alignment and bug fixes:
- Now element node constructors properly extract the content of
document nodes.
- Now document node constructors properly extract the content of
document nodes, reject attribute nodes, and perform the right
kind of erasure.
o Streaming: Small reorganization of the streaming modules.
- Created a streaming_constructor module which contains
operations for constructing new nodes. Move corresponding code
from Stream_ops and Code_util.
- Renamed Sax_types into Streaming_types, and consolidated
utilities in Streaming_util.
o Parsing:
- Bug fix: Comments and PIs were not returned by the parser!!!
o Base:
- Added netstring Netbuffers as a new kind of Galax I/O.
- Fixed Gmisc.load_file to use Netbuffer, much more efficient.
o Testing:
- First step toward a simple test harness for W3C test
suite. Still work in progress.
July 7, 2005 - Jerome and Philippe
- Compilation:
o Fixed bug in TreeJoin generation when context item is a global
variable (e.g., external variable).
o Fixed the default evaluation code for TreeJoin to align with
the previous evaluation code for forward and reverse axis.
o Fixed bug in step evaluation when the context item is an
atomic value, now is raising the proper type error.
o Removed algebraic operators for Let, ForwardStep, ReverseStep,
removed corresponding printing, code selection, rewritings,
and actual evaluation code.
o Removed hack that Michael introduced to merge sbdo calls
inside treeJoins. ISSUE: is that preventing streaming in
certain cases?
July 6, 2005 - Philippe
- Compilation:
o Changed compilation of step expressions in compile_cexpr.ml to
use TreeJoin operator instead of AOEForwardAxis and
AOEReverseAxis. This gets rid of the AOELet-hack.
TODO: remove AOELet related material and verify that there
is actually always a #dot field in the tuples on which
the TreeJoin operates.
July 6, 2005 - Philippe & Jerome
- Streaming:
o Removed call to Michael's stream analysis code in
factorization.
July 6, 2005 - Philippe & Jerome
- Streaming:
o Changed compilation of parsing calls to be consistent at the
logical level by introducing the logical operator AOEParse.
o Moved decision about streaming vs. materializing parsing to
the code selection level.
WARNING: the latter introdices a bug. When '-treejoin allow' is
used, the parsing always happens in a streaming fashion, which
generated wrong results when streaming is not applicable.
o TODO: remove Michael's code from factorization
July 6, 2005 - Chris
o Jungle Changes:
- By default Jungle uses the 4.3 Version now
o There are instructions on how to use 4.1 as well
in tools/Jungle/Notes
- Jungle no longer deals over strings (char arrays instead)
o allows idl to be compiled again
- All get operations return None when not found instead of
throwing exceptions - except for "_unsafe" variants.
- Cursor operations for "getall"
- Changed record layout
o Shredded
- Visible Changes
o new uri jungleshred://
o toplevel: shredded-jungle-store to shred xml documents
o new directories: shredded, shredded/shredded_jungle,
shredded/shredded_main_memory/
- Internals
o shredded_dm.ml: A functor that given a store provides a datamodel
o shredded_store.ml : Given a collection of (typed) indexes,
provides a store.
o shredded_load.ml: A functor that given a store, provides loading code.
o There are registration functors as well
- Implementation
o shredded/shredded_jungle, communicate with the new jungle store
o New children index (for getall)
July 6, 2005 - Philippe
- Fixed slash-slash rewrting rule to rewrite occurences of steps
as follows:
o descendant-or-self::node()/child::nt -> descendant::nt
o descendant-or-self::node()/descendant::nt -> descendant::nt
o descendant-or-self::node()/descendant-or-self::nt -> descendant-or-self::nt
o descendant-or-self::node()/self::nt -> descendant-or-self::nt
July 5, 2005 - Jerome
o Processing model:
- Added a pre-processing phase for static analysis before each
processing phase. The new architecture looks like the
following:
Pre-normalization -> Normalization
(Nothing)
Pre-rewriting -> Rewriting
(Typing + SBDO)
Pre-factorization -> Factorization
(Freevars)
Pre-compilation -> Compilation
(Nothing)
Pre-optimization -> Optimization
(Nothing)
Pre-codeselection -> Codeselection
(Nothing)
- Moved the processing model data structures in
./procmod_types.mli
- Factorized many of the processing model code to avoid code
duplication and inconsistencies in the way each phase is
processed.
- Fixes many inconsistencies in the various interfaces uses for
the top-level operations used in the processing model. Notably:
-- now parsing uses the parsing context properly instead of
the processing context.
-- code selection now returns the ASTs as well as the
compilation context.
July 1, 2005 - Mary
o More More More Testing CVS
June 29, 2005 - Jerome
o DTD support:
- Added back support for DTDs. Hooked up PXP DTD parser
and implemented a mapping to the XQuery type system.
- Reenabled the -dtd flag in galax-parse and galax-mapschema.
o Streaming:
- Added simple diff operation over streams. We should be able to
use this to compare testing results.
June 29, 2005 - Philippe
o Reverted to an atomic execution of TreeJoin. Got rid of Michael's
messy code selection code that aggregated multiple TreeJoins into
one algorithm.
o Removed the function that was labelling the top-level stream as
entry into the tree join, which was breaking compositionality.
[Question: WHY WAS THIS NEEDED??]
*******************************
June 29, 2005 - Mary and Jerome
*******************************
Move to new CVS server: cvs-graphviz.research.att.com
*******************************
June 20, 2005 - Jerome and Philippe
o Code organization:
- Moved ./streaming/dynamic_buffer to ./base/dynamic_buffer since
it is a generic module for buffer management.
o Streaming:
- Fixed bug in composing streaming XPath operators yielding
labeled stream with stream-based constructors. Now doing the
buffering properly.
This fixes the following issues in XPath streaming:
(6) Fix constructors to deal with labeled streams (and buffer the
fragments of the streams which are labeled).
Remains to be done:
(1) recompiling and testing simple cases with Michael's existing
code (BENCHMARKING/TESTING)
(3) fix the text node bug reported by Michael (DONE)
(4) revert to an atomic evaluation of consecutive Tree joins (no
need to coalesce consecutive Tree joins)
(5) look at how to expand Michael's work for more complex cases
such as:
(7) Fix the treejoin option to be independant of factorization.
(8) Align optimization options for the command-line to be more
consistent.
(e.g., -treejoin [stream/staircase/nl]
-join [hash/nl]).
June 15, 2005 - Jerome and Philippe
o Datamodel:
- Fixed the Tree data model implementation to use only pre/post.
- Fixed data model loading to deal with stream labels, fixing the
nodeid/copying bug.
- Fixed data model loading to deal properly with pre/post.
o Streaming:
- Added ordered streams back, to support post order (which is an
additional information only on closing events, while preorder
is on opening events.
- Propagated that change back in the rest of the code.
- Removed node id information from the annotation module.
- Fixed serialization to deal with labeled streams (and buffer
the fragments of the streams which are labeled).
This fixes the following issues in XPath streaming:
(0) Change load_xml_node_sequence_from_typed_ordered_stream to
examine labels and yield in result those nodes whose
stream-label is set.
(2) fix the streaming/loading bug related to copying
Remains to be done:
(1) recompiling and testing simple cases with Michael's existing
code
(3) fix the text node bug reported by Michael
(4) revert to an atomic evaluation of consecutive Tree joins (no
need to coalesce consecutive Tree joins)
(5) look at how to expand Michael's work for more complex cases
such as:
(6) Fix constructors to deal with labeled streams (and buffer the
fragments of the streams which are labeled).
(7) Fix the treejoin option to be independant of factorization.
(8) Align optimization options for the command-line to be more
consistent.
(e.g., -treejoin [stream/staircase/nl]
-join [hash/nl]).
June 13, 2005 - Jerome
o Streaming:
- Fixed Jungle to work with the new streaming interface.
- Fixed Streaming XPath code to support other kind tests (the
document-node(a) variant is still not supported since it
requires advanced lookup in the stream which I am not sure how
to deal with).
- Factorized node tests code between the streaming XPath
evaluation and the DM evaluation. Common part of the code is
located in the new directory: ./code_util.
o Alignment:
- Implemented all the missing kind tests:
element(), element(a), schema-element(a), etc.
- Factorized the code between type matching and kind tests.
o Bug fixes:
- Fixed code selection bug for key declarations. Using the safe
variable allocation mode instead of the 'unsafe' one, which
doesn't work currently for prolog declarations.
- Fixed detection of duplicate attribute creation in element
constructors. Aligned support for detecting duplicate attributes
in queries and documents.
June 6, 2005 - Mary
o Schema_import.mlp -- More cleanup and addition of file locations.
June 5, 2005 - Mary
o Schema_import.mlp -- Erroneoulsy made changes to schema_import.ml
instead of .mlp.
June 5, 2005 - Mary
o Sax_types
Added file locations to SAX/RSAX/TSAX events. A SAX event (like
all other AST objects) now contains two parts : a descriptor and a
file location.
o Finfo
File locations produced by Pxp parser are (entity,line,column)
triples. Added new file-location kind for (entity,line,column)
o Schema import and Schema validation
Now report file locations on errors!
NB: Error handling in Schema_import is in need of restructuring.
I could use Vladimir's help on this.
June 3, 2005 - Mary
o Overhaul of errors and error reporting
--------------------------------------
Summary:
- No errors, except lexing or parsing errors, should contain file
location info.
- Top-level functions that recursively walk over ASTs catch
internal errors and re-wrap them with file location
- Avoid tramping of file locations arbitrarily throughout code and
eliminates most uses of Finfo.bogus
General principle for reporting errors:
File locations are associated with top-level expressions, which
are represented, in turn, by AST nodes, Core AST nodes, and
algebraic ops, each of which stores the top-level expression's
location.
To correlate an error with the location of a top-level expression,
each phase that recursively walks over a AST/Core AST/Algebra tree
(e.g., normalize_expr, compile_expr, rewrite_expr,
cs_code_selection) "wraps" each error generated within a recursive
call with the file location associated with the current AST/Core
AST/Algebra node that is being processed. For example, the
general structure of the top-level recursive call is:
let fi = node.file_loc
try
match node.desc with
| ... dispatch on each kind of AST/Core AST/Algebra node ...
with
| exn -> raise(Error.error_with_file_location fi exn)
Where
let error_with_file_location fi exn =
match exn with
(* Error already wrapped -- reraise it *)
| Query(Wrapped_Error(fi, msg)) -> Query(Wrapped_Error(fi, msg))
(* Otherwise, wrap it with the location of the current
AST/Core/Algebra node *)
| _ -> (Query(Wrapped_Error(fi, bprintf_error "" exn)))
This technique avoids the "tramping" of file locations throughout
arbitrary levels of code, which may or may not raise errors.
May 30, 2005 - Mary
o Errors
- Started clean-up of error handling.
- Partitioned errors into groups by processing-model phases.
*** NB *** Every phase now has a default error whose name is the
phase's name, e.g., "Compilation", "Factorization" etc.
These names should be used instead of "Internal_Error", so that
we can more easily track the source of errors.
May 26, 2005 - Mary
Integration of Streaming XPath Evaluation
-----------------------------------------
o In Sax_types, added new typed_annotated_sax_event (similar to the
annotated Core AST nodes). An annotated typed SAX event is a record that
contains a typed SAX event and an annotation field.
In new Sax_annot, there are two kinds of annotations: one for
document-order labels and one for streaming-xpath labels.
Ordered sax events are implemented as typed_annotated_sax_events
in which the document-order annotation is set to a global document order.
Labeled sax events are implemented as typed_annotated_sax_events
in which the stream-label annotation is set.
NB: We could generalize the annotations to include the node-types
as well, which would coalesce resolved streams with typed
streams.
TODO:
----
(0) Change load_xml_node_sequence_from_typed_ordered_stream to
examine labels and yield in result those nodes whose
stream-label is set.
(1) recompiling and testing simple cases with Michael's existing
code
(2) fix the streaming/loading bug related to copying (See 6)
(3) fix the text node bug reported by Michael
(4) revert to an atomic evaluation of consecutive Tree joins (no
need to coalesce consecutive Tree joins)
(5) look at how to expand Michael's work for more complex cases
such as:
declare variable $d := doc(); $d//a//b
or
let $d := doc() return $d//a//b
(6) Serialization -- move buffering code here.
May 6, 2005 - Jerome
o Bug fixes:
- Fixed code selection bug for key declarations. Using the safe
variable allocation mode instead of the 'unsafe' one, which
doesn't work currently for prolog declarations.
April 28, 2005 - Michael
o Streaming XPath evaluation
- Added new source code folder streaming_xpath. It contains both code for
evaluating XPath expressions in a streamed fashion and the additional
data flow analysis necessary to decide where streaming is applicable.
- Factorize_top
* Added stream analysis as a (last) factorization phase for XQuery
modules; adds XQuery core ast annotations
- Xquery_core_ast_annotation
* Added new field indicating wether an operator can be evaluated in a
streamed fashion or not
- Compile_expr
* Added compilation of certain FLWOR patterns into logical tree joins.
* Added compilation of certain fn:doc calls into dedicated parse stream
operators.
- Cs_code
* Provided streamed / materialized physical variants for logical tree join
- Cs_code_selection
* Selects streamed / materialized tree join code
- Top_*, Processing_context
* Added new fields that specify wether tree joins and streamed XPath
evaluation is considered during compilation
* Added new fields that specify buffering behaviour for streaming XPath
* Added support for printing a data flow graph in Graphviz dot format
- Galax-run
* Added serialization directly from a stream (without intermediate
materialization) whenever tree joins are alllowed - this is a HACK!
April 26, 2005 - Philippe
o Rewriting
- rewriting_ddo_annot.ml
Aligned the SBDO removal code with the replacement of CELet and CEFor
by FLWOR. Removed a few bugs.
April 25, 2005 - Philippe
o Rewriting
- Restored remove_fs_node_sequence rewriting rule
April 14, 2005 - Mary
o Schema validation
- Fixed bug in local element name lookup
April 14, 2005 - Jerome
o Processing model alignment:
- Renamed 'cleaning' phase to 'rewriting' phase, aligning with
papers et al.
April 13, 2005 - Mary
o XML Schema : Added support for <import>
- Parse_xquery, Norm_*_top
* Added support for Schema/Module/Service location hints
- Schema_util
* Added resolve_location_hint for Schema/Module/Service location hints
- Print_type
* Fixed bug when printing nested schemas
o Parse_io/Parse_xml
- Removed processing_context from interface to
pull_parser_from_input_spec/open_xml_stream_from_io
o Fn_error: Exposed implementation-defined Galax error type, which
contains:
(qname : item, description : item option, error-objects: item list)
o Documentation
- Various updates
TODO: Fix API Doc
April 13, 2005 - Jerome
o Bug fixes:
- Added missing lexers.
- Fixed boundary-space calls in the Caml,C,Java APIs.
April 12, 2005 - Jerome
o Toplevel:
- Removed unused namespaces serialization parameter in Top_config.
o XQuery prolog:
- Changed the prolog grammar one more time to separate
setters+other declarations according to the April 4th spec.
- Added support for default order and copy-namespaces
declarations.
o Alignment:
- Added parsing support for extension expressions with
pragmas. Extension expressions are always ignored, i.e., they
return the value in the expression following XQuery's normal
semantics.
April 4, 2005 - Jerome
o F&O:
- Fixed bug in fn:doc() function opening the same file multiple
times (Bug reported by Emiran).
April 4, 2005 - Jerome
o Added a -aggressive SBDO removal operation.
o XQuery core:
- Removed CEFor and CELet from the XQuery Core AST, now all
replaced by actual FLWOR expressions.
o XQuery algebra:
- Removed Map over items (AOEFor) which isn't used anymore. Kept
the AOELet binding which is used to bind the context item,
still.
- Removed AOEEnclosed, which is a no-op. Compilation of CEEnclosed
now is just removed from the plan.
- Renamed SepSequence to MapIndexStep, aligning with the VLDB
paper.
o Module reorganization:
- Moved ./code_selection/predicate to
./optimization/optimization_predicates.
- Removed unused ./rewriting/annotate_walker.mli file.
- Moved ./planio/algebra_printer to its natural location as
./ast_printer/print_xquery_algebra.
- Moved ./compile/compilation_annotation to its natural location
as ./ast/xquery_algebra_ast_annotation.
- Now compiling the data model and streaming support before the
ast and XQuery compilation.
- Moved the XML SAX parser into the ./parsing directory.
- Renamed ./parsing/xquery_parser.mly to
./parsing/parse_xquery.mly
March 31, 2005 - Mary
o Command-line interface
- Changed command-line interface as follows:
-var <varname>=<untypedAtomic value> : binds global variable
$varname to untypedAtomic value
-doc <varname>=<filename> : binds global variable $varname to
document in specified file
o Import schema/module
- Target of AT hint is now URI -- previously a local file name.
March 28, 2005 - Mary
o Cursor.ml
- Fixed bug in rev_list_of_cursor (reported by Philippe)
March 28, 2005 - Philippe
o Added remove_fs_node_sequence rewrite rule to the
set of standard rewrite rules in cleaning_rules_notyping
March 18, 2005 - Philippe
o Corrected the rule remove_fs_node_sequence
in cleaning_rules_notyping to work with the
new normalization
March 18, 2005 - Mary
o Union, intersect, except --
Fixed bug in code_selection/cs_code_fn : operators must sort by
document order.
*** See following remarks (also in code) ***
We should probably change the normalization of op:{union,
intersect, except} so that the SBDO operator is explicit (right
now, it is implicit in the implementation). Then if we know the
inputs are already in document order, we can use faster
sorted-merge implementations for each operator and also avoid the
explicit SBDO. These rewritings should be added to the rewriting
rules.
March 18, 2005 - Philippe
o Added two rewriting rules in cleaning_rules_notyping.ml
(1) A rule that removes all unnecessary distinct-docorder ops
that get introduced by normalizing predicate steps
(2) A rewrite rule that replaces normalized occurences of
expr1//axis::nt
where no predicate occurs and where the axis is a
forward axis, different from "attribute" into
the normalized equivalen of
expr1/descendant::nt
March 18, 2005 - Philippe
o Small fix for the sbdo optimization
NOTE: the state of declared variables in the prolog is
not correctly propagated to the SBDO optimization of
the expressions (yet)
March 17, 2005 - Philippe
o Changed annot_ddo.ml to support the new normalization rules
- cleaning/annot_ddo.ml
- normalization/norm_expr.ml
- ast/xquery_core_ast_annotation.ml(i)
o Extended rewrite rule elide_node_sequence_ddo_hack
to obtain cleaner expressions
- cleaning/cleaning_rules_notyping.ml
o Added fs:docorder-or-atomic-sequence
and fs:distinct-or-atomic-sequence
- namespace/namespace_builtin.ml(i)
March 14, 2005 - Mary
o Changed normalization of Path expressions
normalization/norm_expr
- Changed normalization of path expressions into FLWORs
- Added fs:distinct-docorder-or-atomic-sequence to check for
homogeneous sequences of nodes or atomic sequences
o Added rewriting rules for for/let Clauses
cleaning/cleaning_rules_notyping
- The rewrite rules for individual for/let clauses are not as
clean/pretty as those for for/let expressions.
o Added fs:distinct-docorder-or-atomic-sequence and
fs:node-sequence-or-atomic-sequence
** NB : SBDO rewritings have not been modified yet **
March 11, 2005 - Philippe
o Cleaning:
- Another bug fix for the duptidy automaton. On unsupported syntax
constructs, the automaton shifted into the sink state, which was
wrong because in the duptidy automaton, this implies that nodup
holds, which is not necessarily true (for instance for CESeq's,
this will cause trouble). Fixed by introducing a dummy state
that has the not-nodup property.
March 11, 2005 - Philippe
o Cleaning:
- Small bug fix, related to the use of FLWOR expressions in XPath
expressions that caused the result to be out of document order
February 23, 2005 - Jerome
o Compilation:
- Fixed bug in the tools makefiles when compiling with Jungle.
- Fixed bug in make depend in the galapi Caml Makefile (how come
we never picked it up?)
o XML Updates:
- Fixed the parent pointer bug.
- Implemented insert in document nodes.
- Move code wrappers from Cs_code to Cs_code_update
February 21, 2005 - Chris
o Factorization
- Fixed a problem with factorization of path expressions.
o Conservative approach to pulling out FLWORs.
Eventually we should relax this but requires a bit of work
o Optimization
- Added check to deal with termination if rules commute
o NOT GENERAL, PLEASE, IF YOU ADD PUSHDOWN RULES READ THE
COMMENTS IN OPTIMIZATION REWRITE.
- A cost model is one way to solve this problem.
o Top Level/Conf:
- Added -output/print-logical-rewrites flags
o uses explicit flushes in the formatters.
o Changed link order in Makefile so algebra printer
is accessible from optimization_rewrite
February 16, 2005 - Jerome
o Web site:
- Small fixes to main Web site page.
o Materialization:
- Removed hidden calls to list_of_cursor from Physical_util. All
calls should now occur in appropriate evaluation code
operations, plus a few data model operations.
- Fixed -print-materialize flag to indicate the correct size of
the materializat collection, and the origin of the call.
February 15, 2005 - Mary
o Web site & API tests
***** Galax Release 0.5.0 February 15, 2005 *****
February 15, 2005 - Jerome
o Factorization:
- TURNED IT BACK OFF!!!! :-(
February 15, 2005 - Mary
o Documentation for 0.5.0
o API Tests
- Removed base-uri() applied to document node. Currently
undefined.
o typed_value/string_value/fn:data in Dm and Datamodel
- Aligned with January WD
o Testing F&O
Cs_code_fn, Norm_expr:
- Aligned fn:substring w/ F&O
o Usecases
- Removed old -unsafe-join-hack option
February 15, 2005 - Jerome
o Monitoring:
- Added a printing operation for cursor->list materialization.
o XML parsing:
- Fixed printing of PXP error messages.
- Added error for XML document of a version different from 1.0.
o XML updates:
- Fixed parsing bug in complex updates introduced by the last fix!
February 14, 2005 - Jerome
o Compiler:
- Made sort/hash joins the default algorithm.
- Replaced -unsafe-join-hack flag by a -nested-loop-join flag
which turns all joins into nested loops.
- Put factorization back on by default.
o XML parsing:
- Made PXP's pull parser the official XML parser. The XQuery
parser is still based on the previous lexers, since we have to
have more control over how parsing is done.
- Removed all XML parser.
o DTD support:
- Removed DTD support for now. We need to re-implement the DTD to
XQuery type system mapping to work over PXP's DTD data
structure.
o XML updates:
- Grammar change: all updates start now with the update
keyword. This fixes a serious parsing bug where simple updates
where confused with a function call.
insert --> update insert
delete --> update delete
replace --> update replace
- Fixed bug in "insert after" when the update location is the last
sibling.
o Documentation:
- Some fixes to the contributor's list, release notes, and
documentation.
February 11, 2005 - Jerome
o XML parsing:
- Removed attribute content expansion in the PXP parser. Was
triggering a bug in one parsing test.
February 11, 2005 - Jerome
o MinGW port:
- Fixed several makefile so that it compiles with PXP's lexers.
February 10, 2005 - Chris
o Factorization fixes
o added test to make sure factored expressions are
side-effect/failure free
o This requires static context - this change is
propagated throughout
o Factorization no longer pulls terms out of
branches (If or TypeSwitch)
February 10, 2005 - Jerome
o XML parsing:
- Fixed bug in PXP hook for DTDs. Now works properly.
- Added ./usecases/docs/company.dtd so the company-data.xml is
well-formed.
- Removed hack to deal with missing start and end document events,
made unnecessary by the above bug fix.
- Fixed bug in PXP hook for parsing of processing instructions.
- Fixed bug in PXP hook not setting up the correct internal
encoding.
o Updates:
- Added back materialization in compilation of FLWOR expressions.
o Static typing:
- Fixed parsing bug in ./typing/typing_fn.ml.
- Added a place-holder for static typing which indicates that this
feature is disabled in that version.
- Put appropriate error messages for incomplete patterns due to
the on-going implementation.
o Toplevel:
- Aligned options for galax-parse with the other command-line
tools.
o Tests:
- Emptied obsolete ./usecases/expect directory.
- Turned makefile echoing off during testing.
- Fixed makefiles for usecases and regress.
February 10, 2005 - Mary
o Java API
- Added compilation options in JAVAOPTS to Makefile.unix
o Installation
- Removed byte-code executables from Binary distribution
They just bloat the size.
February 9, 2005 - Mary
o Testing
- Usecases and API tests now use same error messages
- Removed Makefile.release
February 8, 2005 - Jerome
o XML parsing:
- Added prototype hook to PXP's pull event parser. Note: This
seems *a lot* faster than the hand-made Galax parser and should
be much more compliant to the XML 1.0 specification.
NOTE: This feature can be turned on with [-use-pxp on] on
galax-parse and galax-run.
NOTE: There is no support for DTD's at this point.
February 8, 2005 - Mary and Jerome
o Renamed 'regress' target to 'regression'
o APIs
- Fixed API tests and examples to use imported library modules
correctly.
o Normalization & Rewriting
- Fixed bug in which rewriting was not applied to prolog
- Fixed bug in normalization in which order of variable
declarations was reversed in var_simplify applied by List.fold_left
February 8, 2005 - Mary and Jerome
o Doc & Query Parsing
Fixed nasty bug in Sax_parser and in Parse_top: must set encoding
after getting a handle on the lexing buffer.
PXP interface requires that input encoding be set explicitly after
reading the first 2 bytes of the document or after reading the XML
declaration; The encoding is necessary to populate the lex buffer
more than one character at a time. The auto-detected encoding is
chosen if "" is passed as the encoding.
February 8, 2005 - Mary and Jerome
o Code selection
Fixed bug in HashJoin and SortJoin (same as OMapConcat below)
- Fixed bug that we introduced on Feb 4. When outer join occurs
and result is empty, we now return table with one empty tuple
instead of table with no tuples.
February 8, 2005 - Chris
o Fixed bug in OMapConcat
- on empty input, it should return a place holder tuple.
This is the "outer" portion
February 7, 2005 - Mary
o API tests
- Added rules for checking API tests -- these rules disappeared
from Makefile.gen!
February 7, 2005 - Michael
o Projection:
- Path_analysis
Changed XQuery core ast pattern matching for document uri
extraction. Pattern matching now assumes being performed after core
level rewritings.
- Stream_project
Fixed treatment of a (non-empty) set of projection paths, where each
individual path is empty and has the subtree flag turned on.
Introduced testing the underlying input stream for being exhausted in
order not to query an empty environment stack for projection paths.
- Projection_context
Added val project_stream_is_empty to the interface in order to implement
the behaviour mentioned above.
- Galax-project
Changed to make use of the stream_project interface as expected, namely
to treat main modules as a unit.
Projected documents can now be output to files, instead of just printing
the projection paths.
February 7, 2005 - Mary
o Solaris Port
- Some changes to support Solaris -- still working on this
February 7, 2005 - Jerome
o Factorization:
- TURNED OFF BY DEFAULT UNTIL IT'S FULLY DEBUGGED.
o Pretty-printing:
- Recovered the proper behavior for printing statements
independantly of the XQuery prolog when compiling a whole
module.
February 7, 2005 - Jerome
o Optimization:
- It's back!
- Added optimization of statements from within the module
optimization call.
** NOTE: Why don't we do any optimization in the XQuery prolog?
** NOTE: Parsing has become impossibly slow. This might be
related to the new netstring/PXP versions we are using and
must be checked.
** NOTE: the last relational query triggers another bug in
factorization!!
o Base:
- Added a Debug module. Minimalistic, but we should start use it
consistently for debugging messages.
February 4, 2005 - Jerome
o Core AST:
- Removed obsolete usage information in let expressions. (follow
up of removing it from the algebra).
February 4, 2005 - Jerome, Mary and Michael
o Physical values:
- Pulled support for cursors and SAX token streams up to the Galax
API. (Caml only in separate functions).
- Uses physical values in the processing model now, instead of XML
values.
o Algebra and code selection:
- Removed obsolete usage information in let expressions (subsumed
by the annotation in the Algebra AST).
February 4, 2005 - Jerome, Mary and Michael
o Cleaned up physical values:
- Removed internal support for "functional" tuples, which are now
implemented as 'unit'. Renamed tuple into tuple_unit, clarifying
they do not contain any value.
- Removed all operations on lists of tuples (or materialized
tables). Only cursors of tuple_unit are now in use.
- Removed many obsolete pieces of code in:
-- execution_context: removed current tuple
-- coercion functions: removed all operations on tables and
tuple lists.
- Changed the output type of Tuple construction to return a single
tuple instead of a table.
- Removed PT_table and PT_tuple_list from physical_type in the
Algebra AST.
- Removed unused Evaluation_update module.
February 4, 2005 - Jerome
o Context:
- Turned preserving boundary whitespace, PIs and comments on by
default.
o Compilation:
- Fixed a problem in compilation of Forward and Reverse steps when
'fs:dot' is bound explicitely within a FLWOR expression.
o Core AST:
- Added operation to set an annotation for a core expression.
- Split core expression construction between fmkacexpr which
takes an annotation as input, used notably during rewritings,
and fmkcexpr which always builds and empty annotation and is used
consistently during normalization.
o Normalization:
- Removed all uses of empty_annot() during construction of the
core AST. Uses fmkcexpr instead and sets the annotation through
the proper operation instead.
- Serious clean up of Norm_util. Notably isolating core AST
creation operations and using them systematically.
- Added new normalization 'ident' which takes the AST and
generates an identical XQuery core for it. This can be triggered
using the new [-executed-normalized-expr on] flag.
** Note: This still requires some debugging **.
January 30, 2005 - Nicola
o Wsdl stub generation:
- aligned default namespace management with the last changes in
Galax
o Apache module:
- rewritten for the current Galax API, not yet fully tested
January 28, 2005 - Jerome
o XQuery pretty-printing:
- Fixed pretty-printing of schema declaration to use a semicolon
at the end("declare schema {};").
- Fixed bug in 'cast as', reversed type and expression.
- Fixed pretty-printing of QNames, using '*' not '*:*'.
o XQuery Core pretty-printing:
- Fixed pretty-printing of global variables declarations.
- Fixed bug in 'cast as', reversed type and expression.
- Fixed bug in 'treat as', reversed type and expression.
- Fixed pretty-printing of atomic type to be in the built-in xs:
namespace instead of the xsd: namespace.
- Fixed pretty-printing to print a newline after each function
declarations.
o Core bootstrapping fixes:
- Added the overloaded op: function signatures back into
pervasives.xq so that they can be called directly from the
query.
- Pretty-printing axis steps using $fs:dot/Step instead of Step.
o Normalization:
- Split normalization into separate modules:
Norm_expr for expressions
Norm_update for updates
Norm_top for prolog and top-level function
- Moved predicate_kind support in Norm_util.
January 27, 2005 - Mary
o Web demo
- Aligned with new Netcgi library
NOTE: Netcgi module requires well-formed HTML!
January 24, 2005 - Jerome
o AST:
- Cleaned up the XQuery and Core ASTs for function declarations:
duplicate output types are removed, duplicate function names in
external function removed, argument names added to external
functions, common parts pulled out from the body.
o XQuery parsing:
- Fixed bug in element constructor syntax, now allows an empty
content as in 'element a {}'.
o XQuery pretty-printing:
- Fixed pretty-printing of global variables declarations.
- Fixed pretty-printing of external function declarations.
- Fixed pretty-printing of treat as (reversed arguments).
- Fixed pretty-printing to use the correct precedence (January
2005's grammar).
- Added bootstrapping tests for the usecases (pretty prints then
executes and compares with the expected result). This is now
automatically run when doing 'make' in the usecases directory.
o XQuery Core pretty-printing:
- Complete overhaul of the pretty-printer for the XQuery core.
- Aligned pretty-printing on the XQuery one.
- Fixed pretty-printing of function calls to be a proper XQuery
function-call (i.e., removed type assertions).
- Added support for precedence.
January 23, 2005 - Jerome
*** Chris: please check the last fix. ***
o Started cleaning up and aligning the options for the command-line
tools (only galax-run and galax-compile for now).
o Changed the xqt: namespace to the err: namespace, following the
latest XQuery specs.
o Fixed parsing bug in attribute content, missing the escaped quotes
('' and "").
o Fixed serialization of character data not to escape '%',
unnecessary, except if serializing DTDs, which we never do in
Galax. NOTE: This fix should be made part of PXP. (See:
./base/encoding.ml).
o Moved compilation of the Galax Caml API before the toplevel
directory.
o Fixed a serious code selection bug related to scoping of global
variables in function declarations, tripped when a function
parameters had the same name as a global variable.
Test should return 89:
declare variable $high := 1;
declare variable $high := $high+10;
declare variable $low := 100;
declare function local:f($low,$high) { $high - $low };
local:f($high,$low)
January 19, 2005 - Mary
o galax/Makefile
- Changed reference to pr_o.cmo to $(OCAMLHOME)/camlp4/pr_o.cmo
because caml4po is broken on MacOS.
January 19, 2005 - Chris
o Fixed bug in Factorize_unique
- result of renaming was not used.
January 13, 2005 - Chris
o Factorization:
- fixed bug in factorize_globals causing function
evaluation (Bugs #7 and #8)
- added factorize_unique.ml(i)
o These are currently unnecessary but,
many parts of the code can be simplified
by using this mini-phase.
January 11, 2005 - Jerome
o Documentation:
- Fixed PXP reference to 1.1.95 required for compilation.
January 11, 2005 - Jerome
o Grammar alignment with January 2005 editor's working draft.
- Cleaned up some old grammar code: aligned non-terminal with
XQuery's document grammar, removed obsolete 'qnamekeyword'
non-terminal.
- 'where' clause now takes an expr_single.
- Fixed precedence. (many bugs fixed there)
- Replaced xmlspace declaration by boundary-space declaration.
- Separated the prolog declarations into two sets, following the
new grammar.
- Moved the default namespace declarations from the setters to the
import/namespace declarations.
January 6, 2005 - Jerome and Mary
*** WARNING: New packaging approach. Beware that this new version now
requires you to install third-party packages (pcre + ocamlnet + pxp)
before to work with Galax source. ***
o Complete new compilation approach for Galax:
- removed 'tools' pcre, netstring and pxp. The new version is
based on, and requires prior installation of the latest version
for those packages directly from their maintainer.
- Cleaned up the makefiles to avoid duplication of variables,
notably, the location for PCRE, NETSTRING, PXP is only in
./config/Makefile.gen
o URL support:
- New version of netstring (ocamlnet) and PXP fixes serious
problems with URL support, notably on windows.
- Now uses recent support from PXP and netstring, which should
provide more robust support for URLs in general.
** NOTE: someone should check the F&O functions for URIs **
o MinGW:
- Fixed compilation chain to work on MinGW. This requires serious
hacking beforehand to obtain a version of
Caml+finlib+pcre+netstring+pxp.
o MacOS:
- Fixed compilation and linking on MacOS X.
January 2, 2005 - Chris
o Changes to how fs:untyped-to-any style semantics are handled
in sort and hash joins.
o In particular, correct promotions for doubles
o Bug in bounds
o Added some comments to make conventions in the joins more clear.
o NOTE: the sgml usecase "passes" but gives an EOF Error. This was
the case before this checking - there is a line of whitespace in
the output but, not in the .expect.
December 7, 2004 - Mary
o Constructors
- Added computed processing-instruction constructors
o Makefiles/Port
- Updated several Makefiles to support Solaris (from Ben Yao)
o F&O
- Aligned fn_error w/ Oct 2004 draft; Four alternatives.
We need to decide what our implementation-specific error format
should be.
December 7, 2004 - Amelie
o Updated Projection
- Path_analysis seems ok (both regular and optim)
- Function analysis needs to be done on a per-function basis for builtin functions
- To Do: Prolog analysis
December 3, 2004 - Mary
o Alignment with Oct 2004 WDs:
13. The div operator can now be used to divide two
yearMonthDurations or two dayTimeDurations. In either case,
the result is of type xs:decimal.
15. The to operator now accepts an empty sequence as an operand,
and returns empty sequence.
December 2, 2004 - Mary
o Added -output-err to galax-parse tool
December 2, 2004 - Mary
Regression tests:
o Added -output-err to redirect error output to clean-up testing
- Replaced all occurrences of stderr by
Conf.glx_stderr/Conf.glx_err_formatter
- Do NOT use stderr directly.
o Cleaned up regress/Makefile
- Aligned with new galax-regress package (replaces xqueryunit)
- Added API tests to standard regression tests
November 24, 2004 - Chris
o Type Assertions
- Groups and Tuple Creations now have type assertions.
- Serialized in XML Query Plans.
- Printer change to reflect this.
o Usecases
- changed the expected namespace to "http://www.galaxquery.org"
in the .expect files.
November 22, 2004 - Mary
o Alignment with 0.4.0 ... again
Pervasive.xq:
- New function: glx:stem
November 20, 2004 - Chris
o Bug fixes:
- Fixed scoping bug in factorization that was causing
both reported sequence and what seemed to be a function
call bug.
o Seperated structures that were passed and returned into
different types within factorization
o Seperated out common code.
*** Are there any issues with namespaces here when
*** we pull up variables? ***
o Cursor Changes
- commented out old array and list fold code in the cursors
- put in new code with tiny amount of state that should be
faster and cleaner.
o Changed docs/xmark.xml
- changed back to Factor 0.1 from 0.25
- xmark_usecase.expect still expects this
November 15, 2004 - Jerome
o Added glx:deep-distinct() function to remove duplicate
based on deep equality. Used to run Clio queries.
November 10, 2004 - Mary
o Monitor
- All phases are now printed, even if value is 0.0
- Increased precision of elapsed time to microseconds (6 decimal digits)
- Changed memory monitor to do full_major collection (recover
unreachable blocks) instead of minor collection.
NB: *** full_major is expensive! ***
November 9, 2004 - Mary
o Monitor/Galax API
FINALLY, found bug in monitoring of eval_statments*.
Materialization of sequence was not wrapped in monitor code:
let v' = wrap_monitor proc_ctxt
Monitoring_context.Query_Evaluation_Phase list_of_sequence v in
Monitor output partitioned by : prolog, statements, and
serialization.
o Caml API
- Changed serialization to be monitored as "Serialization"
November 8, 2004 - Mary
o Caml API
- Changed serialization to be monitored as "Statement" -- lazy
evaluation means that serialization may actually be evaluating
query.
November 8, 2004 - Mary
(NB: It appears that -monitor-time on gives more accurate results
than does -monitor on, which includes memory usage)
o Galax-run
- Changed toplevel galax-run so that all calls go through Galax
API (and are therefore monitored). Removed all direct calls to
Procmod_compiler.
o C API
- Added external calls for monitoring eval_statement functions
- Added galax_procctxt_from_{compiled,prepared}_prolog
o Caml API
- Moved compile_serialized_{logical,optimized}_main_module into
Galax API so that they are monitored correctly
- Fixed bugs in which list_of_sequence was not wrapped in
monitor.
o Monitor/Monitoring_context
- Changed to support nested calls to start/end monitor
- Added stack for resumed, monitored calls
November 3, 2004 - Mary
o Normalization
- Changed normalization of treat-as and validate expressions to
propagate annotations from child expressions. XPath annotations
were not propagated to these expressions.
November 2, 2004 - Mary
o Printing options for command-line
- Fixed command-line options so that -pretty-print-module + other
printing options prints complete module.
o Rewrite/Cleaning modules
- Added ability to apply rewrite rules to prolog
- Prolog rules are selected in Procmod_phases
o Static_context/SBDO
- Static_context: (Temporary) addition of var_maxone_property
table to static_context so that maxOne properties of global
variables are accessible during rewriting.
We have to use the static context, because currently, the
rewrite context is not returned between API calls.
- Annot_ddo
If a global variable has the maxOne property, new prolog rule
adds variable to var_maxone_property of static context.
October 29, 2004 - Chris
o Code factorization
- requires free variable annotation, which is added to all the
usual places.
- Iteration Factorization rule placed in factorize_iterate.ml
o Factors expressions under for loops
- Global Variables factorization module (factorize_globals.ml)
********************************************************
PLEASE CHECK THAT THE UPDATE CEXPRS ARE WALKED CORRECTLY
FOR UPDATES
THERE ARE NOTES IN THE NEW FILES IN BOTH WALKERS
********************************************************
o New Algebraic Operation: AOESepSequence
- allows us to separate sequences in a non abusive way. Certain
rewrites with map index were not possible, because it has a
stronger numbering semantic. Namely it numbers the absolute
position of items in a stream. We don't want that all the time.
o Group By
- fixed to allow early termination of some recurring loops
o Optimizer changes
- utils and rewrites corrected and updated to deal with this new
operation, and the corresponding push-down rewrites
- added rules (and explanations) of how to deal with combinations
of outer maps and outer joins
o Updated PlanIO parser
- still outputs oddly because new namespace problem
o Bug Fixes
- Fixed bug regarding normalization of the where clause of
flower expressions
- Fixed bug about pushing down on item based fields
- Fixed bug having to do with safe and unsafe variable
settings for cursors
October 28, 2004 - Mary
o Toplevel/galax-run
o Changed calls to monitor to be more descriptive:
Galax-run.compile_standard_library_module
Galax-run.compile_main_module
Galax-run.execute_compiled_prolog
Galax-run.execute_statement
October 27, 2004 - Mary
o Monitor
Added functions for monitoring external functions :
start_monitor_external_call & end_monitor_external_call.
Usage:
start_monitor_external_call (processing_context, "descriptive string")
... program text ...
end_monitor_external_call (processing_context)
Useful for getting monitor output that covers both application and
Galax time.
o C API
Added galax_start_monitor_call & galax_end_monitoral_call to C
API.
October 26, 2004 - Avinash
+ Added an optimization rule for updates.
- Now the query plan has a Materialize (by default) for
every return clause.
- The Materialize is removed for all the queries except
of updates (to implement the snapshot semantics of updates).
- -update-hack-bi on flag would remove the Materialize from
the query plan all together (even for updates).
- The ordering of the optimization rule matters now, hence
this particular rule is placed before the rule, which removes
the MapToItem from the query plan in case of nested FLWR
expression.
October 25, 2004 - Mary
o Command-line
- Fixed misspelling of -optimization
- Added switches to usecases/ & regress/ Makefiles/scripts
October 25, 2004 - Jerome
o Processing model and optimization flags.
- Put all optimization experimental flags in ./base/conf (see the end).
- Added flags to turn on/off optimization and factorization to
the standard processing context. Removed corresponding
temporary hacks from Chris's code.
- Turned loop fusion off by default.
October 25, 2004 - Jerome
o Processing model:
- Added a new factorization processing phase, after rewriting,
and before compilation. It used to be a pre-step within
compilation, but needs to be expanded to support factorization
of updates (to support the snapshot semantics), and to support
further code factorization for optimization purposes.
Result of the factorization phase can be printed using the
usual flags:
-print-factorized-expr Print optimized expression
-output-factorized-expr Output optimized expression to file.
o Factorization:
- Added a new directory ./factorization
- Moved old ./compile/normal_form* into ./factorization
- Cleaned up a bit in there.
- Added a sub-factorization module to deal with FLWOR updates in
order to prepare the compilation in a way that facilitates the
application of the snapshot semantics.
o Updates: Moved updates as core expressions. This cleans up a lot
of existing code and simplifies maintenance. This also is a step
closer toward first-class updates in XQuery.
- Moved atomic updates to be part of the XQuery core. Added
"sequencing", i.e., two sub-expressions evaluated one after the
other, as part of the core. This is similar to the ';' in Caml,
and used in XML updates only.
- Removed previous updates AST from the core, statements are now
like expressions.
- Propagated the changes to the rest of the compiler: pretty
printing, normalization, cleaning, ddo analysis, compilation.
October 25, 2004 - Roel, Philippe
o Implemented vertical loop fusion and rule for removing
node-sequence calls (when applied to axes).
o Added new parameter loop-fusion (default = on) and changed default value
for sbdo parameter to duptidy.
October 25, 2004 - Philippe
o Even more bugfixes in the DDO code. As it appears, order by
clauses were skipped by the algo and (worse) predicate steps did
not get handled off in a proper manner, due to the passing of a
wrong boolean value
o Added the loop_fusion rule set which pushes node-sequence calls
surrounding normalized step expressions into the CEFor return
statements. After that, the loop_fusion rule itself (which will
be added later today) will apply the vertical loop fusion
technique in order to obtain pipelined execution of path
expressions where possible. This should point out the real benefit
of the sbdo optimization.
October 22, 2004 - Philippe
o Fixing small bugs in the annot-ddo module.
October 22, 2004 - Philippe
o Fixing small bugs in the annot-ddo module.
October 21, 2004 - Roel
o Fixed bug in the final state that is returned by the DDO
automata. This final state is used for the rest of the execution
of a query when a path expression is bound to a variable and
stored in the DDO symboltable.
October 20, 2004 - Roel
o Implemented the sloppy and duptidy DDO automata. The duptidy
automaton is expected to be the best and most useful, since it
leaves only intermediate DDO operations in place when duplicates
can occur in that step.
October 19, 2004 - Mary
o API, again
- Fixed bug in which processing_context arguments to most API
functions was simply ignored (!)
- Processing context no longer passed to all API functions.
Create processing_context once, modify as needed, then _only_
pass to load_standard_library.
October 15, 2004 - Jerome and Avinash
o XML update compiler, bug fixes:
- Fixed bug for delete in algebra pretty printer.
- Fixed lexing bug for atomic updates within FLWOR updates. Was
not putting the lexer back into default state.
- Fixed compilation of FLWOR updates completely wrong (was not
aligned with the new FLWOR compiler for expressions).
- Fixed materialization code bug. The MaterializeTable operation
in the algebra was using the old tuple list materialization
instead of the new materialization code.
- Fixed annotation code for MaterializeTable.
NOTE: This still requires a lot more testing.
NOTE: We will have to factorize the FLWOR update code to avoid
duplication.
October 11, 2004 - Philippe
o Perarations for the implementation of other automata
i.e., detecting the beginning/end of a path expression
when processing the AST
October 13, 2004 - Chris
o Two bug fixes
o Fixed MapIndex to start at 1 instead of 0
o Fixed Group operator to correctly return empty on empty groups
October 11, 2004 - Mary
o Alignment of Caml, C, and Java APIs with compiler's new processing
model
- Removed "quick start" functions as they do not align well with
processing model.
- See Galax modules in
galapi/caml_api/galax.mli, galapi/c_api/galax.h,
galapi/java_api/Galax.c for new interfaces
o Updated all API Examples to align with new API
- Added config/Makefile.api
- In galax/, run "make tests" to run all usecases and API
tests.
NB: **** config/Makefile.unix has changed ****
October 8, 2004 - Jerome and Mary
o Static typing:
- Started putting back static typing in place, expression per
expressions. Function calls are back, but not built-in
functions. Big missing pieces are path expressions and
constructors.
October 8, 2004 - Roel
Fixed bug in DDO rewrite rule: in stead of removing
distinct-docorder we now replace it by node-sequence to guarantee
type correctness
October 7, 2004 - Philippe
Repairing small bug in automaton implementation
October 6, 2004 - Philippe
Cleaning up debug output in the SBDO optimization
October 6, 2004 - Jerome and Mary
o Bug fixes:
- Fixed wrong bug fix for external variable declarations.
- Fixed real bug in support for the external context item.
- Fixed lexing bug on lexing of "<a" tokens in the operator
state.
o Processing model and API:
- Forced passing of the external context at the time of
compilation for a prolog or main module. The external values
are put in place only at execution time still, but that removes
some unnecessary additional call to set the context later on
and enables proper support for an external context item.
- Added a default external context.
- Propagated the changes to the Caml, C and Java APIs.
o Code cleanup:
- Did a serious renaming for typing module to make it more easy
to organize.
- Remove dead code in ./algebra.
October 6, 2004 - Philippe
* The DDO rewrite is now completely in place.
The only thing left to be done is testing it.
Files affected
o cleaning/annot_ddo.ml
o cleaning/ddo_symboltable.ml
o cleaning/ddo_symboltable.mli
October 5, Mary
o Schema_util, Schema_builtin
- Changed element/attribute/type declarations to use a Hash table
instead of lists.
- Changed merge_cxschema to check for duplicate declarations.
- Moved builtin schema attributes from Schema_util to Schema_builtin
October 4, Mary
o Branch Alignment
Updated Dev branch with changes made to 0.4.0 after release.
No more changes to 0.4.0!
August 2, 2004 - Mary
- Changed examples/Makefile* to only run API examples if the API libraries
are built and installed
August 3, 2004 - Mary
- Fix to config/Makefile_jungle.def
August 5, 2004 - Mary
- C and Java APIs :
o Changed set_xquery_whitespace to set_xmlspace_kind
o TODO: add construction mode and ordering mode to processing contexts.
- More on rationalization of Makefiles
o !!!config/Makefile.unix has changed!!!
Copy to config/Makefile and personalize!
- New directory: examples/tutorial for documentation
September 1, 2004 - Yitzhak
o C API
Removed GALAXCOMPILE conditional compilation from galapi/c_api/itemlist.h
o Node Ids
Added 64-bit pre-order integer node id to support PADS nodes
October 5, 2004 - Jerome
* Re-implemented subtyping for the new type system. This still does
not deal with substitution groups and nillable flags.
October 5, 2004 - Philippe
* Added recursive calls to non XPath ast nodes in the ddo
annotation module.
TODO: o adding the rewrite code which removes/replaces ddo calls
based on the ddo annotations (which are now in place)
o generate tests from the automaton code to test all
possible paths in the automata
The ddo annotation code is now much more robust and elegant.
On top of that the state of variables is recorded in a
kind of symbol table, which enables us to remove even more
DDO calls
October 5, 2004 - Philippe
* Fundamental changes to the ddo cleaning algorithm. The algorithm
is now node based and does not rely on pattern matching any more.
Not all AST types are supported yet, but simple XPath expressions
are correctly annotated
Files affected:
ast/xquery_core_ast_annotation.ml(i)
cleaning/annot_ddo.ml(i)
cleaning/ddo_automaton.ml(i)
Files added: cleaning/ddo_symboltable.ml(i)
October 3, Mary
o Item type atomic() replaced by built-in atomic type
xdt:anyAtomicType
- Declaration added to schema_builtin
October 1, Mary
o AST
- Replaced polymorphic 'a cexpr type by monomorphic annotated
acexpr type everywhere in code: effects Normalization, Algebra,
Cleaning, Code selection,
o Split Rewriting_walker into Rewriting_walker and Annotation_walker
- Rewriting_walker rewrites AST in purely functional bottom-up
walk of AST.
- Annotation_walker annotates AST by imperatively updating each
node's annotation in bottom-up walk of AST.
See Typing_notyping module for example use of Annotation_walker
o Removed analysis phase entirely -- no longer necessary
- Effects primarily Procmod_phases and Procmod_compiler.
September 30, 2004 - Avinash
* Added new namespace support into Jungle.
- 2 new indices to store nsenv and namespace bindings.
- 2 new id's, (namespaceid and uri_prefix_mapid)
- modified main record to store index of nsenv for element record.
- For creating nsenv from stored information we use a per store
cache of nsenv.
September 29, 2004 - Philippe
o cleaning/annot_ddo
- added basic framework for ddo annotating the ast
o cleaning/ddo_automaton
- new implementation for automata
o cleaning/cleaning_rules_notyping
- added the ddo-optimization to the non-type-based rules for now,
since the type based rules do not compile anymore
o procmod/procmod_phases
- added the new rewrite rule to the sbdo phase
o procctctx/processing_context
- removed the requirement that strong typing should be enabled for
the ddo optim to work
o Makefile
- uncommented the building of ddo_automaton and annot_ddo in 'cleaning'
September 28, 2004 - Philippe
o xquery_core_ast_annotation.ml/.mli
- added the sbdo_optim_annot type
o print_top.ml
- support for printing the AST XPath SBDO annotations
September 28, 2004 - Philippe
XPath AST annotations are now in place
o xquery_core_ast_annotation.ml/.mli
- added the xpath_sbdo_annot type
- added a xpath_sbdo_annot member to the ast annotation type
- added accessors and mutators for the new member
o norm_top.ml
- replaced the empty annotations in xpath normalization rules
slash, axis and step_qualifiers with the correct xpath_sbdo
annotations
o norm_util.ml
- modified the normalization of function calls to produce correct
annotations for fn:doc(), fn:document() and fn:root() calls
o print_top.ml
- support for printing the AST XPath annotations
September 26, 2004 - Mary
o Added config/Makefile_stemmer.conf to bootstrap Makefile
September 24, 2004 - Mary & Emiran
o tools/stemmer
- Added Porter's English Stemmer Algorithm
- New function: glx:stem
- Added config/Makefile_stemmer.def ; stemmer is required tool
September 24, 2004 - Jerome
o Added Namespace_names.string_of_uri function for Avinash.
September 24, 2004 - Chris
o Code Moves
- Algebra directory is removed
- Code having to do with the code selection portion of the algebra
moved to the code_selection directory
o There are new prefixes cs_code and cs_util to eventually split
these as well but, this requires a larger redesign
- planio directory created to handle serialization of XML Query plans
o Introduced predicates and predicate_branches
- compile Select statements resulting from and, or
in where clauses in to trees with conjuncts at the leaves.
This allows us to split predicates and push down portions:
$x = 5 and $x = $y, we can now push down the $x = 5 condition.
- Switched all joins to use predicates for evaluation
o TODO: Add simple heuristic about order to evaluate
- Optimizer changed to push down predicates
o Notable exception: Does not combine predicates in joins
- Introduced evaluation code for predicates
- Predicate branches are a technical condition of when you
can make joins (i.e. when you can seperate into two independent
branches). These are documented in the code, there are a host
of these types of conditions.
- prediates work by rid list operations. This should change a bit.
o Join Changes
- updated all joins as above to work with multiple predicates.
- NOTE:
********************************
*** THESE JOINS ARE NOT SAFE ***
********************************
o They may not handle all the implicit type promotions properly
and will need to be revisted when static typing comes back.
- cs_util_join_helper now 'compiles' predicates into join_information
structures.
September 23, 2004 - Mary
o Core AST Annotations
- Added Xquery_core_ast_annotation module. All core expressions are
now annotated.
- Removed tcexpr, tcstatement, ..., tcmodule
- Added acexpr, acstatement, ..., acmodule
- Effects every module that previously operated on ucexprs and
tcexprs
o Procmod phases
- Normalization is now optional phase. Disable using -normalize
off (Necessary for testing parser stand-alone)
o Bug fixes
- Decimal.ml: Fixed float to decimal conversion for floats w/
negative exponents
- Schema_util.ml: Fixed definition of is_none_type
September 23, 2004 - Nicola
o Wsdl:
Fixed the type annotations for the encoded case of an RPC Soap Body.
September 19, 2004 - Mary
o Datatypes_util:
Moved bt_can_be_promoted_to here; was missing xdt:*Duration types
September 19, 2004 - Mary
o Monitor:
- Fixed monitor so that calls to wrap_monitor not wrapped in
start/end_monitor_calls work
- Monitor times are emitted as xdt:dayTimeDurations
o Function & Operators Alignment:
- Added aggregates over xdt:dayTimeDurations and xdt:yearMonthDurations
- Changed op:node-equal to op:is-same-node
TODO: fn:error is still not aligned
September 16 2004 - Chris
Bug Fixes:
o distinct-values was not promoting types according to the
F&O semantic for comparison. This is fixed in both places
it occurs (distinct-values and the groups)
o Hash_join:
o The same equality semantic problem also occured in groups
and their hash functions. The promotion for fs:untyped-to-any
is not handled by trying to cast to both potential outcomes.
Algebra Changes:
o Changed AOEMapItemTuple to AOEMapFromItem
o Changed AOEMapTupleItem to AOEMapToItem
o Changed AOEGroup to AOEGroupBy
o Updated printer and optimizer
Grouping Operator:
o Added field (induced_groups) to group_desc
o deals with projection/scoping of tuple fields
o Removed distinct-values
Code tweaks:
o distinct-values now performs over cursors and uses
hash functions instead of O(n^2) list compares.
o ocaml 3.08's hash fn seems to be multilinear on the words it hashes.
- seems to be identity on ints & enumerated (Union) types.
- string_hash function added to base
o AtomicValueHash: to hash on atomicValues added to dm.ml(i)
Hash join:
o correctly work with fs:untyped-to-any semantic
should now be safe to pickup.
o Materialization changed to correctly support this
semantic.
o No longer assumes homogenous sequences.
Compilation:
o Tuple names are now compiled to be unique.
o FLWOR Normal form before compilation begins
o Element construction and function application
pulled out
Optimization Rules:
o Updated rules to work with new semantics
of grouping
o Updated group creation rules
September 14 2004 - Chris
Bug Fixes:
o Fixed bug dealing with external variables in code selection.
o Fixed procmod_compiler to properly handle context items and
external variables
- Variables need to be added, and then have code selection
done. We are skipping intermediate phases.
- examples seems to work but, there are problems with
namespace serialization
Procmod_compiler:
o Fixed above mentioned bugs
o Added functions to get_*_context to return copies
of the precompiled functions
- needed for contexts with mutable contents (ex: hash tables)
Code tweaks:
o Changed can_be_promoted helper function for efficiency in
algebra_code_util.ml
- caml calls polymorphic equality function on (=)
between Union types. 'match' is faster.
o Cleaned up Sort Join code to be used on >,>=,<=,<,=
- improved check to pick it join.
- still only picks up one pattern (double nested Some)
- should only pick it up if it is safe now but,
the flag remains.
*******************************
** Hash join is still unsafe **
*******************************
- extended to work on all atomic values
Algebra Pretty Printer:
o Another modification to bring the printer inline with the
notes.
- added [()] notation for parameters in the algebra
Algebraic Operations:
o New: AOENullMap
- Used to determine Nullity of sequences in groups
o Changed: AOELeftOuterJoin, AOEOuterMapConcat
- Now use new method of setting Nullity of their
inner relations
o Changed: AOEGroup
- Distinct-Values support added in aggregation
- empty behavior changed
***************************************
*** Possible bug in Distinct-Values ***
*** This follows the same semantic ***
*** As already Noted on Galax-dev ***
***************************************
Optimizer Changes:
o Updated rule set to work with the new operations
o Small simplification in the rule set
o Added Rule to pick up multiply nested joins
Algebraic Plan Parser:
o Updated to work with new operations and changes
Normal Form For FLWORs:
o Compiler now puts expressions in a normal form
documented in normal_form.ml
o This allows simplification of optimizer rules.
o added_files: normal_form.ml(i)
o flags added to toplevel/galax-run.ml and
toplevel/galax-compile.ml to toggle this option
(default: on)
September 11, 2004 - Nicola
o WSDL
- added the Wsdl_maker module which builds a wsdl AST from an
XQuery AST. For the time being, it is untested.
- added Wsdl_printer as an empty stub for a future WSDL pretty
printer
September 10, 2004 - Mary
o Function & Operators Alignment
TODO
- fn:error is not aligned
o Galapi
- Updates to align API tests with new prolog syntax
- Changed Quick start calls to eliminate nested monitor calls
September 9 2004 - Chris
Galax-run:
o New Flags
- algebraic-optimization:
******************************************************
*** Allows algebraic optimization to be turned off ***
*** since this code changes rapidly. (default: on) ***
******************************************************
- print-comp-annotations:
Toggles the printing of compile annotations
in algebraic pretty-printed plans (default: off)
o Fixed bug dealing with multiple input files
- Module being compiled several times
- Need a fresh compile context each iteration
Pretty Printer:
- Updated to use same notation as notes.
o Op{Dependent}(Independent}
- Changed breaking to make more readable
- Modified to work with new/changed operations
Plan Printer/Parser:
- Updated to work with new/changed operations
** Still an issue with namespaces in the output ***
New Algebraic Operation: OuterMapConcat
- Operates like MapConcat.
o If an input tuple returns a sequence, no effect
o If an input tuple is empty, return a sequence
with input tuple fields having their value
and dependent returned fields = ()
o ** NOTE ** Is not 100% safe yet because
of tuple scoping issues. Requires all
tuples names be unique -> flatten scopes
-> allow it to correctly set the return fields
see note in code for more details
Group Operator Semantic Change:
- Removed value support
- Extended to multiple grouping sets
- Added "Exclusions" for optimization rule
o These allow for correct handling of valid rule
- Split out group code into group_code.ml(i)
- Many improvements can be made; some are noted in the code.
Optimizer Rules:
- Map through group rule to introduce outer joins and maps
- Group combination rules and flattening
- Rules dealing with MapIndex
- Old product rewrite is safe again
- Changed Pushdown-selection to be more aggressive
- Rule dealing with Maps through products
August 27, 2004 - Chris
Added Groups, LeftOuterJoin, Hash Joins and Sort Joins
- Optimization Rules changed
o Product rewrite has been simplified
Now called natural_product_rewrite
o Old Product rewrite may still be useful
but currently disabled.
- Optimization Rules added
o group_apply_flatten_rule
(flattens the apply clause of Group Bys)
o map_singleton_join_or_product_rule
replaces Map(Join(InputTuple,..)(E_1)
Join(E_1,..)
o First step to unravelling multiply nested
groupings
o Rule to push maps of joins, through groups
allows denesting of queries.
- Code clean-up
o Removed annotate_algop since it was misleading
(no annotation is actually done in this call)
o Code factorization in cursor_peek
- it saves 20% on peek's cost
by pulling out the constructor
- New algebraic operation AOEGroup
o Currently only supports single groups
o Optimization Rewrite Rules to write into groups
o Sort Based grouping only
- New Operation AOELeftOuterJoin
o Optimization Rewrite rules to recognize
o Code to implement it
o Modifications to pick up the code correctly
- New physical joins
o Disabled by default, flag below.
o *** THEY ARE UNSAFE ***
o sort_join.ml(i) and hash_join.ml(i)
o Currently sort_join only picks up op:gt
(in xmark) but, will be shortly extended
to other comparison functions.
o Do pass usecases but still unsafe
*** USE AT YOUR OWN RISK ***
- Flag in galax-run.ml : -unsafe-join-hack
o When set allows the pickup of string based
hash joins. It is unsafe for many reasons,
which are documented in algebra/hash_join.ml
and algebra/sort_join.ml.
- XML Query Plan Parser and Printer
o Updated to work with new operations and
namespace support
*** The serialization is still not 100% correct ***
**** NOT WELL TESTED - PROBABLY BUGGY ***
August 27, 2004 - Jerome
Namespaces:
- Added a Namespace_util module which contains specific support for
hashtables and association lists for resolved QNames. Since
resolved QNames now contain their namespace prefix, Caml equality
should *not* be used for resolved QNames.
Alignement with XQuery /July 23rd draft:
- Fixed semantics of computed element and attribute constructors, now
doing atomization on the element name and supporting
xdt:untypedAtomic. Also fixed namespace resolution for the element
and attribute name.
Bug fixes:
- Fixed the C API to compile properly with the new namespace support.
- Fixed Jungle to compile properly with the new namespace
support. However, this will still not work as we must find a
different way to store and recall namespace environments for nodes.
- Fixed the fn:doc() function to cache the input document so that
multiple calls to the same URI does not recomputes the document.
External variables:
- Now allow also input atomic values directly from the command line
for external variables.
August 26 2004 - Chris
o Fixed bug in compilation to AOEMapIndex
- used wrong arugment in construction
August 25, 2004 - Jerome
Namespaces overhaul. Phase 2.
Preparation for new static typing.
** WARNING **
- Static typing is excised entirely in that version, and all modules
depending on it.
- Significant merge had to be done with WSDL support. Please check
new namespace support.
- There is still some bugs in handling of rqnames due to the triple
proposal. I am doing more testing now.
** WARNING **
- Reorganized namespace modules:
o Namespace_names definitions and basic operations on names.
o Namespace_builtin replaces Funcs_and_ops, now contains also
built-in names previously in Namespaces, Datatypes_util, and
Schema_builtin.
o Namespace_context replaces Namespace, with support for
namespace environments.
o Namespace_resolve replaces Resolves.
o Namespace_symbols replaces Sym.
o Removed the old prefix/URL tables entirely.
- ASTs:
o Cleaned up core AST to use only rqnames and never symbols.
o Cleaned up algebra AST to use symbols, still using rqnames for
variable, tuple fields and function names.
- Started tuning of the run-time for names comparisons:
o Re-implemented node tests to use symbols and not access
resolved QNames anymore.
o Factorized sequence type matching to use symbols except for
type lookups (core types still are based on rqnames).
- Schema import:
o Fixed some issues with interactions between namespace
declarations in the query prolog, schema import and type
declarations.
o Type declarations in the XQuery prolog should now be in a
"declare schema { ... };" declaration and allow nested
namespace declarations.
- Bug fixes:
o Fixed bug with serialization of the built-in namespaces.
o Fixed bug with serialization of qnames using the default
function namespace in documents.
o Fixed bug with target namespace declaration in a library
prolog, not taken into account during normalization.
o Removed all usage of xsd: namespace, not used.
August 18, 2004 - Chris
- AST -> Compilation Changes
o New operations: MapConcat, Join (and Product redone)
o updated printer, annotations, code-selection,
compilation to use them
o added printing of optimized expression flag to galax-run
o added code and coercions for these operations
o Compilation of FLWOR blocks changed to use Concats
- Materialization interface
o Cleaner interface
o Allows materializations functions to have portions
done at runtime
o Updated code that used the materialization features
o Interface for hash materialization (not yet used)
- Rewrites in Optimization Phase
o Generic code to handle rewriting
- optimization_util.ml(i)
- tree walking code
o Rewrite from Independent Maps -> Product
o Rewrite from Product + Selection -> Join
o Rewrite to remove Empty Maps
o Rewrite to push down selection
** a fixed point ordering, first cut
rule semantic will change **
- XML Serialization of Query Plans
o Deserialization using procmod_compiler.ml
o Plans obtained through galax-compile
o Exposed processing model functions
to deal with reserialization
** Not well tested. Small bug with namespaces ***
** will be fixed soon, then more testing ***
- Changes to galax-run.ml/galax-compile/conf.mlp
o Flags to print plans before and after optimization
o Flags ro reload and execute query plans
- ("-load-logical-plan", "load-optimized-plans")
- Note: Only whole modules can be run
- Compile Variable-Tuple Field Annotations
o Modified cannotations to allow rewalking of the tree
o These are used during optimization rewriting
- Cleaned unsafe/safe variable setting
o unsafe set is used when the variable is used only
once, safe implies the variable is materialized
August 16, 2004 - Nicola
- WSDL:
o Fixed namespaces in import/export.
o Stub generated by xquery2soap uses "import module".
August 13, 2004 - Jerome
- Processing model:
Long due reorganization and clean up of the processing model,
notably of the code inside ./galapi/caml_api/galax.ml.
o Cleaned up interfaces for the various processing phase
context. Now all context modules have a default_context()
operation and a replace_previous_context() operation.
o Added ./procmod/procmod_compiler module to handle combination
of multiple processing phases.
o Added an analysis phase in ./analysis. This phase performs
various kinds of static analysis useful to prepare query
optimization. This phase operates over the XQuery core and
takes place after rewriting, and before compilation.
o Added an optimization phase in ./optimization. This phase
performs algebraic query optimization and takes place after
compilation, and before code selection.
o Removed obsolete Query_Path_Analysis_Phase from the monitor.
o Fixed monitor to deal with the changes to the processing model.
- API:
o Changed galax.ml to use the new new processing model support.
- Toplevel:
o Changed galax-project to use the new processing model support.
August 13, 2004 - Jerome
- Parser:
o Fixed parsing error for 'stable order by'. [Bug reported by
Chris]
o Fixed syntax of variable declarations to use := instead of { },
forgotten alignment with the new XQuery syntax.
August 12, 2004 - Nicola
- WSDL: Changed the obsolete call to import_embedded to
import_schema_element in order to maintain consistency with
Vladimir's code.
August 11, 2004 - Vladimir
Schema import: adjustments after the recent namespaces ovehaul and
some code clean-up. The top-level import functions have new names,
hopefully more intuitive ones.
August 11, 2004 - Mary
Recovered following changes, which were lost:
[[ July 26, 2004 - Mary and Emiran
- Added new built-in function: glx:file-exists:
declare function glx:file-exists($arg1 as xsd:string?) as
xs:boolean? external;
If argument is empty, returns empty. Otherwise, checks if local
file exists and returns true, otherwise false.
(NB: Checking that an arbitrary resource exists is tricky, so
we're just handling local files for now)
]]
- Fixed following bugs:
o fn:substring() used string functions to convert floats to ints;
now uses appropriate float functions
o fn:substring-after() and fn:substring-before() are now
symmetric; previously used two different ways to split strings;
Also, occurrences of regular expression special characters are
now quoted before calling split functions
o fn:tokenize() was returning matches of delimiters when specified
as non-trivial regular-expressions. Now correctly only returns
strings between delimiters.
- Makefile_pcre.def
o Removed custom -cc options
August 11, 2004 - Chris
- XML Serialization of the algebra
o Updated XML Serialization/Reserialization *** untested ***
- Still not hooked in, just updated the code
- New annotation and its use
o Added annotation for bound variables in the algebra ast (and usage
counts).
o Added "unsafe" code to avoid materialization for variables
used only once.
- Code cleaning and fixup
o Fixed bug in tuple position map.
o Removed InputItem from the AST (it was unused).
o Updated Makefile for usecases to use correct flags.
- Note on xmark usecase:
o currently, xmark usecase 19 will fail incorrectly this is due to
non-determinism in the query. This will be fixed shortly.
August 11, 2004 - Nicola
The only purpose of this commit is to make Galax compile again, by
eliminating the call to build_ns() in wsdl_load.mlp
Therefore, the WSDL tool is still unusable (please see also my last
post on galax-dev concerning WSDL related problems).
- WSDL:
o small progresses on type mapping; printing problems for URIs
still persists
- Apache extensions:
o the 2 Apache modules now have a common structure, separated from
the calls to the 1.3 or 2.0 APIs; more testing needed
August 9, 2004 - Chris
- Added compile_annotations and code cleanup
o Free variables, tuple fields accessed and tuple fields returned
o Added a function in algebra_code.ml to perforam faster checks
if a base_type can be promoted to an atomic type
o compile annotations are a field in the AST
o Modified pretty printer to print the annotations on the plan
- Tuple compilation
o Tuples are now indexes into arrays handled in tuple_context_manager
o Tuple scoping is handled in the code_selection_context
o Materialization is now an explicit function call
- a default implementation is provided in algebra/materialization.ml
o Tuple code is now based on using *side-effects* to avoid copies
- there are no longer algebra_context copies during execution
o Some signatures were changed to reflect
o This method renders certain operations as nops (for example concatenation)
**a code review is needed to decide how far we want to push these signatures **
- The XML plan generator and XML plan parser still do not work.
o Updates to deal with new style prolog but, need to revise
to deal with namespaces
- Fixed bug previously fixed in release version
( AOEError compiled to AOEAnyAttr )
- Added bt_can_be_promoted_to algebra_code_util.ml
o Removes a List.mem (this was the association list
access during execution)
August 5, 2004 - Jerome
*** WARNING ***
The following update makes deep changes to the Galax namespace
support. Only limited testing has been performed, so please report
any problems ASAP!
The following features are impacted by that change:
- Jungle (namespace support will have to be changed)
- XML Schema import (namespace resolution should be checked/fixed)
- WSDL import (namespace resolution should be checked/fixed)
*** WARNING ***
Namespaces overhaul. Phase 1.
[ Note: the following changes fix the validation bug reported by Mary,
as proper namespace environment are now produced through export and
can be used for validation. ]
- Namespace:
o Completely re-implementation of the namespace environment
support. Namespace environment are references to binding tables,
and are scoped. The support is made efficient by avoiding
copying tables when unnecessary.
o Removed obsolete code from Namespace, Resolve, Norm_top which
was keeping track of top-level element/attribute/type
declarations from the schema.
o Simplified the interface for namespace environment, removing
several unnecessary calls. Operations on namespace environment
always rely in namespace binding tables, not individual
bindings.
- SAX:
o Fixed resolved streams and typed streams to use a reference to
the namespace environment instead of delta bindings.
- Data model:
o Removed obsolete namespace nodes from the data model.
o Added namespace_environment() method for element nodes in the
data model. This returns a pointer to the namespace environment
for a given element node.
o Fixed export of a data model instance to generate the right
namespace environment.
o Added support for namespace environments in the main-memory data
model.
o Fixed loading of the main memory data model to populate the
right namespace environment for element nodes.
o Put place-holder for namespace support in Jungle. [[ THIS WILL
HAVE TO BE CHECKED BY AVINASH ]]
- XML Schema import:
o Propagated the change streams into XML Schema import. [[ THIS
WILL HAVE TO BE CHECKED BY VLADIMIR ]]
- WSDL import:
o Propagated the change streams into WSDL import. [[ THIS WILL
HAVE TO BE CHECKED BY NICOLA ]]
August 5, 2004 - Jerome
- Validation:
o Fixed bug introduced a few days ago when fixing another bug with
the validation context (sic).
August 5, 2004 - Jerome
- XQuery context:
o Added support for xmlspace, construction mode and ordering mode
in the context.
o Now effectively removing boundary whitespace during
normalization when xmlspace is set to strip.
o Removed obsolete -xquery-whitespace flag.
o Fixed bug in attribute construction, wrongly removing boundary
whitespace.
August 4, 2004 - Mary and Amelie
- Projection:
o Recompiled galax-project to compute and emit path-projection
structures.
- Galax API:
o Added static_ctxt_from_xquery_module.
August 4, 2004 - Jerome
- Cursor support:
o Added cursor_of_stream function to create a cursor from a Caml
stream.
o Removed all usage of try...with in cursor operations, in an
attempt to remove a supposedly expensive idiom.
August 3, 2004 - Chris
- Fixes and Clean-up
o Fixed missing portions of match in algebra_print_common.ml
o Fixed external variable handling.
o Backtracked compilation of tuple creation with empty-tuple
- again generate the Map in [] portion
o Hide the variable_context_manager a bit more
August 3, 2004 - Jerome and Chris
- Printing:
o Fixed printing of validation expression when validation mode is not
present.
August 3, 2004 - Jerome and Chris
*** WARNING ***
The following update makes deep changes to the Galax run-time,
notably in the way FLWOR expressions are compiled, and the way
variables are compiled. Some features might be unstable and static
typing has been disabled.
*** WARNING ***
- Changed compilation for FLWOR expressions to use tuples:
o Added a FLWOR block in the XQuery core.
o Removed tuples expressions from the XQuery core.
o Propagated the removal of tuple from the core and addition of
FLWOR expressions to: printing, parsing, and rewriting.
** NOTE: The change was NOT propagated to static typing, which
must be fully revised anyway. - Jerome ***
o Added basic operations over tuples in the algebra:
Tuple construction
Tuple field access
Tuple concatenation
o Added (nested) relational algebra operations:
Map
Cartesian product
Selection
Projection
Projection with duplicate removal
Join (only implemented as a nested loop for now)
o Implemented compilation of FLWOR expressions into the (nested)
relational algebra.
- Compiler:
o Extended the algebra compiler to support XML updates and the
query prolog.
o Added a special evaluation function for operations in the prolog
that do not return a result, but change the context.
- Improvements to the evaluation and compilation context:
o Pulled out as much things as possible from the evaluation
context to the compilation context, enforcing the computation of
that information at compile-time rather than at run-time.
o Complemented the dynamic context with "special" support for the
the tuple context (used for pipe-lined tuple based
evaluation).
o Added support for variables to be just references into arrays
after compilation. The method in which functions are done
is *NOT* re-entrant.
- Code reorganization:
o Moved printing of the AST(s) into a separate ./print directory.
o Split Xquery_ast_util into separate modules, one for each ast.
(e.g., utilities for the core type ast are now in
Xquery_type_core_ast_util.)
o Added code_selection_context.ml(i), algbra_code_update.ml(i)
variable_context_manager.ml(i), algebra_code_top.ml(i)
- Bug fixes:
o Fixed pretty printer for PI's kind tests and comment
constructors.
o Fixed bug in the static analysis of free variables for FLWOR
expressions with a an index variable, and in the default case
in a typeswitch.
o Fixed a bug in the compilation process for statements and
library modules. (The compilation context was not propagated
properly).
o Fixed up algebra pretty-printer to deal with updates.
August 3, 2004 - Mary
- Compilation fixes:
o Fix to config/Makefile_jungle.def.
o Changed examples/Makefile* to only run API examples if the API
libraries are built and installed.
***** Galax Release 0.4.0 August 2, 2004 *****
August 2, 2004 - Jerome
- Aligned the XQuery prolog with the new working draft.
o Imposed module declarations on library modules.
o Added support for construction declaration, xmlspace
declaration, ordering declaration.
o Added parsing for validation mode. Currently, only strict
validation is supported.
August 2, 2004 - Mary
- Examples
o removed base-uri example that is file-system dependent and
changed expected output.
- More Makefile changes:
o Now distinguish between SHARED link options for CC and
OCAMLSHARED link options for ocamlmklib
August 2, 2004 - Mary
- SOLARIS port
o config/Makefile.gen, Makefile.unix, Makefile_pcre.def , Makefile_jungle.def
examples/Makefile.config
Added link options for building shared libraries
o C and JAVA API Makefiles
ocamlmklib raised errors from 'ar' when constructing libraries; reverted
to using gcc by hand and this worked.
July 30, 2004 - Vladimir
- Schema import: some improvements in error messages.
July 30, 2004 - Mary and Avinash
- Tested Jungle installation and added tests in examples/jungle
o Fixed config/Makefile_jungle.def to build two jungle libraries:
libjungle.so and libjungleopt.so
o Fixed examples/Makefile.config to include correct link options
o Added load: target to examples/jungle
o Added (preliminary) documentation for installing and testing jungle
July 30, 2004 - Mary
- Installation scripts
o Added libpcre.so* dynamic libraries to binary distribution
directory : Galax/lib/c
o Updated corresponding documentation
- Usecases
o Updated calls to F&O functions with new names
- examples/ and usecases/ Tests
o Eliminated dependency on LIBPCRE location BUT running these tests
REQUIRES 'make install' beforehand.
July 30, 2004 - Doug
- Dates/Times
o Updated the date/time/duration functionality to correspond to the
new functions and operators document
o All 'get' functions have been renamed such that the 'get_ has
been removed. (ie get_years_from_date is now years_from_date.)
o New arithmetic functions on durations have been added
o Most of these changes were actually installed last update, but
not documented in the changes file.
- URI's
o Attempted to allow windows file URI's to be parsed using the old
URI parser in tools/http/http.ml. Netstring was not parsing them
correctly.
o The change was made in glx_http. AnyURI still relies on netstring
however in all cases as it did before.
July 29, 2004 - Jerome
- Compilation:
o Fixed dependency problem in the config Makefile for PCRE. Was
forcing a recompilation of the pcre_stubs library each time make
was called.
- Example:
o Fixed syntax error in ./examples/Makefile.release. Was not using
TABs properly.
o Changed the makefiles to make the error messages more visible.
July 29, 2004 - Doug
- DTDs
o Extended the sax_parser to now parse DTD's, either embedded or
standalone.
o Galax internal types are now created from the element
declarations within the DTDs
o Support is included for elements, attribute lists, processing
instructions, comments, and entities are resolved within the xml
document.
o There is no support for entities within the DTD itself. If the
parser encounters an entity within the DTD it will print a warning,
and consume the rest of the tokens until the xml document begins
- galax-mapschema
o Now takes an optional argument '-dtd' which allows it to take a
dtd as input rather than an xml schema. -validate will validate the
document against the dtd.
- galax-parse
o Also now takes an optional argument '-dtd', in case the user
wants to perform validation against the internal dtd.
July 28, 2004 - Mary
- Usecases/Examples
o Finalized tests. In galax/, execute "make tests" to run usecase
and API tests
- Website
o Fixed several bugs in formatting queries
o Changed output format to Serialize_As_XQuery because very long
strings were causing printing problems in browser.
- Print_xquery
o Fixed bug -- '{}' delimiting enclosed expressions in attributes
were not printed correctly,
July 28, 2004 - Doug
- Made the 'jungle specific fix' in dealing with URI's given in the
fn_doc() global to all backend registered data sources. Made the
change in glx_http.ml.
July 27, 2004 - Mary
- Java API and examples/java_api
o Added date, time, dateTime, yearMonthDuration, dayTimeDuration
atomic types.
o Added tests to examples/java_api/Test.java
July 27, 2004 - Chris
- Code Clean-up
o Added access subexpression functions to xquery_ast_util.ml(i)
for algops
- switched code selection to use these functions instead
o Added a pretty printer for the algebra (algebra_printer.ml(i))
- Hooked into procmod/galax-run
- Removed XML printer
- Split code into utilities for printers
o Identified location of change for symbol compares
- eval_node_test needs to be changed)
- There is a comment - eventually should switch to all
symbols/integer compares during execution until serialization.
Probably with unified string pools too.
o Switched pool.ml from using exceptions instead of .mem
o Switched datatypes can_be_promoted_to to a switch
instead of an association list lookup
July 26, 2004 - Doug
- URIs
o Fixed the bug which wasn't recognizing jungle URI's correctly
o The fix is currently "jungle specific" and will need to be
generalized in the future for other backends, but this should
serve as a short term solution.
The change was made in base/glx_http.ml. The reason for the bug
was that the Neturl module doesn't consider a fragment (ie
anything that comes after the '#' in a URL) to be considered as
part of the path. Therefore in a jungle URL,
jungle:///tmp/Galax#test it was returning the path as /tmp/Galax.
The 'jungle specific' fix on line 75 of glx_http was to concat a
'#' and the fragment onto the local path of the URL. If there is
a consensus that the fragment should always be included in the
path, then the Neturl module can be modified. Input?
July 26, 2004 - Mary and Emiran
- Added new built-in function: glx:file-exists:
declare function glx:file-exists($arg1 as xsd:string?) as
xs:boolean? external;
If argument is empty, returns empty. Otherwise, checks if local
file exists and returns true, otherwise false.
(NB: Checking that an arbitrary resource exists is tricky, so
we're just handling local files for now)
- (doc/ under constant construction)
July 23, 2004 - Chris
- Algebra code cleaning:
o Changed build_default_builtin_function to build function
during code selection
o Changed build_default_overloaded_function to build possible
signatures at code selection time
- Algebra printing:
o Namespace problem fix: Changed algebra_uri and algebra_prefix
back to glx to prevent printing of names. Serialization of the
plans will not be correct.
- Fix: Changed algebra_uri and algebra_prefix back to glx to
prevent printing of names. Serialization of the plans
will not be correct.
July 22, 2004 - Mary
- doc/
Removed install: dependencies on manual.pdf manual.html
They should already be in the CVS repository.
- Fixed bug in config/Makefile.unix. Accidentally made changes to
config/Makefile instead of Makefile.unix.
July 21, 2004 - Mary
- New HTML & PDF Documentation (Check it out!)
o Deleted STATUS, RELEASE_NOTES, SOURCE_CODE, STATUS files
o Created doc/ subdirectory
To access: cvs update -d doc
If you want to build the doc yourself, you need HeVeA
(http://pauillac.inria.fr/~maranget/hevea/)
All the generated doc is in CVS so you don't have to build it
yourself.
- Updated website to refer to new documentation
July 21, 2004 - Chris
- Added a printer and parser for the algebra:
o Added XML serialization for both logical and physical
plans. This is in:
algebra/algebra_print_common.ml(i)
algebra/algebra_print_util.ml(i)
algebra/algebra_print_xml.ml(i)
o Current limitations:
- Updates are not supported.
- Physical plans do not have indication of which code has been
selected.
o Added top-level flags for printing of algebraic plans.
o Fixed processing model to trigger printing of algebraic plans.
o Preliminary parser for serialized plan, but it is still
incomplete and is not hooked into the rest of the system.
This is in:
algebra/algebra_parse_plan_xml.ml(i)
o Made string_of_axis visible (included its sig in print_common.mli)
- Removed obsolete modules:
algebra/dynamic_context.ml(i)
algebra/algebra_ast.mli
- Bug fixes:
o Fixed Bug in code selection - signature of element and attribute
code was incorrect.
o Fixed Bug in compile (text constructor had incorrect number of
dependent expressions).
o Fixed Bug in small_stream_context.mli that prevented comments
from being output.
July 20, 2004 - Mary and Emiran
- Added LOCALPREFIX to all Makefiles -- some contained it, others
didn't.
July 19, 2004 - Mary
- PCRE tool
o Updated config/Makefile_pcre.def to include correct options for
linking
- Galapi, API Examples, Website
o Updated Makefiles and Makefile_*.def files for Galapi, examples/,
and website so they link correctly with PCRE library
- Galapi
galax.ml : commented out debugging print statements
- The Return of Nestring
o Needed tools/netstring to support Web site
o Deleted tools/glx_netstring and restored tools/netstring
- Namespace
o Fixed bug in printing of unresolved QNames with empty prefixes.
Was printing ':NCNAME'. Now prints 'NCNAME'
July 16, 2004 - Jerome
- Added support for computed comment constructors.
- Alignment with July XQuery 1.0 working drafts:
o Renamed xdt:untypedAny to xdt:untyped.
o Checked that value comparison for two empty sequences returns an
empty sequence.
July 15, 2004 - Chris
- Modified algebra to support semantic annotations and add signatures
for the operations.
o Propagated the change to compiler, algebra, procmod, ast and
execution.
- Changed code selection to also close off dependent expressions at
that level rather that at execution time.
- Changed the the expression portion of the algebra to used arrays
instead of lists. That should result in a more efficient run-time.
o Added get_array_paramx to base/param to deal with arrays (for
builtins).
o Modified algebra_code.ml to deal with arrays imperatively.
o Created Cursor.cursor_array_fold, now used in constructors
instead of the Cursor.cursor_list_fold.
o A few underlying functions still use lists (notably: Overloaded
function matching and tuple materialization).
July 12, 2004 - Chris and Jerome
- New algebraic compiler for Galax!
o Added two incarnations of the algebra AST.
-- The first incarnation is in ./ast/xquery_algebra_ast.mli,
and is polymorphic in one parameter which corresponds to the
actual code for the operation. This is similar to a 'logical'
query plan.
-- The second incarnation is in ./algebra/algebra_type.mli
and instantiates the former with specific evaluation
code. This is smiliar to a "physical" query plan.
o Added two new processing phases:
-- The "compilation" phase compiles a core expression into a
logical query plan. This phase is located in ./compile.
-- The "code selection" phase selects actual evaluation code
for each algebra operation, producing a physical query
plan. This phase is located in ./algebra.
o Extended the algebra AST and compiler for updates. The compiler
for updates is mostly a place holder for now, until we know what
we want as an algebra for XML updates. Fixed the evaluation code
for updates accordingly.
o Extended the algebra AST and compiler to deal with the prolog
and modules. Fixed the evaluation code accordingly.
o Removed the old compiler!
o Extended the monitor, the processing model, and the API to use
the new compiler.
July 8, 2004 - Doug and Mary
- Removed tools/netstring and replaced with tools/glx_netstring
*** NB: You must do 'cvs update -d tools/glx_netstring' to get new
directory.
- Compilation problems:
There is a CVS versioning problem with schema/schema_import.mlp.
'cvs update' may not return the head of the branch for this file.
If you have problems compiling schema/schema_import.ml, then do a
fresh checkout 'cvs checkout galax' and you will get the right version.
July 8, 2004 - Chris and Jerome
- First step to the algebra. Algebra operations, compilation and
execution for expressions is in place. This is not hooked up to the
rest of the system yet.
o Created a new AST structure for Algebra operations. In
./algebra/algebra_ast. Utilities for the algebra AST are in
./algebra/algebra_util.
o Split the evaluation code in ./evaluation/eval_expr into
evaluation code in ./algebra_code and coercion operations in
./algebra_coercion. The old evaluation/eval_expr is still in
place until the new version can take over.
o Updated ./compiler/compiler_expr to compile into the new
algebra. compilation for updates and the query prolog is still
missing.
o Added a new ./evaluation/algebra_execute module as the new
evaluation module for expressions working over the algebra.
o Reorganized part of the code:
Moved ./evaluation/eval_util --> ./algebra/algebra_code_util
July 6, 2004 - Doug
- URI's
o Fixed the resolve-uri function in anyURI module such that it now
gives an absolute URI rather than a relative one
o Hooked up netstring underneath glx_http so that there is
consistent URI processing throughout galax. Previously, URI's
were handled differently depending on whether they were used to
load documents or used as a datatype.
o Eliminated half of the netstring library so that now it only
contains the modules which are necessary to galax.
o Added tests for anyURI functions and operators in xqueryunit
July 6, 2004 - Jerome
- Fixed bug in pretty-printing of contructors (document, text and
elements).
July 6, 2004 - Jerome
- Fixed bug in namespace resolution when using schema import schema.
Namespace declarations in the schema import statement was not
propagated properly. [Bug reported by Nicola]
June 30, 2004 - Jerome
- Fixed typo in physical_value module (how did it get there???).
[ Thanks to Emiran for notifying me of the problem! ]
June 28, 2004 - Jerome
- Type system:
o Added built-in definitions for xdt: types (xdt:untypedAtomic,
xdt:untypedAny, xdt:yearMonthDuration, xdt:dayTimeDuration)
which were missing. [Fixes a bug reported by Emiran].
June 25, 2004 - Doug
- Documentation:
o Update the STATUS document to reflect new functions and
operators implemented
o Internal documentation of dateTime, regularexp, and algebra_fn
using ocamldoc format
June 25, 2004 - Jerome
- Jungle:
o Fixed loading not to stop whenever encountering PI's or
Comments, but ignoring the event instead.
o Fixed bug in make install, copying libjungle.so into
libjungle.a.
- Namespaces:
o Fixed a HUGE bug in namespace support, which was accumulating
uri/prefix binding each time it was registering a new QName,
resulting in stack overflows pervasively throughout the system.
- Data model:
o Changed the DM API to distinguish between nodeid and document
order methods. node equality is checked through nodeid() while
other document order operations are checked through docorder.
- Cursors:
o Replaced the caml stream library by the new cursor library,
more efficient (slightly). This is effective except for the
modules that use the Caml stream patterns: Schema import and
WSDL import.
- Updates:
o Fixed bug in main-memory implementation of delete for
attributes.
o Fixed insertion of element nodes buggy when occurring at
the beginning of the element content.
o Fixed insertion of attribute nodes. The insert location is
ignored as attributes are not ordered. This also checks that
the newly inserted attribute does not already exists so that
it does not create two attributes with the same name.
- PCRE:
o Cleaned up some of the makefiles and removed targets from the
repository.
June 22, 2004 - Doug
- More string bug fixes
o Substring now takes doubles rather than ints to correspond to
the spec.
o Added new tool, PCRE, to handle perl compatible regular
expression matching.
o Added datatypes/regularexp.ml, mli to implement the string
functions dealing with regular expressions.
o Many more string tests added in xqueryunit which exposed more
minor bugs in string functions. Fixed all that were found.
o Allowed the specified variadic string functions to take varied
number of arguments.
o Updated INSTALL file to instruct users on how to obtain PCRE 4.5
which is a requirement for regular expression
functionality. This comes standard with the majority of linux
distributions these days, so it shouldn't cause too much worry.
- Bugzilla
o It's installed. Look for it to be configured and useable
shortly.
- Date/Time
o Added support for fn:adjust-time-to-timezone,
adjust-date-to-timezone, and adjust-dateTime-to_timezone
o Added and ran more tests for dates/times to xqueryunit
o Date/Time library now includes support for every function and
operator in F&O
o Began adding internal documentation to datetime.ml and
datetime.mli
June 11, 2004 - Doug
- String functions
o Fixed the substring function in algebra_fn.ml
o Implemented variable number of parameters to the variadic
functions
o Created a number of tests for string functions and operators
exposing a number of bugs
o Fixed a number of small incorrect behaviors in different
functions
o Allowed the () empty sequence when passed as an argument to be
interpreted as the empty string "", as specified in the
functions and operators document.
June 8, 2004 - Doug
- Xqueryunit updates
o Made updates to xqueryunit and updated the the appropriate files
in the usecases and regres directories
- More date/time bug fixes.
June 7, 2004 - Mary
- SIGMOD Demo Configuration
o Added detailed instructions for setting up demo in
examples/wsdl/yoohoo/README
- Website
o Updated code to align with current Galapi
o Added YooHoo Web service to Galax demo Web site
- Usecases
o Removed type declarations in *_context.xq so that demo would work
June 7, 2004 - Jerome
- WSDL:
o Small clean up of the mod_xquery.c code, after the big bug fix.
o Some more testing of the jabber support. Fixed the examples a
bit.
June 7, 2004 - Jerome
- WSDL:
o Cleaned up module and service import, really done now as a
pre-processing step before normalization. Makes the code easier
to maintain and makes supports for namespaces clearer.
o Fixed bug in mod_xquery, which allowed multiple initializations
to the main module context and processing context, causing
SIGSEV in some cases.
o Fixed Jabber dynamic linking problem, compilation of the
mod_xquery.so library *have* to have the jabber libraries
passed during compilation otherwise it SIGSEV during calls to
the glx:jabber functions.
June 4, 2004 - Doug
- DateTime
o More Date/Time/Duration bug fixes
June 4, 2004 - Mary
- Jabber
o iksemel_wrapper.c:
Changed unprefixed QNames to be in the empty namespace.
Removed reference to glx:jabber:wrapper namespace.
- Module/service import
o As temporary hack, explicitly add all namespaces in imported
service or module into context of importing query
- Apache
o mod_xquery.c Put error-checking guards around _all_ calls to
Galax API.
- YooHoo service
o examples/wsdl/yoohoo
Added README file explaining current problems with running
Jabber and Apache at same time
June 3, 2004 - Jerome
- Base URI:
o Fixed a huge bug in the default base uri, breaking all file
access. [ Bug found by Avinash ]
June 3, 2004 - Doug
- Date/Time
o Tested and fixed a number of bugs in the DateTime module
concerning manipulations of dates/times/durations. A few bugs
remain and will be fixed tomorrow
June 3, 2004 - Mary and Jerome
- WSDL Module
o Implemented import module to WSDL export
o Fixed namespace hack to align WSDL target namespace and
server implementation
- Makefile
o Fixed compilation dependencies between Galax, tools, and APIs
(linking hell!)
June 2, 2004 - Mary and Jerome
- Added "import module" statement, which does XQuery source inlining
- WSDL
o Fixed bug in argument order
o Fixed bug in extracting content of soap parameter on server
side
June 2, 2004 - Jerome
- Processing model:
o Fixed bug introduced when fixing the stack overflow problem,
optimization phase was not properly called anymore during
compilation of statements.
June 2, 2004 - Jerome
- Support for base-uri:
o Added base-uri as a parameter to the processing context.
o Added support for 'declare base-uri' in the query prolog.
NOTE: Some clean-up for URI support (lower levels) are still
necessary.
June 2, 2004 - Doug
- DateTime
o Fixed get_timezone_from (date/time/dateTime) functions
o Corrected bug in valid_date dealing with the difference between
Unix time and galax time representations
o Fixed comparisons in dateTimes in order to account for
timezones being represented as durations
o Changed default settings for local_timezone and
current_dateTime contexts. If an error is raised, rather than
galax crashing from initialization, it sets the current_dateTime
to January 1st, 1970 at midnight, and the local timezone to UTC
June 2, 2004 - Nicola
- Wsdl
o corrected an old bug in the processing of the xquery2soap
parameters: the program failed when it was given a module from
another directory
- Jabber
o changed the namespaces in the output of the Jabber wrapper
June 1, 2004 - Nicola
- Wsdl
o updated the contexts for the WSDL usecases
o added an Apache2 XQuery module in extensions/apache
June 1, 2004 - Avinash
- Update
o Rewrote the update code to allow optimizations. The concrete
update generated are now aligned with the data model update
operations.
o Added 3 flags for 3 update optimizations, OI, BI and SBI.
- Jungle
o Fixed the code to work with modified nodeid.
May 31, 2004 - Mary
- DateTime
o Fixed bugs in valid_date() and local_timezone()
May 31, 2004 - Nicola
- Wsdl
o Catch the lexing exception generated by
Namespace.uqname_element_of_string for an invalid QName
o Modified the return statement in a WebService client call:
if a SoapEnv:Fault is received, fn:error() is called
May 28, 2004 - Jerome
- XQuery parser:
o Fixed bug in parsing of wildcard names of the form 'a:*' and
'*:a'.
May 28, 2004 - Jerome
- Type system:
o Changed OLD built-in types in pervasives.xqp not to use
recursive groups anymore.
o Removed dependency of the normalization, and evaluation phase
on any of the old type system. One last OLD module added to
normalization which only contains normalization from the new
to the old type system, which is still necessary for typing,
and cleaning.
- Normalization:
o Removed the use of subtyping during normalization of function
calls. This is now done directly in a syntactic way by looking
at the sequence type structure.
- Type matching:
o Implemented the new sequence type, including matching based on
named typing.
o Fixed printing of the type system to put attributes after the
content model, which is aligned with parsing.
o Changed the error for type matching not to use the value
anymore since the value may be a stream already (partially)
consumed.
o Fixed bug in sequence type matching for document-node(ncname).
- SAX cursors:
o Made node-identity allocation a separate stream
operation. This gives more flexibility to the query compiler
in case one needs identity operations, but does not want to
materialize a DOM tree.
- Loading and fn:doc():
o Re-implemented loading for the main-memory data model based on
an input stream with node identity. This significantly
simplifies the loading phase.
o Changed the 'document buffering' approach that is required to
make sure multiple calls to the same 'fn:doc' function return
the same node identities. Now the document is not buffered in
memory, only the doc id is kept in the processing context.
Multiple calls to the fn:doc() function will results in
parsing the document multiple times.
May 27, 2004 - Mary
Preparation for SIGMOD Demo
- Apache server
Moved tools/apache to extensions/apache
Removed tools/apache
Apache configuration info in extensions/apache/README
- Jabber server
Configuration info in examples/wsdl/jabber/README
- XQuery Jabber extensions and library
Configuration info in tools/jabber/README
- WSDL/Apache tests
Added tests for deploying Galax WSDL service under Apache in:
examples/wsdl/apache/
Configuration info in examples/wsdl/apache/README
May 26, 2004 - Mary
- Parser/Normalization
o Added import WSDL service declaration to prolog. Syntax:
import service prefix = "filename"
Implemented by inlining output of WSDL tool
o Fixed DateTime.local_timezone() to correctly compute timezone
when local and UTC days differ
May 26, 2004 - Vladimir
- Schema normalization: attribute and element groups, including
checking for cycles; somewhat tested.
- Schema import: some improvements to error messages.
May 25, 2004 - Jerome
- Cursors:
o Fixed a bug in the cursor implementation of fn:subsequence.
- DateTime:
o Turned global variables in Dynamic_context into functions.
May 25, 2004 - Jerome
- Fixed the Makefile to compile Galax+Jungle on solaris.
May 24, 2004 - Mary
- DateTime
o Whoops -- Fixed error in dateTime.ml which didn't acount for
the year starting at 1900 from the Unix System call.
- Galax-run toplevel:
o Default timezone set to local timezone
May 24, 2004 - Doug
- Dates/Times:
o Fixed bug with string_of functions from last update.
o Began to implement multiplication and division of durations to
complete arithmetic operations.
o Fixed previous error in dateTime.ml which didn't acount for
daylight savings time.
o Fixed error in dateTime.ml which didn't acount for the year
starting at 1970 from the Unix System call.
May 24, 2004 - Mary
- Algebra_fn, Funcs_and_ops:
o Added fn:current-dateTime,date,time functions
- Dm:
o Added supported casts between dateTime/date/time
- Galapi
o Added date/time/duration times to C API
Still working on Java API
- Galapi Examples
o Added date/time/duration constructors to Caml and C API
examples
o Added exit_on_error guards to all API calls in examples/c_api
o Updated prolog syntax in examples/seq_context.xq
May 24, 2004 - Doug
- Dates/Times
o Finished the dynamic context integration into dates and times
with an implied local timezone.
o Corrected the string_of_ functions on dates/times and
durations
o Fixed lack of default matching cases in date/time library to
raise errors where appropriate
May 21, 2004 - Jerome
- Schema import:
o Put back schema import into place, using the new type system.
o Added some support for location hints. Location hints are
always used if present.
o Fixed the syntax of schema import for default element and
location hint.
May 21, 2004 - Jerome
- Syntax:
o Fixed lexing bug, where '*' was recognized still as a node test
in the operators state, and whitespace was forced before a '*'
standing for multiplication.
- Namespaces and types:
o Hacked something in the namespace support to deal with the
empty prefix, since Vladimir is using "" instead of
NSDefaultElementPrefix.
- Validation:
o Added xsd built-in types in the new type system, missing.
o Added support for the validate expression. Currently, the only
form that is supported is the validate { Expr } form which
validates a single document, element or attribute node against
any declared top-level declaration.
May 21, 2004 - Mary and Doug
- More date/time library integration.
May 21, 2004 - Mary
- Caml API
o Added date/time/duration times to Caml API
Still working on C/Java APIs
o Added implicit timezone parameter to external context.
May 20, 2004 - Doug
- The date, time, and dateTime constructors now take
a dayTimeDuration option type to represent the timezone.
If the timezone is given as 'None' then the dynamic
context, as defined by the user (defulat localtime)
will be used instead.
May 20, 2004 - Mary
- WSDL Examples
o Removed wsdl_usecases/
o Moved content of wsdl_usecases to wsdl/examples/usecases
May 20, 2004 - Doug
- Fixed syntax error in pervasives.xqp
May 19, 2004 - Doug
- Arithmetic operations as well as comparison functions are
implemented for dates/times/durations.
Extraction functions are implemented for dates/times/durations
All operations on dates/times/durations have been finished
except for multiply and divide on durations, and timezone
adjustments. Waiting on context situations for these.
Next up will be testing this library.
May 18, 2004 - Mary & Jerome
- Updated jabber configuration:
Galax-dependent Jabber code in extensions/jabber
Galax-independent Jabber code in tools/jabber
Created extensions/jabber
Removed tools/jabber/*.mlp
May 14, 2004 - Doug
- Date/Time/Duration library
Added support for above types: lexing, semantic checks,
comparison functions
Working on integrating w/ rest of system and also arithmetic
functions
May 11, 2004 - Mary
Updated wsdl/examples/README
- Info on how to set up Jabber server and Gaim clients
Added galax/SOURCE_CODE
- Contains description of processing model and high-level
description of all source code directories
May 7, 2004 - Jerome
- Syntax:
o Fixed various bugs in the new XQuery parser related to the
distinction between 'expr' and 'expr_single', the former being
a sequence of the latter.
Now a top-level sequence (i.e., without parenthesis) is allowed
in the following:
- Function body
- Where clause of a FLWOR expression
- Input expression of a typeswitch
- Input expression of a conditional
- Inside an XPath predicate
- Inside a validate expression
o Changed the syntax of the validate expression to use "{ .. }"
instead of "( .. )".
May 4, 2004 - Mary
Bug Parade
(It's time to install Bugzilla! http://www.mozilla.org/projects/bugzilla/)
- idiv
Default type changed from double to integer
Reported by: Peter Coppens <Peter.Coppens@datadirect.com>
- Optimization
Long-standing bug : Substitution of Expr1 for Variable in Expr2
did not check whether Expr2 captured any free variables in Expr1
Reported by: Philippe Michiels <philippe.michiels@ua.ac.be>
- Short-circuited Boolean operators
Changed implementation of boolean and/or expressions to have
short-circuit semantics by normalizing them as if-then-else
Removed all occurrences of op_or and op_and
Reported by: Avinash Vyas <vyas@research.bell-labs.com>
- Static typing and dynamic evaluation of value comparisons
Value comparison operators should not permit comparison of
non-matching types, either statically or dynamically!
Reported by: Peter Coppens <Peter.Coppens@datadirect.com>
- Sibling axes
Changed evaluation/eval_util so that
sibling axes on attribute and namespace nodes should now yield
empty sequence.
Reported by: Philippe Michiels <philippe.michiels@ua.ac.be>
- Fixed open-file descriptor leak in base/io module
Reported by: Prolific 2000 <prolific2000@hotmail.com>
- Java API/galax_jni_stub.c
Changed Java_galapi_Galax_importMainModuleFromString
to
Java_galapi_Galax_nativeImportMainModuleFromString
Reported by: Wim Le Page <Wim.LePage@ua.ac.be>
May 1st, 2004 - Jerome
- Syntax:
o Changed 'define key' to 'declare key', more consistent with the
rest of the XQuery syntax.
o Added a parser for the new XQuery type system. Please
look at use cases or use the galax-mapschema tool to see
example of the new sytnax.
- Type system:
o Added a pretty-printer for core XQuery types.
o Changed the XQuery core AST to remove the old type
system. Changed sortdecls to issds
o Distinguished between complex and simple types in the core
XQuery ast pretty printer, and the new parser.
o Fixed a namespace problem for the wildcard built-in types
(xs:anyType).
o Added an option to print the normalized XQuery types to the
galax-mapschema command-line tool.
o Removed TSpecRef in the XQuery type AST, redundant with
TTypeRef for complex types and STypeRef for simple types.
o Temporarily moved
o Update pervasive.xq and usecases with the new type system
syntax.
o Removed the following 'OLD' modules:
ast/OLD_xquery_type_ast
ast/OLD_print_type
April 26, 2004 - Jerome
- Fixed a few more things in the (new) type system pretty-printer.
April 28, 2004 - Avinash
- Changed the implementation of Jungle. Now it uses first child and
next sibling index instead of a children index.
- Added a metadata db to the store (used for storing max_preorder
and user specified buffer size).
- Modified jungle to work with cursor interface.
- Added partial support for updates (delete and insert). Deletes
are *preferred* over inserts in the sense that no renumbering is
done for deletes. Insert is implemented as two step process where
in first step we compute all the atomic events (e.g. inserting
element node) and in second step apply them. This allows us to
avoid the process of renunbering for each node when inserting a
subtree. Added new file jungle_load_update.ml.
- Added support for user specified buffer size.
- Removed a bug in sync method in jungle.
April 24, 2004 - Jerome
- Compilation fix for the Jabber optional tool. Removed
./tools/jabber/glx_jabber.cmo from the standard targets in
./Makefile. Moved the jabber call built-in function back into the
./tools directory. Now uses dynamic registration of the function
at linking time. This makes the code more modular.
[Thanks to Mary for adding the registration function in the
Algebra_fn module]
April 23, 2004 - Jerome
- Named typing: Cleanup and fixes to the printing module for the new
XQuery type system. [Named typing, as written by Vladimir]
o default element namespace --> declare default element namespace
o Removed print_uqname, already in Print_common.
o Turned all define's into declare's more consistent with the new
XQuery syntax.
o Fixed some unwelcome nested boxes and whitespaces making the
pretty printer not so pretty.
o OLD/NAMED type modules remaining: This is a step for
preparation of the coming migration to the named type system
throughout the code. The goal is going to remove all of the
code marked as 'OLD'. Hopefully this will simplify
identification of what has to be removed and helped in
idenfying sub-components which can be done independently.
- Marked the old type system AST modules, and old schema
support as 'OLD'. Propagated this renaming to the rest of
the code, without any other change.
in ./ast:
Print_type -> OLD_print_type
Print_type_core -> OLD_print_type_core
Xquery_type_ast -> OLD_xquery_type_ast
Xquery_type_core_ast -> OLD_xquery_type_core_ast
in ./schema:
Namer -> Schema_namer
Prefix_manager -> Schema_prefix_manager
Validation_context -> Schema_validation_context
- Renamed the 'named' modules to the proper 'type' or 'schema'
modules.
in ./ast:
Print_named -> Print_type
Xquery_type_ast_named -> Xquery_type_ast
Xquery_type_ast_core_named -> Xquery_type_core_ast
in ./schema:
Glushkov -> OLD_glushkov
Schema -> OLD_schema
Schemautil -> OLD_schemautil
Simplification -> OLD_simplification
Subsumption -> OLD_subsumption
Theta -> OLD_theta
Typeutil -> OLD_typeutil
- Minor fixes to Schema_namer: Now uses fs: instead of glx:
as a namespace for anonymous types. Now uses the already
existing Id module in ./base as a counter.
- Toplevel:
o Added -verbose option in the galax-mapschema command-line.
April 20, 2004 - Nicola
- added a new tool, in ./tools/jabber, that acts as a wrapper for
Jabber client functions
- Algebra_fn: added the glx:jabber-buddies function which retrieves
the roster and the list of available buddies for a given user
Note: if ./config/Makefile_jabber.conf, the function only outputs
an error message
April 19, 2004 - Philippe
- C API:
o Work around for the other API functions added (see below).
April 18, 2004 - Philippe
- C API:
o Work around for the galax_set_sbdo_kind API function.
A problem with accessing the hash_variant from the C
code caused the API to crash. A temporary fix, consisting
of passing an integer instead of the hash_variant, was added.
April 16, 2004 - Jerome
- Added an internal optimization to cursor support to prevent
consecutive streaming/materialization overhead when applied
directly on a list.
This is similar to having a built-in optimization equivalent to:
Materialize(Stream(list)) == list
April 16, 2004 - Jerome
- Toplevel:
o Added a 'galax-compile' function which can be used to compile
a query, generate the XQuery core, etc. This command never
performs evaluation, and by default, it prints the final
result of compilation (optimized core).
April 16, 2004 - Philippe
- Reflection of C API functionality in Java API (ProcessingContext).
April 15, 2004 - Jerome
- Re-implemented F&O to use cursors as much as possible.
- Additional changes to F&O occurred, as part of this rewriting:
o Removed fn:item-at, not in F&O anymore.
o Changed op:to to return the empty sequence in case the starting
integer is strictly greater than the ending integer, instead of
creating a decreasing sequence.
- Fixed the static analysis rule that computes the number of uses of
a given variable within a query (was *completely*
wrong!). Reinstated the full variables inlining rewriting rule
based on this.
- Fixed evaluation of treat as, which was a no op! Now treat as
effectively performs dynamic type matching. In case static typing
is on, then treat should be removed during rewriting time.
April 15, 2004 - Mary
- Monitor
o Fixed monitor so that start/end monitor calls are completed for
API functions that raise exceptions
o C-API. Fixed bug in galax_monitor_last_call
o Java-API. Added functions ProcessingInstruction.setMonitorMem
and ProcessingInstruction.setMonitorTime to initialize monitor.
o examples/c-api,java-api Added tests for monitor last call and
monitor all calls.
- Cleaning
o Cleaning_judge. Exported free_variables in .mli
o Working on some bugs in this module
- Other
o Algebra_fn. Exported add_bltin_fctn in .mli
April 14, 2004 - Philippe
- Changed two typos that made the Java API fail to compile
(galax_wrap.ml).
April 8, 2004 - Jerome
- Re-submitted the Export_dm module in the CVS repository (not
updated for some reason).
April 7, 2004 - Jerome
- Complete rewriting of the physical datamodel, evaluation engine
and of the data model interface to introduce the use
of cursors. (I.e., some kind of a lazy sequence).
- Fixed export *not* to generate the string-value of nodes that do
not have a real atomic type associated to them. This fixes a bug
in export that would not generated the correct output stream
(although this was never tripped), and significantly
- Fixed a bug in normalization for (PrimaryExpr[$v]).
- Removed variable in-lining optimization which slows everything
down, when passed through an iterator!!!
March 23, 2004 - Nicola
- WSDL:
o Temporary implementation of service deployment using
the C API and the Apache API. The exported module is
fully copied in the stub and the WSDL interface must
be provided
- C API: fixed compilation problem (Caml monitor functions
returned sequences that had to be converted into lists)
March 22, 2004 - Mary
- fn:normalize-string
Aligned with F&O spec
March 16, 2004 - Jerome
- XQuery parsing:
o Short-term fix to bug in parsing for updates. Will have to be
revised eventually, but should hold for now. This implements
the exact same syntax that was in place before, but keep
"insert", "delete", and "replace" as keywords for now.
o Fix to the "QNAME (:" parsed as function calls bug.
March 15, 2004 - Nicola
- WSDL -- temporary solution for service export:
the exported module is copied at the beginning of
the server stub
TODO:
- update the apache XQuery module in order to support the
new stub structure
- implement WSDL generation (this will need to wait until static
typing is fully implemented)
March 15, 2004 - Nicola
- WSDL: added a simplified version of the xquery2soap toplevel
application
March 14, 2004 - Nicola
- glx:soap-call(): uses now the default processing context because
it must always send the request serialized as well-formed XML
- HTTP tool:
o changed the protocol from HTTP/1.1 to HTTP/1.0, but
still using the "Host" header for compatibility with
some servers
- WSDL:
o downgraded the client stub to a form similar to what it
was last year (i.e. no typing, no imported modules)
March 11, 2004 - Mary
- Added projects.html to website
March 10, 2004 - Jerome & Mary
- Cleaned-up the sequence interface. Removed unused
operations. Preparation to support cursors. Removed some dead-wood
code.
TODO:
- We still need to fix fn:lang() when there is no context node, or
no parameter.
- We need to make a review of the DDO code. One problem we found, is
that is sometimes uses the fs_distinct built-in name, and
sometimes uses the wrong (fs_uri,"distinct") variant.
- Change the implementation of the "has_element_content" method in
the datamodel. Currently is implemented by looking at all of the
children, which is very expensive. We should keep a boolean in the
data model (main memory *AND* Jungle), and use that boolean
instead of reconstructing it.
- Review of the last call F&O draft.
March 9, 2004 - Jerome
- Data Model:
o Full clean-up of support for sequence. Sequences are now opaque
types. This is to prepare the use of sequences as cursors.
o The abstract DM and the Galax data model interfaces only use
sequences now, never lists. The internal representation for the
main-memory data model is still based on lists.
o Re-implemented axis in the Galax data model to be using
sequences properly.
o ancestor and descendant are not implemented based on
ancestor-or-self, and descendant-or-self.
March 03, 2004 - Mary
- Precedence of normalization of Expr1//Expr2 was incorrect.
Previously, was:
Expr1/(desc-or-self::node()/Expr2)
It is now:
(Expr1/desc-or-self::node())/Expr2
February 24, 2004 - Mary
- Fixed compilation error in c_api/galax_wrap.ml
February 24, 2004 - Jerome
- A few simple fixes for Nicola and Avinash.
o Fixed pretty-printing of sequence types to comply to the new
syntax.
o Fixed bug in serialization of attribute nodes. Was using the
default prefix in the case the attribute is in the default
element namespace, instead of an explicit prefix.
February 15, 2004 - Nicola
- WSDL
o partial update of the server and client stub generators Still
unfunctional, mainly because the AST printer also needs to be
updated.
February 15, 2004 - Jerome
- XQuery:
o Imposed namespace discipline to variables. (Long-standing
mismatch with the spec). Now variables are resolved as any
other QName. See XQuery 1.0 document, Section [Section 3.1.2
Variable References].
o Implemented XQuery version declaration in the prolog. Galax
supports XQuery version "1.0" only.
- Documentation:
o Updated the STATUS file. Identified the various kind of
differences with the XQuery spec more clearly. (various XML
markup indicate whether we provide an extension, whether we
implement only a part of the spec, whether a functionality is
missing, or whether we implement a wrong semantics).
February 12, 2004 - Mary
- Command-line options
* Split control of monitor on memory and CPU
-monitor-mem on/off
-monitor-time on/off
-monitor on => -monitor-mem on -monitor-time on
- C API
* Added functions that control processing and monitor context.
These are analogs of functions in Processing_context and Monitor_context:
galax_monitor_of_last_call
galax_monitor_of_all_calls
galax_set_monitor_mem
galax_set_monitor_time
!!NB!! Following are not yet tested:
galax_set_normalization_phase
galax_set_typing_phase
galax_set_cleaning_phase
galax_set_evaluation_phase
galax_set_sbdo_kind
galax_set_typing_kind
galax_set_serialization_kind
galax_set_serialize_ns
galax_set_projection_kind
galax_set_xquery_whitespace
galax_set_xml_whitespace
galax_set_xml_pis_and_comments
- All API Examples
* Updated to conform to new syntax
February 12, 2004 - Jerome
- XQuery:
o Added support for external variables in the XQuery prolog. Now
external variables should be declared in the modules and Galax
checks that such variables are bound, as required by the spec.
o Added support for type declarations for global variables.
February 12, 2004 - Mary
- Monitor
o Replaced full heap collection and compaction by minor
collection (just promotes long-lived data to major heap).
Should speed up monitoring considerably.
February 10, 2004 - Jerome
- XML parsing:
o Fixed bug introduced in dealing with lexical states during SAX
parsing.
February 10, 2004 - Mary
- Monitor
* Previously, monitor was reporting *total size* of heap in bytes
instead of *number* of bytes allocated from the heap during
call. Memory metrics now include:
<!ELEMENT allocated_memory #PCDATA>
<!-- memory allocated during
individual call, prolog, or statement, in KB, formatted as %.3fK -->
<!ELEMENT live_memory #PCDATA> <!-- live memory in heap at end of call KB, formatted as %.3fK -->
- fn:root() corrected signature to fn:root(node?) as node?
February 9, 2004 - Jerome
*** NOTE: This version will ONLY compile on OCaml 3.07 ***
More work on parsing.
- Made the XML and XQuery parsers re-entrant.
o All lexers now take a lexing context as input. This lexing
context contains the stack for the lexical states handling, the
parsing kind and string buffers used during parsing.
o All global variables for lexical states, buffers, etc. have
been removed.
- Lexing cleanup.
o Generalized the use of the 'as' keyword in the lexers. This
simplifies greatly the extraction of names from
tokens. Simplified the Lexing_util module accordingly. This
also forces the use of OCaml 3.07.
- XQuery parsing bug fixes.
o Added back support for computed constructors, which had
completely disappeared (oops).
o Removed wrong '=' in default namespace declarations.
o Fixed bug in lexical states for sequence types.
o Fixed bug when using optional variables in case clauses.
February 6, 2004 - Philippe
- Fixed two bugs in the annot_ddo algorithm:
o annot_ddo.ml: predicate expressions should continue making automaton
transitions from the current state (not from the init-state)
o ddo_automaton.ml: fixed error in transition table
(Bug found by Jerome)
February 5, 2004 - Mary
- In Cleaning_rules and Procmod :
o Partitioned rewrite rules into non-overlapping sets of :
Generic rules that are independent of other optimization & typing options
Rules that are applicable when either weak or strong static typing is enabled
Rules that require strong static typing
Rule for OLD SBDO algorithm
Rule for removing ALL SBDO operations
Rules for new Automata DDO algorithm
o Rules are combined in Procmod based on command-line options.
Feburary 1, 2004 - Jerome
** WARNING: Major syntax change to align with the November 2003, last
call XQuery WDs. **
** Usecases all parse and evaluate properly. More fine-tuning and
testing for lexing/parsing/pretty-printing is still required
though. **
- XQuery: Major upgrade to the XQuery parser, and alignment with
the XQuery last call syntax.
o Major reorganization of the XQuery parser and lexer(s). Split
the lexers in smaller components based on lexical
states. Aligned (with a few optimizations) to the lexical
states as specified in the XQuery document, Appendix A.
o Removed the need for reserved keywords, using a combination of
long tokens and appropriate lexical states. Removed the syntax
for escaped NCNAME (i.e., :item, or :person are no longer
valid).
o The following QNames are not allowed as function names:
"comment", "text", "node", "processing-instruction", "if" and
"typeswitch". See XQuery last call draft, Appendix [A.3
Reserved Function Names].
o Changed the syntax for declarations: now declarations are
always terminated by the separator ';', and can appear in any
order.
o Removed the 'isnot' operator.
o Fixed a bug in the parsing of external functions. Changed the
syntax of signature to force the use of variables in the input
parameters.
o Fixed long-standing lexing bug: now function
calls/declarations can have whitespace between the function
name and the parenthesis. I.e.,: local:f () is supported.
o Aligned existing sequence type to the new syntax (without
extensions):
empty --> empty()
node --> node()
text --> text()
attribute --> attribute()
element --> element()
document -> document-node()
element a --> element(a)
element of type T --> element(*,T)
attribute a --> attribute(a)
attribute of type T --> attribute(*,T)
o Removed obsolete 'sort by' syntax, which we had left around.
o Updated the syntax for 'treat as', and 'cast as':
treat as SequenceType (Expr) --> Expr treat as SequenceType
cast as SequenceType (Expr) --> Expr cast as SequenceType
January 29, 2004 - Jerome
- Main memory datamodel:
o Renamed modules for consistency:
Datamodel --> Galax_dm
Load --> Galax_load
Load_context --> Galax_load_context
Galax_copynode --> Galax_node_copy
- XQuery:
o Changed syntax of function declarations:
define function --> declare function
o Switch to the new syntax for external functions (used in
./stdlib/pervasives.xqp only for now).
declare function signature... --> declare function ... external
- Namespaces:
o Changed namespace environment behavior to keep track of
default namespace rebindings.
- F&O:
o Implemented fn:deep-equal(), notably used in use case 'XMP'.
- Demo:
o Fixed the demo to work with the new Galax API, and processing
model.
January 26, 2004 - Jerome
- XML Schema:
o Fixed bug in lookup of global element with substitution
groups during validation.
- XQuery:
o Aligned global variable syntax to the new XQuery syntax:
declare global --> define variable
o Removed obsolete single line comment starting with '#'.
- Namespaces:
o Fixed bug in dealing with empty namespaces: now raises an
error when binding an explicit prefix to the empty namespace,
and reset the default namespace to the empty namespace. See
Namespace REC [2. Declaring Namespaces]. [ Bug courtesy of
Irini Fundulaki ]
- F&O:
o Implemented the fn:number built-in function. [Request from Jan
Hidders.]
- Tools:
o Removed pxp_lexers module, not used.
January 23, 2004 - Philippe
- Monitor:
o Adjusted the monitor to use real time instead of user+system
time.
January 20, 2004 - Jerome
- Documentation:
o Added Philippe and Rob in the list of contributors.
- XQuery syntax:
o Celebrated the start of the big syntax upgrade by switching
from {-- --} to (: :) :)!
January 19, 2004 - Jerome
- Jungle:
o Fixed the compilation process to make sure Jungle can be
compiled with the C and Java APIs, and provide additional
flexibility when using Galax with optional Caml-C tools
support.
o Fixed bug in the generation of the prefix/uri namespace
bindings in the persistant store.
- Namespaces:
o Separated various default set of namespaces for: XML, XML
Schema and XQuery. This is a first shy step toward a more
rational support for namespaces.
o Put back Mary's fix for the initialization of the uri/prefix
global table (for now).
o Fixed insertion of uri/prefix binding to only register the
first prefix for a given uri.
** Hope this is not going to create problems elswhere... **
- XML Schema:
o Hooked up Vladimir's import/normalization code to the
"galax-parse" command-line tool. Validation can be called as
follows:
galax-parse document.xml -validate -xmlschema schema.xsd
o Fixed problem in default namespaces for XML Schema import and
normalization. Now uses the 'default_xmlschema_nsenv ()'
function.
o Replaced "galax-uri-for-anonymous-types" namespace by the
built-in glx: namespace.
** Vladimir: please double check my changes there. **
** Still more debugging is required **
** Better error messages are required **
January 15, 2004 - Vladimir
- XML Schema:
o Beginnings of Schema normalization (from imported Schema
syntax to XQuery named core syntax) in schema/schema_norm.
January 14, 2004 - Mary
- Namespace:
o Added all built-in prefix/uri pairs to global prefix/uri table
to fix bug in printing of normalized expressions.
January 14, 2004 - Jerome
- XML Schema:
o Added back type with Bound+minOccurs+maxOccurs as part of the
core type system/normalized schema. Propagated the change in
the validation code.
January 13, 2004 - Jerome
- XML Schema:
o Fixed bug in computation of the root content model in the
presence of substitution groups.
o Added some support for the derived built-in atomic
types. (e.g., xs:short, xs:token). There is no support for
facets, just the structural and named part is supported.
o Made all built-in type names visible in Datatype_util.
o Added a module that contains the built-in XML Schema types.
This module defines all primitive and derived atomic type,
the Ur types, and the built-in attributes.
January 13 2004 - Avinash
- Jungle:
o Commited changes to smalldb_stubs.c which somehow
did not get reflected in cvs repository.
o Modified the loading of xml document in Jungle with
the use of nodeid_context.
January 12, 2003 - Jerome
- Makefiles:
o Fixed minor compilation problems with the new ./procctxt
directory. (missing clean and depend rules).
- XML Schema:
o Fixed several bugs in validation of attributes, related to
transitions in the attribute part of the content model.
o Fixed bug in interpretation of list and union simple
types. Now works when directly referencing built-in atomic
types.
o Fixed bug in lookup for substitution group (was doing it the
wrong way around!).
- SAX parsing:
o Added an early check for duplicate attributes. This occurs
when resolving the stream, as it is only then that you can
know whether two attributes are really the same.
January 12, 2004 - Mary
- API and API Examples
o Fixed several bugs in Galax API
o Aligned C and Java API with new Galax API
o Updated Caml, C, and Java examples in examples/*_api to be
aligned with new Galax API that uses Galax_io input and output
specs.
January 11, 2004 - Mary
- Monitor
o monitor_of_last_call yields document of element call
monitor_of_all_calls yields document of element monitor
o Use "-serialize wf" to print monitor output as well-formed document
- Processing_context
o Moved processing_context from base/ to new procctxt/ directory
o Cache of loaded documents is maintained in processing_context
Global document cache _no longer_ exists
o _All document-load functions (e.g., fn:doc(),
Galax.load_document) use document cache in processing_context
January 10, 2004 - Jerome
- XML Schema:
o Fixed bug in computation of the content model transitions for
sequence and interleaving.
o Allows some of the non-well-formed error messages to filter
up through validation (was catching exceptions a bit to
aggressively before).
January 8, 2004 - Mary
- Monitor
Re-structured the monitor module as follows:
o Removed monitor flags from Conf module
o Added Monitor_context to base/ ; monitor_context is maintained
in processing_context
o Added Monitor module interface to Galax user API
(in Galax/lib/caml)
o Monitor output corresponds to calls to Galax user API.
See documentation in Monitor.{mli,ml} for details
January 8, 2004 - Jerome
- XML Schema:
o Improved the error message when element has xsi:nil set to
true, the element declaration is nillable, but the element is
not empty.
o Applied minor changes to the Core Type AST, suggested by
Vladimir.
January 7, 2004 - Jerome
- XML Schema:
o First version of XML Schema validation works! *** STILL
TESTING! ***
January 6, 2004 - Jerome and Avinash
- Node identity:
o Added support for a nodeid_context, which can be used to
parameterize the way node identifiers are created during
loading.
o Removed post order from the Galax main memory data model. It
is not used, and we do not need to maintain it.
o min and max pre/post order are now defined in the Nodeid
module.
- Updates:
o Started folding back support for updates in the new Galax (at
last!). This only concerns the main-memory data model for
now. Insert and delete are (partially) supported again!
o Dispatched updates methods at the right location in the Galax
data model.
January 5, 2004 - Vladimir
- Schema_import:
o added function import_embedded that takes a namespace
environment as an additional argument; this required adding:
- Namespace:
o added function active_bindings: nsenv -> delta_bindings
January 5, 2004 - Avinash
- Jungle :
o Modified the nodeid to exclude post order. The nodeid is
just the (docid, preorder) pair.
o Increased the cache used by BerkeleyDB.
January 3, 2004 - Nicola
- Wsdl import and export:
o added support for typing, needs changes in the schema import
mechanisms to make it work for all cases
December 29, 2003 - Jerome
- Node identity:
o Fixed wrongly commited change to nodeid.ml.
December 29, 2003 - Jerome
- Bug fixes:
o Now works with local file names that contain ':'.
o Built-in simple types now behaves corrrectly with namespace
resolution (except in the old type system syntax still --
shall be fixed when switching to the new type system).
- XML Schema:
o Added set of new modules for XML Schema validation. Still
working on them. They are not tied to the rest of the system
yet.
- Node identity:
o Added support for node identity based on a single Pre order
of various kinds (integer, string, and float). This should be
useful for both Jungle and the LDAP wrapper.
December 28, 2003 - Nicola
- Wsdl:
o Reverted Wsdl_load to Ocamlp4o syntax.
Replaced xml_streams with resolved_xml_streams and old namespace
environment management with standard namespace env. management based
on resolved streams.
Added a function in schema_import to be able to load a schema from
an XML element.
December 26, 2003 - Avinash
- Jungle:
o Removed a bug in the stub, in reading through cursor
December 26, 2003 - Avinash
- Jungle:
o Added Jungle_encode module for encoding integer as string of
characters, creating a fixed 4 byte, module 256 encoding.
o Modified the IDL and stub to allow storing the char
encoding of numbers. Currently few parts of the stub
are hand coded, i.e. to convert a c string to caml string.
o IDL is also modified to compute the length of the string
automatically within the stub instead of using strlen in C.
o Modified the main record structure to use the above said
encoding thus creating fix length records. All other indexes
also stores integer in the new encoding.
December 18, 2003 - Mary
- Fixed typesafe_call_rewrite to be more efficient.
December 18, 2003 - Avinash
- Jungle:
o Fixed a bug in Jungle.sync method.
o Implemented a new set of Indexes for Jungle. Now Jungle has
a seperate index for pre_post, attributes and childrens. Post
order is no longer stored in the main records.
o Children and attribute axis now uses these new indexes.
December 17, 2003 - Nicola
- Wsdl:
o Added support for the server interface of an exported module
in ./wsdl/wsdl_apache.ml
It is not fully integrated with the Apache API.
December 15, 2003 - Jerome and Avinash
- Validation:
o Renamed Validation-sax to validation. Started implementation
of SAX-based validation.
- Jungle:
o Fixed a couple of problems with built-in support in Jungle.
o Moved implementation of descendant and ancestor axis from the
generic DM to each specific implementations. Implementation
is still based on recursive calls to child::, but now can
easily be changed by each implementation.
December 15, 2003 - Mary
- Error
o Added generic Static_Error to cover all unspecific static
errors.
- Semantics of functions calls
o Namespaces:
(1) function declarations must have a prefix.
(2) user function declarations must not be in one of the built-in
namespaces, except the local namespace.
(3) default default function namespace is fn
[TODO: static name check for function decls in library modules,
when modules are implemented]
o Architecture:
(5) fn_static moved back to ./stdlib
o Compilation:
(6) The AST for non-overloaded function *calls* in the core includes
the signature for the function, in which each type parameter is
optional.
*** NB: Use Norm_util.fmkCECall to construct _all_ function calls! ***
Overloaded function calls unchanged as they are resolved to
non-overloaded calls by applying type matching to arguments
dynamically.
(6a) The AST for function bodies in the core includes the return
type so result of function body can be type matched against
return type.
(7) Normalization now uses function calls with in-line signatures
(8) Normalization looks up the type signature for the function and
inlines it at the location of the function call.
(9) Type checking of non-overloaded function calls uses inlined
function signature
(The inlined signature is only applied to non-overloaded function
calls; dispatching and typing of overloaded function calls still
depend on the static context.)
(10) Optimization of non-overloaded function call removes dynamic
type matches on arguments
(11) Dynamic semantics for non-overloaded function calls uses
the in-line signature for type matching.
December 12, 2003 - Jerome
- Extended fn:doc() to support access to back-end stores (e.g.,
Jungle, PADS)
o Added registration of new URI methods (e.g., "jungle:...",
"pads:...") in Glx_http.
o Renamed ./stdlib/store to ./stdlib/fn_doc
o Moved most of the existing fn:doc code into ./stdlin/fn_doc
o Implemented support to register access to a back-end from a
given URI, and hooked this access to the fn:doc() function.
o Added registration for Jungle in ./jungle/jungle_register.ml
o Phased data model linking as: Galax native data model,
followed by stdlib, followed by external data models (e.g.,
Jungle, PADS).
** Note: registration for PADS should be added. **
- Bug fixes:
o Fixed long standing (about 1 year old!) bug that Galax would
not run when installed in a directory containing a whitespace
name on Win32, due to a failure when building the default
base URI.
- 11 December 2003, Avinash
+ Added child index (btree) in Jungle to speed up
navigation along child axis i.e computation of
children .
December 11, 2003 - Avinash
- Added child index (btree) in Jungle to speed up navigation along
child axis i.e computation of children .
December 10, 2003 - Vladimir
- Added ast/xquery_type_ast_core_named.mli
- Minor clean-up: removed schema-related functions from top_util.ml,
in-lining their code in galax-mapschema.ml.
December 10, 2003 - Vladimir
- Added ast/xquery_type_ast_core_named.mli
December 10, 2003 - Roel
- Replaced the previous DDO automata (which stopped as soon as the
intermediate result was not in document-order or there were duplicates)
with a new automaton that will have intermediate results always in
document order without duplicates (i.e. only use necessary DDO-operations).
Using this approach we can remove more DDO-operations than with the old
automata.
December 9, 2003 - Avinash Vyas
+ Modified Jungle to solve the namespace problem.
Jungle now stores the uri-prefix mapping and builds
the mapping inside Galax's in-memory Hashtables when
a document from store is opened.
+ Added a function to prefix_to_string in namespace module.
December 5, 2003 - Jerome
- SBDO:
o Fixed bug on the semantics of |, union, except, and intersect, now
sorting by document order properly.
o Added support for complete removal of SBDO operations.
- Clean up of command-line parameters:
o Turned the SBDO command-line parameters as one parameter with
multiple options:
-sbdo remove, preserve, adhoc, or automata (new)
where preserve means : keep all SBDO operations
remove means : remove all SBDO operations
adhoc means : the old ad hoc algorithm
automata means : the new automata-based algorithm
o Removed the following global variables from ./base/conf:
mapping, typing, optim, eval, sbdo, ddo, weak,
serialize_kind, serialize_ns, serialize_xsitype,
serialize_id, projection, optimized_projection,
xquery_whitespace, xml_whitespace, xml_pis_and_comments,
stdlib.
o Removed usage of global variable 'typing' in the cleaning
processing phase. This required access to the static_context
notably in cleaning_judge.can_fail judgment.
o Added an operation to get the processing context from the
module context in the API.
o Moved serialization behavior parameters in
Processing_context. All functions in serialization are now
parameterized by the Processing context. This propagates
notably to the API, where serialization operations take the
processing context as input.
o Added support to set-up arguments from the command lines in the
processing context in Top_config and Processing_context.
o check_config now takes the processing context as input. Moved
it to Processing_context.
o Now always building the default processing context and passing
it to process_args to set up the right context from the command
line.
- Processing model:
o Fixed bug in serialization of the result, not printing the
correct headers in verbose mode.
December 4, 2003 - Jerome and Avinash
- Jungle:
o Integrated and fixed the jungle-load utility written by
Avinash. This allows to populate a Jungle store from the
command line directly.
o Made the Namespace.uri_prefix_table visible. Necessary to
recover prefixes in Jungle.
- Toplevel:
o Split Toputils into Top_util and Top_config. Top_config should
contain all the operations necessary to perform the
configuration of Galax from the command line. Note that
currently a lot of this is still in ./base/conf
December 1, 2003 - Jerome
- Bug fixed:
o Fixed XML parsing bug for documents using the '<!DOCTYPE doc
PUBLIC ...>' kind of DTD declaration. [ Bug report courtesy of
Dan Suciu ]
November 28, 2003 - Jerome
- Support for configurable Input/Ouput.
o Added a notion of I/O for Galax. Input currently supported
are: string buffers, local files, URL's for both local files
and http, and Caml input channels. Ouput currently supported
are string buffers, local files, Caml output channels, or Caml
formatters.
o Created Galax_io module which contains the I/O types.
o Cleaned up Glx_pxp: Moved all operations on character
encodings from Glx_pxp to Encoding.
o Renamed Glx_pxp to Io, contains now internal operations on
Galax_io types.
o Reimplemented toplevel parsing operations in terms of IO,
avoiding duplicationg (_from_string, _from_file, functions are
now covered in one _from_io function and also supports http
now).
o Reimplemented toplevel SAX parsing operations in terms of IO,
avoiding duplicationg (_from_string, _from_file, and _from_uri
functions are now covered in one _from_io function).
o Reimplemented toplevel Galax API operations (Caml side) in
terms of IO, avoiding duplicating (_from_string, _from_file,
and _from_uri functions are now covered in one function).
o Pulled calls to the 'escaping' function used for the web demo
from the serialization call in Galapi, and left it at the demo
level.
- Processing model and parsing:
o Added parsing as a processing phase. Parsing operations
operate over Galax Inputs (see above).
o Propagated the change to Galapi, which does not directly
call low-level parsing functions anymore.
o Separated parsing utilities (in Parse_util) from top-level
parsing functions (in Parse_top). Removed Parseutil.
o Moved 'parsing' of the pervasive module from toputil to
Parse_top.
o Removed dead wood in the SAX parser.
November 19, 2003 - Nicola
- wsdl import/export
o merged SOAP Envelope generation subroutines for WSDL
import and export
November 18, 2003 - Mary
- Updated galax/usecases directory with bug fixes to XMark
- Optimization
o cleaning_rules.ml:
- Fixed bug that triggered infinite rewriting of some- and
every- expressions.
- Disabled the rewriting rules for eliminating functions that
convert xdt:untypedAtomic values to a target type, because they
depend on the soundness of static typing and validation, i.e.,
on validation having correctly annotated data-model values with
their types, but validation is not yet implemented completely.
These rules should be re-enabled when named typing and
validation are implemented.
o rewrite_context.mli
- Added 'a printer parameter so that 'a cexprs can be printed
(for debugging) from within generic rewriter module.
- Command-line options
o -ddo on => generic rules + ddo
November 18, 2003 - Mary
- Changed command-line options to be mutually exclusive
Default (i.e., no options) => -optim on -sbdo on
-optim on -sbdo off => generic rules only
-optim on -sbdo on => generic rules + sbdo
-ddo on => ddo only (for now)
November 18, 2003 - Roel
- Cleaning:
o Fixed Not_Found exception: for now we consider namespace and attribute
axes to behave in the same way as a child axis.
November 17, 2003 - Mary
- Typing
o simplification.ml :
Change to elim_subtype_duplicates to remove duplicates of element
references _before_ applying Subsumption.isSubtype, which does not
terminate if comparing the same recursive type to itself.
This problem arises when simplifying unions in which the same
recursive type may appear multiple times (e.g., for desc-or-self).
TODO: Jerome and Mary will find a permanent solution.
o scheamutil.ml :
The definition of recfactor_aux was changed to yield more compact
unions, which _dramatically_ speeds up type simplification.
Please see long explanations in schemautil.ml
November 14, 2003 - Mary
- Updated galax/usecases from XQueryUnit to align with new version
- Moved Fn_static from stdlib/ to schema/, because normalization
depends on info about functions with special typing rules.
November 14, 2003 - Mary
- Changed typing.ml so that element constructors pass static typing.
This is a temporary fix until element construction is implemented
completely and correctly. See comments with label **Element
Construction HACK** in eval_expr.ml and typing.ml.
November 14, 2003 - Mary
- Fixed problem in normalization of functions with special typing
rules; should not use generic let-type assertions.
November 13, 2003 - Mary
- Command-line switches
o -ddo on always implies -static on (for now) and -sbdo off
o -sbdo on always implies -ddo off
- Monitoring and Printing
o Fixed bug in printing document-processing times (was printing
absolute instead of relative);
o Moved most of monitoring and printing of intermediate results
into Procmod_phases
o Monitoring and printing of Projection and Serialization remain
in Galax API, but should be moved as well.
- Toplevel
o Moved several common functions in Toputils
November 13, 2003 - Philippe
- Cleaning
o Added missing constructor in ddo-pattern matching
o Added support for variable-cardinality optimization (annot_ddo.ml)
Note: this optimization will work best with static typing turned on
November 13, 2003 - Philippe and Roel
- Cleaning
o Fixed bug in accept states of DDO-automaton
November 12, 2003 - Mary
- Typeutil & Schemautil
o Added max1_property to typeutil.mli
o Moved following functions from schemautil to typeutil so that
their result types could be simplified (Typeutil depends on
Simplification module, which depends on Schemautil):
apply_to_unit_types
extract_content_model
extract_attribute_model
(We are not consistent about which type functions simplify
before returning a result type -- we should revisit this issue
when updating named typing)
- Normalization
o Fixed several bugs (using CECall to call overloaded functions)
November 12, 2003 - Jerome
- Several fixes to the DDO support.
o Fixed bug in the rewriting using glx:distinct-docorder instead
of fs:distinct-docorder.
o Removed dependency of ddo optim on static typing.
o Added interface to the Ddo_automaton.
o Fixed a few stylistic problem, and added the standard boiler
plate at the beginning of modules.
November 10, 2003 - Mary
- Printing annotations
o Changed -print-type-annotations switch to -print-annotations
(default is false)
o Changed Print_xquery_core.print_expr to conditionally print any annotation
November 9, 2003 - Mary
More changes to align w/ Nov'03 Use Cases
- Parser
o Changed precedence of << and >> to be same as other infix
(in)equality operators
(Tripped bug in TREE use case)
- Fixed bugs in serialize_float and _string_of_decimal
Implemented serialization rules for floats & decimals in F&O
Section 17.7.
November 9, 2003 - Nicola
- WSDL
o Updated wsdl stub and skeleton generation to respect the last
changes in namespace declaration.
o Fixed some errors in treating document style definitions.
However, the namespace environment is still not implemented
properly and predefined soap:faults are not integrated with
the Apache module.
November 7, 2003 - Mary
- Changed type semantics for fn:sum,... again.
Default 2nd arg is now xsd:integer
- examples/
Fixed all local function def'ns and calls to be in local:
namespace.
November 7, 2003 - Philippe and Roel
- Cleaning
o Added the distinct-docorder optimization algorithm (annot_ddo.ml*)
o Added DDO-automaton implementation (ddo_automaton.ml)
o Added the cleaning_rule for the DDO-optimization
- Procmod
o Procmod_phases.ml: added toplevel ruleset for application of
ddo-optimization
- General
o Added entry for ddo_automaton in Makefile
November 7, 2003 - Philippe and Roel
- Normalization
o Fixed the normalization rule for the slash expression, removed
redundant insertion of distinct-docorder operation.
***** Galax Release 0.3.5 November 6, 2003 *****
November 5, 2003 - Mary
- Parser
o Removed "end" as keyword -- no longer needed
- Usecases
o Aligned with Nov 14 WD
(Still working on this; Define deep-equal())
o Regenerated files in usecases/
- Datamodel
o Fixed typed-value() of atttribute and text nodes to return
untypedAtomic, not string.
- Normalization
o Fixed normalization of absolute path expressions (/Expr and
//Expr) to be left associative.
- General
o Added "local" namespace prefix
November 5, 2003 - Jerome
- Fixes to serialization:
o Fixed printing in XQuery syntax for atomic values. Now prints a
valid XQuery expression with the appropriate type.
November 4, 2003 - Mary
- F&O
o Added back fn:document() as synonym for fn:doc()
November 3, 2003 - Jerome
- Fixes to pretty-printing:
o Fixed bug on pretty-printing of enclosed expressions (was
printing '{' '}' twice).
o Fixed bug on pretty-printing of attribute content (was not
dealing with multiple enclosed expressions properly. Now
switching between enclosed expression and text properly).
o Fixed bug in pretty-printing of path expressions ('/' is
printed as left-associative, i.e., a/(b/c) != (a/b)/c = a/b/c).
November 2, 2003 - Mary
- cleaning/cleaning_rules.ml
o Fixed bug in which type-dependent rewrite rules were
(incorrectly) applied after weak typing
November 1, 2003 - Jerome
- Fixes to the Web site.
o Upgraded to the new API.
o Fixed bug in ./netstring tool under Ocaml 3.07 (HTML encoding
did not work anymore due to changes to Str).
o Added new entry for CVS-Web server.
o Added Vladimir as a contributor.
o Added install-front target to allow installation of the Web
site, leaving the demo alone.
October 31, 2003 - Mary
- datatypes/datatypes_lexer.mll
o Fixed bug in which whitespace was not ignored when casting from
untypedAtomic to any target atomic type.
- Top-level rewrite_* and cleaning_* functions now take two sets of
rules:
o First set is applied only to the top-level AST node in the
input expr/statement.
o Second set is applied recursively to every AST node in the input
expr/statement.
See procmod_phases for initialization of rule sets.
- F&O Last Call Alignment
Removed:
fn:context-item
fn:node-kind
fn:sequence-node-identical
Renamed:
fn:string-pad => glx:string-pad
fn:distinct-nodes => fs:distinct
fn:document => fn:doc
Added:
fn:abs
fn:reverse
Changed:
fn:floor, fn:ceiling, fn:round to be polymorphic
fn:sum to take optional 2nd argument
- normalization/norm_util.ml
o Removed conditional normalization of SBDO operations
All SBDO operations as defined in FS are in normalized exprs.
They may be removed by rewritings
- cleaning/cleaning_rules.ml
o Added type-based rewriting rules for following special
functions:
fs:untyped-to-{double,string,integer}
fs:untyped-to-any
fs:promote-to-numeric
fs:convert-to-simple-operand
o Added rule to convert overloaded function calls to
non-overloaded calls
- typing/typing_call.ml
o Substantially simplified static typing of non-overloaded
function calls. Removed unnessary promotion rules
October 30, 2003 - Jerome
- Bug fixes:
o Fixed bug in API not serializing the namespace
declarations. Added corresponding tests in the API examples.
o XQuery element construction should not keep the xmlns:
namespace declarations at the data model level. (Fix located in
Xquery_ast_util.get_ns_attributes used during normalization).
October 29, 2003 - Jerome
** Warning, the Galax API has changed. People using it will have to
upgrade their code to the new interfaces and library/header file
names. **
The modules which are visible in the API are:
Galax (* Main interface *)
Dm (* Object-Oriented Datamodel *)
Dm_functions (* Short-cut functions on the data model *)
Processing_context (* The basic processing context *)
Namespace (* For the namespace environment *)
Error (* For Galax errors *)
Fn_error (* For user-defined errors *)
More work is probably needed to avoid having too much extra stuff
available in Namespace,
- Galapi: Serious consolidation of the API's
o Removed duplicate glx module from the caml_api. Used part of it
for the c_api stub.
o Renamed all libraries to Galax (in Caml, C, and Java), instead
of glx. Renamed all calls to use galax instead of glx in the C
API.
o Wrote a dm_functions module that provide functional operations
on the data model, and is reflected in the C API.
o Removed the load_document_validate, not used right now.
o Separated datatypes definitions (in Datatypes) from operations
on them (Datatypes_util).
- Apache tool:
o Fixed wrong directory in main Makefile.
o Fixed library names (glx to galax) in conf/Makefile_apache.
October 28, 2003 - Nicola
- Modifications in the wsdl stub construction
o Wsdl_ast and Wsdl_load were adapted to recognize
the whole SOAP binding
o Wsdl_import changed to respect the semantics defined
in the paper draft
o Fixed several bugs (e.g. generated variable names must
be different from XQuery keywords)
- Added a new tool: apache
o It implements an apache module for XQuery SOAP servers
(see INSTALL file)
o It is only experimental and it will probably work only
in a limited number of cases.
o Like for the client stubs, some implementations issues
cannot be addressed without using strong typing and
schema import.
o Modified the Makefile and config/Makefile
October 24, 2003 - Jerome
- Test for the new CVS server.
October 23, 2003 - Jerome
- Processing model:
o More cleaning up of Galapi and Procmod. Notably all operations
on expr and update have disappeared to use operations on
statements only.
October 22, 2003 - Mary
- Printing 'a cexpr:
o Changed Print_xquery_core.print_cexpr to be polymorphic
Now takes function that prints 'a annotation
o In Print_top, added print functions for ucexpr and tcexpr
- Bug fix: Added prototype value for anyURI values.
October 22, 2003 - Nicola
- Added declaration of glx_load_document_from_string()
in galapi/glx.ml
October 21, 2003 - Mary
- New normalization & static typing of path expressions
o Added normalization & static typing for [1], [last()], and
[NumericLiteral]
October 19, 2003 - Mary
- New normalization of function calls:
o Alignment of overloaded & non-overloaded function calls with
formal semantics
o Removed all typeswitches from normalization of arithmetic, node,
general-comp, and value-comp operators.
o CEApp replaced by CECall (for non-overloaded functions) and
CEOverloadedCall (for overloaded functions).
o Implemented dynamic semantics of following FS functions, used in
normalization of function calls:
fs:convert-simple-operand
fs:untyped-to-{integer,double,string,any}
fs:promote-to-numeric
o Added namespace/funcs_and_ops -- contains mneumonic names for
all functions & operators. No more hard-coding of function or
op names in code!! Just say NO!
- Aligned signatures of following F&O functions:
o fn:resolve-uri(xsd:string) as xsd:string
fn:resolve-uri(xsd:string, xsd:string) as xsd:string
October 18, 2003 - Nicola
- Bug fixes in the WSDL parser
o If certain "basic" elements such as "part", "address", etc
contained subelements, the parser declared that the document
was invalid. The correct behaviour is to ignore them, even
if they cannot be interpreted.
- Corrected typing error in Galax.java, function
nativeLoadDocumentFromString()
October 17, 2003 - Jerome
- Simple fixes for Nicola and Avinash.
o Fixed bug with the built-in "empty:" prefix, necessary for
Avinash and XML Schema import. I suspect it will also be
useful for WSDL import...
o Added load_document_from_string function in the CAML, C and
Java API.
October 14, 2003 - Jerome
- Fixes to the processing model:
o Galapi now calls the right evaluation function for the query
prolog, taking keys definitions into account (fixes bug to
key/keyref support).
o Made updates to return a value (empty sequence) as
well. Propagated that change to Galapi, and the C API.
- Fixed Galax to work with ocaml 3.07:
o Upgraded ./tools/pxp-engine to use pxp-1.1.6, which use the
standard ocaml lexer instead of the previous pxp-specific
lexer (was not compiling on ocaml 3.07).
September 23, 2003 - Mary
- Path expressions
o Changed '/' and '//' to be left-associative
!!NB!! Current optimization breaks associativity.
Disable if query dependent on associativity of / or //.
o Added following-sibling and preceding-sibling axes.
o Waiting on following and preceding axes until we have
an efficient evaluation strategy
September 23, 2003 - Mary
- Re-synchronization changes.
o Fixed exceptions in algebra/algebra_fn
o Fixed normalization of computed text nodes in
normalization/norm_top.ml
o Wrapped all errors in examples/c_api/c-test.c
September 19, 2003 - Nicola
- Wsdl:
o Added Wsdl_util which provides generic functions for processing
WSDL ASTs.
o Changed Wsdl_import and added Wsdl_export that generates
server stubs from WSDL ASTs.
September 19, 2003 - Jerome
- Processing model:
o Further clean-up of the processing model.
o Renamed "rewriting" phase into "cleaning" phase.
o Added normalization, evaluation as part of the processing
model.
o Separated the 'processing context' to be available right from
the start in ./base. The 'processing context' is now added into
the normalization context.
- Optimization:
o Duplicated the existing Galax core to serve as an algebra. (see
./ast/xquery_algebra_ast.mli)
o Added a compilation phase from the XQuery core to the algebra.
- Evaluation:
o Changed the implementation of SBDO to first sort, then remove
duplicates in the sorted list, which is much more
efficient. [Change suggested by Philippe]
September 17, 2003 - Jerome
- Major update to: normalization, static typing, and function
calls. Still more to come.
*** WARNING: STILL VERY UNSTABLE! ALMOST NO TEST PERFORMED ***
September 15, 2003 - Avinash
- Jungle:
o Added support for sync function to flush the data from memory
onto stable/permanent storage.
August 28, 2003 - Jerome
- Misc bug fixes:
o Fixed serialization of namespace declarations in top-level
elements when needed. [Bug reported by Peter]
o Fixed bug in serialization of namespaces declarations in the
XQuery syntax. [Bug reported by Peter]
o Fixed bug in new printing of expanded names. Was printing
{uri}:ncname instead of {uri}ncname. [Bug reported by Avinash]
o Added uri/prefix binding table hacks for Peter:
- [clear_prefix_uri_table] clears the global uri/prefix
table
- [init_prefix_uri_table] re-initializes the global
uri/prefix table with some given bindings.
o Put xml:lang back, forgotten in the new data model. [Bug
reported by Peter]
o Fixed bug in stand-alone attribute / text constructors. Now
use the Enclosed expression and generates the right whitespace
between atomic values.
o Fixed bug in construction of elements, allowing to contain
document nodes, introduced when building the new data model.
o Fixed bug in construction of elements, allowing to contain
attribute nodes in the middle, introduced when building the
new data model.
o Fixed bug in fn:name, was not working for QNames in the
default element namespace.
o Fixed bug in website makefile, , should have used $(MAKE)
instead of make.
August 26, 2003 - Avinash
- Jungle now stores attribute values (reused the db for storing
text) which was missing in earlier scheme.
- Added partial support for persistent jungle store. You could
open a existing jungle store, provided you closed it before
exiting. (requires more work though).
August 25, 2003 - Jerome
- Processing model. Deep clean-up of the processing model support:
o Removed polymorphism at boundaries between processing
places. Those were introduced when adding polymorphic type
annotations to the core. Notably its removed from:
The processing model modules
Galapi
Dynamic_context
- AST.
o Moved specific annotated AST's in the ./ast directory.
- Rewriting. Reorganized the rewriting phase.
o Separated the 'generic' rewriting code (into ./rewriting) from
the specific cleaning rulse (into ./cleaning).
o Rewriting supports two families of operations:
-- rewritings which go from 'a cexpr to 'a cexpr. There must
be the same type annotation as input and output so that fix
point can be applied.
-- annotations which go from 'a cexpr to 'b cexpr. This does
not change the structure of the AST, but can change the
annotation.
- Typing.
o Added Notyping module, which annotate the core with xs:anyType,
and can be used when static typing is off.
August 22, 2003 - Avinash
- Children and Parent evaluation working now in Jungle
- Added support for getting attributes, element_name,
attribute_name, content.
August 22, 2003 - Jerome
- Fixed Makefile bug in Jungle introduced yesterday... (sorry)
August 21, 2003 - Jerome, Avinash
- Added support for children et al in Jungle.
- Added functions to serialize/deserialize QNames for Jungle's
benefit.
- ** NOTE: Now all node ids start at '1' instead of '0'. '0' can
then be used as an 'exception' value.
August 20, 2003 - Mary
- Merged with Jerome's changes of August 19
- AST
o Removed TTuple from principle type AST -- only occurs in Core
type AST
- C-API
o query_context is now a struct with module_context and
statements. [Reported by Nicola]
- Java API
TODO : still need to split query_context into module_context and
statements and also change ItemLists into Java Lists.
- Constructors:
o Element & attribute constructors w/ multiple enclosed
expressions now work (finally!)
- Streaming:
o BUG ALERT: Nested typed streams with holes do not work
Currently, no exprs yield nested streams w/holes but we should
figure out why this doesn't work.
August 20, 2003 - Jerome
- Printing:
o Split the printing code in separate modules that parallel the
distinct AST's.
o Added support for printing core updates.
o Removed some non-necessary top-level printing operations.
August 19, 2003 - Jerome
- AST's:
o Removed obsolete XML AST.
o Split models into primary and core AST.
o Split datatypes into primary and core AST.
o Propagate that change throughout the code.
- Name support: large cleanup of the names/symbol support.
o All AST's use either unresolved names or resolved symbols.
o Removed all uses of unresolved symbols and 'generic' symbols.
- XML Schema import:
o Added first version of Vladimir's XML Schema import. This is
still not fully hooked up into the main system.
o Removed old XML Schema import code written by Byron (not
touched since 2001!). This served its time well. Many thanks to Byron!
- Parsing:
o Removed old XML/XML Schema parser (DOM-like) for good!
August 18, 2003 - Jerome
- Datamodel:
o Removed duplicate name accessors from the data model. Some of
those accessors are still present as 'helper' function in
Dm_util. None of those function rely on symbols externally.
o Changed implementation of xs_QName to be a standard resolved
qname, not a symbol.
August 15, 2003 - Mary
- Documentation
o Started 0.4 doc: README, STATUS, etc.
- Makefiles
o Incorporated all suggested changes for MacOSX
- Constructors/Streaming
o Added CEEnclosed to core
o Added TSAX_startEncl/endEncl to typed SAX events
o Still debugging "erase_atomic_value" which takes new events into
account
- Galapi
o Aligned with new data model
o Moved galapi/c_api/glx_wrap.{mli,ml} to
galapi/caml_api/glx.{mli,ml}
Glx module contains functional interface to Datamodel
constructors.
Aligned Glx _exactly_ with C-interface in galapi/c_api/glx.h
(i.e., glx.h functions call Glx module functions directly)
o Galapi/Glx interfaces still need work w.r.t. orthogonality
o Updated & checked examples in examples/caml_api,c_api,java_api
August 13, 2003 - Jerome, Mary, Avinash
- Jungle:
o Draft version of the Datamodel OO API for Jungle!!!!
August 13, 2003 - Avinash
- Jungle:
o Fixed memory leak bug in the Jungle C stub.
o Implemented support for a Galax-level Jungle store and loading
from an XML stream to that store.
August 11, 2003 - Jerome and Mary
- Datamodel:
o Added nilled accessor for element nodes.
o Added nilled flag in typed stream (start element events).
o Added nilled parameter/implementation in the Galax datamodel.
o Added abstract data model primitives for updates.
- Updates
o Recompiled higher-level update support on top of the new data
model primitives.
August 11, 2003 - Mary
- Abstract DM:
o Implemented Base URI.
August 8, 2003 - Jerome
- Datamodel:
o Re-enabled support for node identity and proper handling of
duplicate removal.
o Added generic support for node identity in ./dm
o Created Galax_nodeid module for specific handling of node
identity for Galax nodes in ./datamodel.
o Some tests requiring node identity seem to pass!! Yeepee :) We
are almost back in business now.
- Misc fixes:
o Added Avinash's name as team member!
o Fixed validate tools to perform URI resolution properly.
August 8, 2003 - Mary
- Alignment changes to normalization module for attribute & text node
constructors.
August 4th, 2003 - Jerome, Mary, Vladimir
- Separated the XQuery AST into:
-- XQuery common AST
-- XQuery type AST
-- XQuery AST
-- Core XQuery type AST
-- Core XQuery AST
- Created first version of an type system AST for named typing.
- Added a built-in prefix 'empty' bound to the empty namespace.
- Added support for 'Delta Namespace Bindings'. Added those to the
SAX resolved and typed streams.
August 3rd, 2003 - Jerome
- DEBUGGING of previous major reorganization:
o Fixed normalization of attribute construction to use
atomization.
o Fixed infinite loop in the Stream operation computing the
attributes at the beginning of a stream.
o Added back support for parent. Parent pointers are built after
constructing each element or document node. This is not inside
the OO interface, but is done by the loader after each node
creation.
- Added new jungle modules from Avinash, integrated them in the
compilation process.
July 31, 2003 - Jerome and Mary
- Finished the major reorganization of the data model:
Again, there are too many changes to be recorded in detail. Major
changes occurred in : Eval_util, Eval_expr, Stream_types,
Stream_ops, and Extended_values (replacing tuples). Among other
things that occurred:
o Hooked up streaming as the main implementation of constructors
(for element, document, attribute, text, pi, comment
constructors).
Streaming now at the heart of query processing. This will
eventually improve preformances and compactness of the code, but
this is likely to result in instability in system for a few
weeks.
o A new form of stream has been introduced to represent 'resolved'
streams I.e., SAX streams where namespace resolution occurred.
July 29, 2003 - Mary and Jerome
- Major rewriting of the data model support. The data model now is
object-oriented, with a 'virtual' layer in ./dm and a Galax
implementation of that layer in ./datamodel.
There are too many changes to try and list them here...
July 29, 2003 - Vladimir, Philippe, Mary, and Jerome
- Added support for polymorphic type annotations on cexpr.
- Added first cut at Philippe and Jan's algorithm for removing SBDO.
- Major rewriting of the processing model.
***** THE PROCESSING MODEL STILL NEED WORK!!!!!
July 28, 2003 - Avinash and Jerome
- Jungle:
o Added Jungle in 'tools', the low-level wrapper for BDB indexes.
- Cosmetic:
o Fixed all of the Str. regexp generating those 'wrong escape in
string' warnings.
o Changed compilation process to take changes in the ./tools
directory into account.
July 14, 2003 - Mary
Problems:
- definitions of recursive atomic* that extend definition of atomicValue
causes problems
- All the functions that depend on clean nodes in fn_dynamic are
not implemented. See:
_base_uri_zero
_lang
_sequence_deep_equal
_glx_save_document
_glx_copy
- None of the update operations are implemented at the moment
- API is not compiled
July 10, 2003 - Jerome
- Datamodel:
o Datamodel was allowing document node inside element nodes! This
is now detected and raised as an error.
- WSDL:
o Integrated Nicola's WSDL mapping code. This is still only
available as a 'pre-compilation' command line tool that can be
used to generate an XQuery 'context' from a WSDL file. More
tuning is necessary for a solid integration.
o Fixed WSDL support for the new form of atomic values.
o Uses List.sort instead of List.fast_sort so Galax still
compiles on OCaml 3.04.
- Compilation:
o Remove additional line doing compilation of tools in the main
Makefile. Was just breaking the compilation process.
** Does anybody know what was the intent of that line? **
July 9, 2003 - Mary
- Reviewed and updated signatures & implementations of F&O
functions.
July 8, 2003 - Mary
- Re-implemented Datatypes module using objects. Top of object
hierarchy is Datatypes.atomicValue.
o Moved casting operation into Datatypes.atomicValue objects.
o Removed stdlib/cast_as*
- Modified API examples to all produce same results
(NB: Please keep all these tests in sync!)
July 8, 2003 - Nicola
- Galapi. Corrected bugs in Java API:
o AttributeList inherits from NodeList and not directly from
ItemList.
o xsUntyped inherits from Atomic and not directly from Item.
July 8, 2003 - Jerome
- Processing Architecture
o Separated rewriting from evaluation. Rewriting is a phase after
typing and before evaluation.
- HTTP/SOAP:
o Fixed CURL compilation problems. Cleaned-up installation of
./tools modules.
July 8, 2003 - Nicola
- HTTP/SOAP:
o Changed Http and Glx_http to allow full options for soap calls
o Changed glx:soap-call in Fn_dynamic to use these extra options
- Galapi:
o Corrected bug in Java API: ProcessingContext inherits from
Context and not from Item
July 7, 2003 - Mary
- Datamodel:
o For each node kind, coalesced all node constructors into one
constructor.
July 7, 2003 - Jerome
- HTTP/SOAP:
o Integrated HTTP changes, and glx:soap-call function from
Nicola, without Curl yet.
o Fixed 'native' HTTP support to fail when receiving an http
error.
o Added curl directory in the ./tools section. Started setting up
compilation to deal with curl in a smooth way.
- Namespaces:
o Fixed bug in normalization of element construction and
namespaces. Normalization was not propagating the namespace
declarations from within the element. Added corresponding tests
in XQuery unit:
<a xmlns:foo="xyz"><foo:b/></a> succeeds.
<foo:a xmlns:foo="xyz"/> succeeds.
etc.
o Changed namespace support to treat xmlns:foo="" as *removing*
the namespace binding for prefix foo! See the namespace rec.
June 30, 2003 - Jerome
- Galapi:
o Fixed bug in 'free' operation. Now free can operate several
times on the save value safely. Useful when called from the
Java API.
June 29, 2003 - Jerome
- F&O:
o Added Galax function glx:save-document(), which takes a file
name, a *document* node, and output the document back into the
given file. This is useful for application who want to perform
updates on documents.
- XML Updates:
o Implemented replace value of properly. Was not updating the
value as it should have.
o Outlawed replace value of on a document not, which does not
make any sense.
o Fixed bug in parsing of replace within complex updates. Did not
add them in the parser properly due to two separate production
simple update and simple_update_with_empty in the case of
complex updates.
o Fixed bug in normalization of conditional update, was not
computing the effective boolean value.
June 27, 2003 - Jerome
- Printing:
o Removed obsolete print QName functions.
o Fixed bug in pretty-printing of function applications when one
of the expression to which the function is applied is a
sequence. (was missing parenthesis.)
o Implemented pretty-printing for the query prolog and for the
query module.
- F&O:
o Fixed bug in fn:substring. Index was off 1 because indexes
start at 1 in XQuery, but at 0 in Caml.
o Fixed fn:translate, which was completely wrong...
June 27, 2003 - Mary
- Galapi:
o Added support for document constructors to all APIs.
o Added tests of document constructors to all examples/
o Cleaned up galax/java_api/Makefile
o Added java_api/galapi/Document.*
June 26, 2003 - Jerome
- Serialization:
o Fixed serialization in the canonical version to avoid an
unnecessary initial new line.
- Parsing:
o Added some support for parsing of inlined general and parameter
entities.
o Added some support for expansion of general entities. Seems to
work ok on a number of tests inside element content and attribute
values.
o Fixed bug in parsing of processing instructions in the document
root. Was not parsing the first whitespace character after the
target properly.
June 24, 2003 - Nicola
- Galapi:
o Removed debug messages from Item.java and Itemlist.java.
***** Galax Release 0.3.1 June 22, 2003 *****
June 22, 2003 - Jerome
- A few fixes to the Web site: added pointers to the new
distribution, added couple of breaking news entries for the new
Web site, etc.
- Fixed the release notes.
- Fixed bug in pretty-printing for the document node in the XQuery
serialization mode.
- Changed default pretty-printing to be well-formed for the Galax
API.
June 22, 2003 - Jerome
- Tidying up serialization:
o Fixed pretty-printing for the top-level sequence in the XQuery
serialization form.
o Factorized the serialization code dealing with generation of
proper output character encodings.
o Fixed printing of the document header in the Well-formed and
canonical case. Avoid having a wrong extra new-line between the
header and the root element.
o Allowed pretty printing of the opening tag of elements with
text content inside elements with element content. This enables
pretty-printing for the corresponding attributes which is safe
and somewhat nicer.
o Fixed bug in the pretty-printer for attributes, was printing a
wrong additional new line for the first attribute.
- Fixed bug in static typing of FLWOR with order by + where
clause. Changed normalization not to use the empty tuple but the
empty sequence instead. Changed the data model to remove empty
sequences in sequences of tuples.
June 21, 2003 - Jerome
- Installed the new open source LICENSE.
- Serialization overhaul:
o Implemented serialization as a streaming operation. Passed the
regression tests with this new version. Removed obsolete form
of serialization within the data model.
o Fixed many very serious problems with pretty-printing in the
presence of whitespace. Pretty printing should at least be
correct semantically now. This fixes problems in several
usecases, notably XMark, STRING, NS, and SGML.
Note: pretty-printing only occurs for outer-most elements as
long as they are of element content. Elements with text/mixed
content are never pretty-printed. The serialization does not
make any attempt to pretty-print elements with element content
if they are nested in elements that have text/mixed content.
o Fixed pretty-printing of attributes.
o Changed Galapi to use streaming serialization.
- 'validate' command line tool:
o Changed 'validate' to use streaming serialization. Now
'validate' does not build any datamodel except when used with
the -dm flag. That means 'validate' can be executed in a purely
streamed fashion. This has been tested to work on the DBLP
source document (about 160 Mb).
o Added support for output encoding to the 'validate' tool.
o Added clear error message to indicate that this version of
'validate' does not support XML Schema validation.
June 19, 2003 - Nicola
- Corrected bug when calling items_next in java_api/glx_jni_stub.c
June 17, 2003 - Mary
- Removed datamodel/serialization_context from Makefile.
- Fixed rewrite rules for "some" expr -- were not applied
correctly.
- Added rewrite rules for "every" expr.
June 16, 2003 - Nicola
- Replaced the free() method in the Java API with the
standard finalize() method. Consequentially, calls to
destructors are made at garbage collecting time.
- Modified Java API to take this into account by removing
explicit memory deallocations.
June 15, 2003 - Jerome and Nicola
- Added generic SAX event-handler.
- Added incomplete version of serialization working directly from an
XML stream.
June 13, 2003 - Jerome
- Tidying up for the release:
o Fixed printing of error messages that had been wrongly
disabled.
o Fixed some small problem in the installation of the website.
o Fixed some of the content on the new website. Added Mary's
paper at ECOOP. Added latest version of the projection
paper. Added the VLDB demo paper.
o Changed compilation of the APIs not to use ocamlmklib which is
not supported by the ocaml MinGW port.
June 12, 2003 - Mary
- toplevel/
o Fixed bug in which errors were not flushed to stderr
- Errors
o Added Undefined_Variable to error.ml, and error message for
indicating that context item is not defined.
- Regress
o xqueryunit-*.cfg files are generated automatically from
xqueryunit-*.cfgp.
- Installation
o Changed Makefile so that examples/ and usecases/ each does own
installation steps and copies appropriate READMEs.
- Documentation
o Updated galapi/README to describe new API usage and how to run
examples/.
June 11, 2003 - Jerome
- Galapi:
o Added a few missing files in the repository.
o Made sure the Solaris-packaged version recompiles cleanly under
Linux and that the API examples run.
June 11, 2003 - Jerome & Mary
- Galapi:
o Added missing methods in the Java API.
o Fixed Java examples to perform more complete testing.
o Removed argv from the init calls in the C and Java APIs and
fixed corresponding bug in the Java API.
o Fixed the compilation process to work under Solaris.
o Removed all dependancies to the Caml distribution in the C and
Java API, which are now completely stand-alone.
June 10, 2003 - Jerome
- Galapi:
o Fixed the exception problems in the Java API.
o Cleaned up the API to use GalapiException consistently.
o Updated the examples to use try out exceptions as well.
o Cleaned up the compilation for the java part of the
Galapi. Dependencies seem to work more smoothly now...
o Changed error printing not to add improper new lines at the
end.
June 9, 2003 - Jerome
- XQuery:
o Implemented '/' !
- Streaming:
o Added attribute and atomic values in well-formed XML
streams. This is not require for loading an actual XML files,
but for closure when serializing back an arbitrary datamodel
instance.
o Added a typed-XML stream that can represent a typed XML
instance, instead of an untyped one.
o Added operation to build a typed XML stream from a data model
instance.
o Added a basic operation which turns a typed XML stream into a
well-formed one. [This is in fact an implementation of
erasure...].
- Galapi:
o Fixed all of the exception handling by wrapping Caml calls to
raise a generic Caml error instead of a Galax error.
o Added one C API function:
'glx_eval_statement_from_file_with_context_item_from_xml'
o Fixed definition of item list to use 'value *item' instead of
'item item' which does not compile under C++.
June 4, 2003 - Mary
- Documentation
o Remove galax/DEVELOPERS
o Updated galapi/README to describe specifics of C & Java APIs,
added CAVEATS, etc.
- Rewriting rules:
o Instead of removing glx:docorder, replace it by new function
glx:node-sequence, which is no-op on node sequences, but
raises a type error if any argument is not a node.
o Added static typing optimization to remove glx:node-sequence
when applied to Node*.
June 4, 2003 - Mary
- Galapi:
o Added error support in the C API.
June 3, 2003 - Nicola
- Galapi:
o Aligned the Java API with latest C API.
o Made up a jar package for Galapi.
o Added new tests in ./examples/java_api.
o Builds javadoc for users' benefit.
o Cleaned up installation process.
o Fixed some bugs in the JNI stub (missing free of the allocated
memory).
o Implemented toString for items.
o Context does *not* herit from item and is now in a separate
class hierarchy.
May 30, 2003 - Mary
- Cleaned up Makefiles in examples/*_api directories
o Added rules to "run" examples.
- Updated README files
o Installed galapi/README in $(GALAXHOME)/README_API.
May 29, 2003 - Mary
- galapi:
o Changed serialize_to_output_channel to serialize_to_formatter.
- conf:
o Added default headers & footers values for printing output of
phases.
o Added function for escaping characters after pretty-printing.
- website/demo
o Changes to emit headers/footers and xml/expressions in correct
format.
May 28, 2003 - Jerome
- Galapi:
o Fixed *killer* bug in the item_cons operation. Needed to
protect the GC global root registration with CAMLxxx macros
properly.
o Fixed all mallocs to items to the size of values instead of
item.
o Removed unnecessary string copy in several stub functions.
o Fixed bug in Java API: Attribute and Element construction was
not setting the native item properly.
o Fixed bug in Java API: Java_ItemList_nativeItemsFirst was
wrongly named as Java_Item_nativeItemsFirst.
o Fixed all bugs in Test2.java. All of the Java tests now run
properly.
May 28, 2003 - Jerome
- Parsing:
o Fixed bug in parsing of attributes in XQuery element
constructors (was not allowing proper whitespace before/after
the equal sign). [Bug report thanks to Gargi, tripped in one
replace update].
o Fixed bug in parsing of entities in attribute content. [Bug
report thanks to Peter Patel-Schneider].
o Fixed bug in pretty-printing of processing-instructions. Should
not escape characters like text.
- Galapi:
o Added Java API's code by Nicola and built corresponding
examples.
o Removed obsolete Java and C API files.
o Created separate sub-directories for the Caml, C and Java APIs.
o Cleaned the compilation process to use ocamlmklib whenever
possible and remove unnecessary steps.
o Made sure the compiler builds both static and shared C
libraries whenever possible.
o Fixed make install to put the right interfaces in libraries for
the Caml and C APIs.
o Merged with changes made by Mary (see below).
May 22, 2003 - Gargi
- Added replace code to eval_update.ml.
- Cleaned up the code for evaluating flwor updates.
May 21, 2003 - Mary
- Changed literal integers from Caml int to BigInt
- Changed all xsd:int arguments to xsd:integer arguments in
pervasive.xqp + corresponding changes to function implementations
in fn_dynamic.ml
- Moved base_uri from Fn_dynamic to Datamodel
- Added base_uri and node_name to Galapi
- Added glx_base_uri and glx_node_name to C-API glx.h
- Updated tests in examples/{ml,c}-api
- (Jerome) fixed bug in glx_float_of_xs_double in glx_stub.c
May 21, 2003 - Jerome
Complete reorganization/reimplementation of document
projection. Clean up of document loading.
- Document projection:
o Cleaned up all of the document projection support. Renamed the
analysis directory into the projection directory. Inside that
directory, the code has been reorganized in the following way:
Path_struct[mli] contains the types for path structures.
Path_structutil contains basic operations on path
structures.
Optim_vars contains operations on variables for
optimized projection.
Analysis_context contains the context used during path
analysis.
Function_analysis contains path analysis for built-in
functions.
Path_analysis contains the main path analysis algorithm,
including optimized analysis.
o Implemented projection as a pure XML stream operation. This
separates projection from document loading, making loading a
very simple operation and projection is now much more
compact. Projection is implemented in the [Project_context] and
[Stream_project] modules. An added benefit is that now the
result of projection can be fed into any other stream
operation.
o Re-connected document projection to the top-level execution of
the query. Modified the Galapi to call document projection at
the appropriate time.
o Fixed path analysis to work on this new version of Galax,
notably:
-- Added analysis for the glx:distinct-docorder function
which is used in path expression. Analysis is such that it
propagates returned and used paths through that function.
-- Changed the top-level function from where to start the
analysis from glx:document-sax to fn:document which now uses
SAX parsing.
- Data model loading:
o Implemented cleaner extraction function for special attribute
out of the SAX events.
o Removed 'xmlns' declarations in the document from the data
model.
o Made sure the document is loaded in a "fresh" namespace
environment! Otherwise, wrong namespace prefixes can be used
in one XML document (e.g., <fn:a/> used to parse fine... it is
now an error).
May 20, 2003 - Mary
- Started alignment with May 2003 Working Drafts
- XQuery 1.0 May 2003
-------------------
o Updated STATUS
o Renamed
xs:AnyScalar => xdt:anyAtomicType
xs:untyped => xdt:untypedAtomic
o Added:
xdt:yearMonthDuration
xdt:dayTimeDuration
- F&O May 2003
------------
o Removed:
fn:copy
glx:unique
glx:optional
fn:deep-equal(node, node)
o Added:
fn:zero-or-one
fn:one-or-more
fn:exactly-one
fn:trace
NB: glx:print-string, glx:print-item not removed
fn:unordered
NB: fn:unordered is implemented by CEUnordered expr.
o Renamed:
fn:insert => fn:insert-before
fn:sequence-deep-equal => fn:deep-equal(item*, item*)
fn:sequence-node-equal => fn:sequence-node-identical
o Changed:
fn:index-of defined on atomic values, not nodes
May 12, 2003 - Jerome
- Galapi:
o Fixed bug in C stub: was using an un-initialized variable in
glx_default_processing_context. Now the C example works for
both the byte code and native code C libraries.
- HTTP support:
o Added function to create an XML stream parser from a string.
o Integrated Trevor's 'mini http client' to Galax. (At
last...).
o Changed the fn:document() function to support 'file:' and
'http:' URIs.
- XML parser and serialization:
o Fixed several bug in parsing of processing instructions.
[ Was not removing leftmost whitespace from the PI content. ]
[ Was not allowing PI target with leftmost whitespace. ]
o Generates output encoding for all of the markup.
o Added proper serialization of the document node as an XML
declaration or as two bytes for auto-detection of UTF16
encoding.
- XQuery parser:
o Fixed support for entity reference and character references in
the XQuery parser. Only built-in entity references are
supported in the XQuery syntax (i.e., <, >, &,
", and ').
May 9, 2003 - Jerome
- Whitespace in XML documents and serialization:
o Fixed bug in pretty-printing of attributes.
o Changed the serialization to use pretty-printing only for
'element content' elements.
- Parsing and streaming(!):
o Removed obsolete code to load an XML AST to the data model.
o Reorganized all of the parsing layers. Split the code into the
following directories:
./ast for the Abstract Syntax Trees and printing
./lexing for the lexing layer
./parsing for XQuery parsing (and the old XML parser)
./streaming for XML streaming operations including SAX parsing
o Added Stream_ops module for simple operations on XML
streams. First operation is discarding a subtree and is used
during projection.
o Removed 'skip' operations from Load module. Removed
construction of data model from XML AST in Load module.
May 9, 2003 - Gargi
- Cleaned up update code
- Fixed bug in insertasfirstinto in flwor update
May 8, 2003 - Jerome
- XML Updates:
o Fixed bug in optimization of updates.
May 6, 2003 - Mary
- Added "Quick Start" API functions to ML and C APIs
eval_statement_with_context_item_from_document
eval_statement_with_context_item_from_xml
eval_statement_with_variables_from_xml
- Added missing glx_build_external_context to C API
- Updated API tests in examples/*-api
May 2, 2003 - Jerome
- More work on XML update support:
o Turned rewriting rules for sorting-by-docorder on again.
o Applied rewriting pass on update expressions. This is necessary
because of the effect of SBDO which makes the language unusable.
o Added support for parsing, AST and normalization for the
'replace' simple update.
o Hooked up query rewriting to the update code. This way updates
can be applied to real-size documents!
May 1, 2003 - Mary
- Fixed bug in evaluation of order-by clause within multiple let-for
clauses.
- Fixed bug in static typing of text{} expression.
May 1, 2003 - Jerome
- Fixed bug in XML parsing of XML declaration for the
document-validate function (still using the old parser for now...).
- Cleaned up the evaluation directory:
o Split the evaluation module Xaeval into several smaller
components:
Eval_util contains some auxiliary evaluation functions.
Eval_expr contains the main eval loop for expressions.
Eval_update contains the evaluation code for updates.
Eval_top contains the top-level evaluation code and the
evaluation code for the query prolog.
o Moved Cast and Xerror to ./stdlib, since they are part of F&O.
o Removed obsolete Xaeenv and Xaeval modules.
o Renamed all Optim* modules to Rewrite_*, in prevision of the
change to the new architecture.
o Added small module description at the beginning of each
module. Cleaned-up comments here and there.
- Cleaned up stdlib directory:
o Changed names for consistency:
Xerror becomes Fn_error
Cast becomes Cast_as
Built_in_static becomes Fn_static
Built_in_dynamic becomes Fn_dynamic
o Added small module description at the beginning of each
module. Cleaned-up comments here and there.
o Removed obsolete code for document() using the old parser.
April 30, 2003 - Mary
- Variety of bug fixes. See BUGS.
- Tested ML & C APIs
o Added tests in examples/ml-api/ml-*.ml, examples/c-api/c-*.c
- Completed command line options for loading documents and binding
document values to context item or global variable:
galax -context-item file-name ...
galax -var var-name=file-file ...
April 29, 2003 - Jerome
- More fixes on the XML updates feature:
o Fixed bug in the replace_node function in the data model which
is used to perform deep-copy of nodes related to element
construction.
o Trapped the datamodel error message for updates to be re-raised
more nicely at the evalution level.
o Fixed bug in normalization of conditional expression: was
normalizing the first branch of the conditional into both final
branches!
April 29, 2003 - Mary
- Completed implementation of ML API in galapi/galapi.mli
April 29, 2003 - Jerome
- Some minor additional fixes cleaning up after the big changes
yesterday:
o Added target to launch regression tests from the top-level
directory.
o Fixed XQuery-style serialization for the empty sequence. Is now
() instead of nothing.
o Fixed bug in the parser for CDATA sections, should not discard
the text buffer when going out of the CDATA lexing state.
o Aligned flags in the validate command-line tool with those in
galax. Notably:
-print is replaced by -serialize [wf/xquery]
-whitespace is replaced by -xml-whitespace
-xml-pic is added
o Added proper error message when a non-declared general entity is
encountered.
- Fixes on the XML updates feature:
o Fixed bug in datamodel delete: should delete the children before
deleting the parent in the recursive deletion of the
subtree. Otherwise, the access to the children fails because
applied on an already deleted node!!
o Fixed bug in datamodel insert: the inserted node must be
'deep-copied' i.e., copied with node ids generated, in order to
survive future access at the actual location.
o Changed evaluation of statements in Galapi to return nothing
in the case of update statements. This means the return type for
the eval_statement is now an option.
o Added one kind of error for updates. Replaced use of the
Prototype error in the update code to the Update error. Made
sure the update errors get some kind of file information to
point the user to the location where the error occurred.
April 28, 2003 - Jerome
- Minor fixes to the Web site scripts.
- Minor fixes to the Makefiles in ./regress and ./usecase so that
things do not depend on old regression test scrips.
April 28, 2003 - Jerome
**XQueryUnit is now the official test suite for Galax.**
**SAX is now the official XML parser for Galax.**
- Yet more work on the SAX parser:
o Removed dependency to PXP modules from the rest of the
system. Only Glx_pxp depends on the PXP package now.
o Fixed make depend to take tools into account correctly.
o Removed dead-wood code from Encoding module.
o Fixed bugs in parsing of the XML declaration <?xml ... ?>, and
made the corresponding SAX code more compact.
o DTD parsing put in place. Lexing of DTD tokens is now hooked up
to the SAX parser, although discarded for now.
o Added support for character entity references (&#???; now works
in your documents!).
o Added some minimal support for general entity references (<,
>, ', & and " are now working properly).
o Added some preliminary parse context.
- Regression tests:
o Hooked up Galax regression tests to XQuery unit. There is now a
Make target to call XQueryUnit directly from the galax source
directory, setting up the right configuration, and gathering
XQueryUnit results back into the ./regress directory.
o Added Galax-specific XQueryUnit XML parsing unit in order to
test the new SAX parser.
o Added Galax-specific XQueryUnit XML update unit in order to test
new support for XML updates.
o Removed all of the old tests in ./regress.
April 21, 2003 - Jerome
- Re-enabled support for updates. Updates now use the new form of
context.
- Added support for DTD *lexing*.
April 21, 2003 - Mary
- Updated glx_wrap.ml,glx.h,glx_stub.c to call new galapi functions
April 20, 2003 - Jerome
- Reorganized the content of the stdlib directory:
* Split Bltin into Built_in_dynamic which contains evaluation
code for all the built-in functions and operators, and
Overloaded which contains support for overloaded functions.
* Created Built_in_static which contains static typing code for
built-in functions which have special static typing
rules. This is extracted from Typing, which now uses this
module.
- Removed multiple bindings of function signature used for
overloaded functions from the normalization context. Typing and
Xaeval use Overloaded module instead. This fixes the bug for avg
et. al mary pointed out.
- Fixed wrong signature for max-int and min-int functions.
- Moved support for configuration of character encodings from
base/conf.ml to ./base/encoding.ml
- Added -print-error-code option which prints an error code instead
of a complete error message. This is for the benefit of unit
testing.
April 18, 2003 - Mary
In galapi/
- Added import_main_module_from_string to load main module from string
for website code.
In website/
- Updated to align with v0.3.1 code.
- Fixed some link errors in .html files.
April 16, 2003 - Mary
- *** Gargi's New update code modified to use contexts but does not compile ***
- Changes to normalization/typing/evaluation to better align with
galapi.
- Implemented much of galapi.mli using new context interfaces.
- Updated toplevel/xmlquery to use galapi
April 11, 2003 - Mary
- Removed normalization/{xadepend,xatenv,xaeenv}.{ml,mli}
- Added normalization/{norm_context}.{ml,mli}
typing/{static_context}.{ml,mli}
evaluation/{dynamic_context}.{ml,mli}
- Modified normalization/typing/evaluation to use above contexts
- Started to write stubs in galapi/context.{ml,mli} to call new
context code & new mapping functions
April 8, 2003 - Mary
- Bug fixes for v0.3.1. See BUGS file.
- Added command-line option (-sbdo [on/off]) for disabling sort-by-doc-order in
normalization of path and union expressions.
April 7, 2003 - Mary
- Aligned examples/c-api/c-example.c with examples/ml-api/ml-example.c
- Fixed bug in galapi/glx_stub.c
April 4, 2003 - Gargi
- Added new datamodel primitives for insert update operations
- Added new evaluation functions for processing simple and FLOWR updates
April 3, 2003 - Mary
- Addded support for aggregate functions defined on empty sequence.
- Added some internal doc.
April 2, 2003 - Mary
- New API documentation in galapi/README
- More testing of ML and C APIs
(See TODO list on galax-dev mailing list)
- Moved galapi/glx_params* to galapi/itemlist*
April 1, 2003 - Jerome
- Removed pxp_lib.ml which is copied from two independant files
depending on the kind of compilation and was making the CVS
repository schizophrenic.
April 1,2003 - Krish
- Added C-API functions for Evaluation context, Query evaluation.
March 30, 2003 - Jerome
- Cleaned up configuration for various character encodings:
o There is only one configuration variable for the internal
encoding now.
o Internal encoding can be setup from the command-line.
o SAX parser now sets character encoding for the input document
correctly, from the XML declaration.
- Cleaned up serialization:
o Changed serialization to take the character encoding into
account. By default, serialization outputs using the default
character encoding. This can be overridden from the command
line.
o Removed obsolete code for xsi:type generation.
o Galax now supports two forms of serialization: either
well-formed, which always generates a well-formed XML fragment,
as specified for XQueryUnit, or XQuery, which always generate a
valid XQuery expression for the corresponding XML fragment.
o Fixed bug in serialization when preserving whitespace was not
using the proper configuration parameter.
- Cleaned up command-line options:
o Presented the command-line options in a more organized fashion,
with a nicer usage message. Renamed some of the options to be
more consistent.
o Changed command-line options for serialization, requiring to
give explicitly the serialization form.
o Removed unused 'blocking' parameter.
- Cleaned up the SAX parser:
o Fixed all error messages to correctly report location and the
kind of error. Error messages take transitions between tokens
into account.
o Fixed error messages when reaching the end of a file.
o Allowed whitespace around the '=' sign in attributes.
- Removed the MAKE variable from the makefile configurations, which
screwed up propagation of the make executable used for
compilation.
- Fixed bug in error reporting when encountering EOF in the middle
of parsing.
- Cleaned up the validate command-line tool.
o Removed obsolete wf-sax command line tool. Now validate should
be used directly.
o Changed the validate tool to use the SAX parser. Validation is
actually turned on for now, until validation is re-implemented.
March 28, 2003 - Mary
- More fixes to C-API (See TODO list on galax-dev mailing list)
- Moved examples/c-api/glx_main.c to examples/c-api/c-example.c
March 27, 2003 - Jerome, Mary, Krish
** C API under construction
- Updated galapi/galapi.{mli,ml} to align with Jerome's code.
- Updated galapi/glx* to implement C API.
February 25, 2003 - Jerome
- Fixed compile query operation in Galapi.
February 19, 2003 - Jerome
- Fixed problem in multiple binding of overloaded functions. **
DIRTY FIX ** need to be cleaned up.
February 10, 2003 - Jerome
- Fixed serialization to escape correctly markup characters such as
'<', '&', etc.
- Added support for XQuery 'castable as' expression, forgotten from
Nov. 2002 working drafts.
- Fixed bug in the ISO-8859-1 lexer, initializing with the wrong
encoding.
- Added two printing functions to stderr:
glx:print-string-err(xsd:string) as (empty)
glx:print-item-err(item) as (empty)
February 9, 2003 - Jerome
- Support for all kinds of character encodings on the input. Hooked
up Galax's XML lexers to PXP's resolvers. This takes care of
reading a large numbers of characters encodings, including UTF-16,
various ISO formats, etc. See PXP's documentation for more
details.
- Serious cleanup and improvement of the SAX parser:
o Fixed bug in lexing of UTF-8 characters, now accessed properly
from the lexing buffer.
o Fixed SAX parser to keep track of the parsing location when an
error occurs, and print errors according to the file currently
being processed.
January 30, 2003 - Mary
- All avg() & sum() functions were not defined on empty sequence.
avg( () ) => ()
sum( () ) => zero
January 25, 2003 - Jerome and Amelie
- Fixed projection to run again under 0.3. This is now working as
before.
***** Galax Release 0.3.0 January 22, 2003 *****
January 22, 2003 - Jerome
- Fixed the release number to 0.3.0
January 21, 2003 - Mary and Jerome
- Fixed last minutes problems with use cases, tests and compilation.
January 19, 2003 - Mary
- Added RELEASE_NOTES (documents changes in each new version)
- Added RELEASE_NOTES and Bugs to web site.
- Fixed evaluation and typing of FLWOR expressions with order-by
clause and nested FLWOR expressions
o Inner-for expression must contain sub-expressions (possibly
if-then-else or let) that create ordered tuples *only*.
o where expressions are now evaluated *before* order-by
Evaluation of a where expression may yield the empty tuple.
o Changed _Concat_Extended_Value_Sequence to eliminate empty
tuples during concatenation.
o Changed typing of tuple expressions to permit the empty tuple
type.
o Changed CESort to take explicit sort variable instead of
$glx:dot. This is a necessary (and cleaner!) way to supported
nested FLWOR with order-by clauses.
January 17, 2003 - Mary
*** In the home stretch for v0.3!! ****
- Updated website & usecases to include:
NS, PARTS, REL, SEQ, SGML, STRING, TREE, XMP, XMARK, XML Schema
- Deleted SEMANTICS from usecases
- Removed evaluation/optimgen.{mli,ml}
- Changed default return type of function to item*.
- Fixed bug in FLWOR expressions that include both WHERE and
ORDER-BY by normalizing:
for $v in E1 where E2 order-by E3 return E4
==
for $v in E1 order-by E3 return if (E2) then E4 else ()
Inner-for expression must only create ordered tuples; any other
complex expression raises error during evaluation.
*Did not* touch corresponding UFLWR code.
- Replaced fn:concats by fn:string-join
- Made fn:concat variadic.
- Moved definition of typed-value from bltin.ml to into
datamodel.ml.
- Updated INSTALL/README
- Fixed << and >> to be *strictly* less than/greater than
comparators of document order.
January 9, 2003 - Jerome
- Changed toplevel to apply optimization passes on the query
prolog when the optim flag is on.
- Turned the optim flag on by default!
- Implemented first cut rough optimization rules to remove
unnecessary sorting by document order. **THOSE RULES NEED TESTING**
January 9, 2003 - Mary
- Added typed_value function to Datamodel. Was named
'_fn_data_node' in Bltin.
- Added galapi/Datamodel_api. Contains O'Caml object interface to
Galax. (Under construction)
January 8, 2003 - Mary
- Moved built-in variables dot, position, last, sequence to
Xquery_astutil so available to all modules.
- Changed prefix of all built-in and generated variables to "glx" to
avoid name conflicts.
- Fixed bugs in parsing and printing of optional type declaration in
'for' and 'let' expressions, and of printing optional variables in
'case' clauses.
- Changed signatures/implementations of all arithmetic operators to
accept empty sequence as argument. This change eliminates all the
typeswitches that were polluting the normalized code.
- Implemented type-based optimizations for:
o fn:data
o fn:boolean
o dynamically dispatched functions converted to statically
dispatched functions
January 5, 2003 - Mary
- Updated Makefile and INSTALL, NEW, README, and STATUS
documentation for v0.3 release.
January 5, 2003 - Mary
- Following changes align arithmetic & comparison operators with
*February 2003* working drafts:
* Implemented general comparison operators
o untypedAtomic cast to double
* Implemented new semantics for atomization/fn:data()
* Implemented fn:boolean()
* Implemented semantics of cast on (atomic?) only
* Changed EBV code to call to fn:boolean()
* Implemented conversion rules for function arguments when
required type is <: anySimpleType.
- Fixed bug in node & order comparisons: empty sequence not handled.
- Fixed type declarations to propogate declared type, not type of
expression.
December 20, 2002 - Jerome
- Fixed bug in parsing of function declaration when no type is given
for the parameters / return clause. Now generates the proper item*
default type.
December 18, 2002 - Mary
- Following changes align arithmetic & comparison operators with
*February 2003* working drafts:
* Implemented promotion semantics for arithmetic operators
o untypedAtomic cast to double
* Implemented "new" transitive "eq" operators
o untypedAtomic cast to string.
o eq on () raises type error.
- TODO:
- Change atomization to fn:data()
Change EBV to fn:boolean()
Implement fn:boolean()
- Optimization rules for function dispatch & fn:data()
- Clean up datatypes & datamodel : remove unnecessary operators
December 13, 2002 - Mary
- Implemented dynamic function dispatch.
- Implemented promotion of atomic values/types in dynamic & static
semantics.
- Added monomorphic equality/inequality operators for all numeric
types, string, QName, and anyURI.
- Changed to implement above:
stdlib/{bltin.ml,pervasive.xqp}
toplevel/{toputils}*
normalization/{mapping,maputil}*
datatypes/{datatypes}*
datamodel/{datamodel}*
typing/{typing}*
- Fixed string manipulation bugs.
String.index and String.sub not guarded by 'try-with'.
Changed split_string_on_char into split_left_on_char &
split_right_on_char.
Changed:
base/gmisc.ml
namespace/qname_lexer.src
- TODO:
- New semantics for fn:data()
New semantics for fn:boolean()
- Optimization rules for function dispatch & fn:data()
- Clean up datatypes & datamodel : remove unnecessary operators
December 9, 2002 - Jerome
- Implemented two 'printing functions':
glx:print-string which prints a string on stdout
glx:print-item which prints an XML item on stdout
to help users debug their XQuery programs [Requested by Bard Bloom
Dec. 4th]
- Fixed namespace handling to reject wrong rebindings of special
namespace prefixes xml: and xmlns:.
- Implemented support for fn:base-uri.
- Implemented support for xml:lang:
F&O function fn:lang
Galax function glx:get-lang which merely computes
the right language for any given node.
December 5, 2002 - Mary
- Added 'Bugs' file for tracking bugs
- Fixed bug in fn:data(). On content with type xs:anyType, returns
string-value.
- TODO: align fn:data() with new definition.
December 5, 2002 - Jerome
- Fixed bug in variable substitution for the position variable.
- Fixed bug in galapi: should not put the default context in a
global variable.
December 4, 2002 - Mary
- Made glx:docorder and glx:distinct-docorder builtin functions.
Changed typing accordingly.
- Implemented semantics of path expressions, including ordering by
document order and removing duplicates. [Section 3.2, FS Section
5.2]
- Changed core grammar to distinguish between CEForwardAxis and
CEReverseAxis.
- Added warning print functions to base/error
- Fixed bug in sort : stable & non-stable were swapped
- Changed errors to warnings in schemamapping for unsupported
features: annotation and any group.
December 4, 2002 - Jerome
- Attributes now allow the '....' syntax as they should!
- Turned xf into fn everywhere. [Nov. 2002 WD]
- Changed fn: and op: URI's to:
http://www.w3.org/2002/11/xquery-functions
and http://www.w3.org/2002/11/xquery-operators
respectively.
- Implemented normalization for FLWOR updates. This makes use of the
tuple features.
December 3, 2002 - Jerome
- Changed the syntax of function declarations to use the new syntax
with 'as SequenceType'.
- Changed the syntax of typeswitch to use the new 'as' keyword
before sequence types.
- Changed () to empty in the sequence type [ Old change missing ]
December 2, 2002 - Jerome
- Fixed last dirty bug in the semantics of sort by due to the fact
that variable substitution was not working properly for the '.'
variable.
November 27, 2002 - Jerome
- Fixed numbers of bugs in handling of legacy E1 sort by E2
expression.
- Fixed problem in whitespace handling in the pretty printer (should
not print whitespace-only text in element content to the output).
- Fixed static typing for distinct-node, missing.
- Fixed parsing bug in XML documents, was not allowing whitespace
around equal sign in attributes.
- Added support for tuples in the data model and type system.
- Added new Core operations dealing with tuples.
- Added support for "order by" in FLWR expressions using the new
tuple operations.
- Fixed variable substitution to work when the substituted variable
is $fs:dot! Note that in that case, the expression AxisNodeTest
must be treated separately. The way variable substitution is done
is by adding the following let just around it:
Axis NodeTest [ Expr1 / $fs:dot ]
------------------------------------
let $fs:dot = Expr1 in Axis NodeTest
November 25, 2002 - Mary
- Hacked Typing module to ignore empty text node expressions, which
are never constructed, and therefore never contribute to a
type. Empy text nodes exist solely to delimit enclosed expressions,
and therefore cannot be removed during normalization. Instead, we
ignore them during static typing. This code must be revisited
after we implement validating element constructors.
November 20, 2002 - Jerome
- Added some support for simple updates and conditional updates.
- Fixed parsing problem for document type declarations.
November 18, 2002 - Jerome
- Added support for xml:space directive.
November 18, 2002 - Mary
- Changed config/Makefile.gen to use OCAMLBIN variable, if it is
set.
- Fixed dynamic semantics of attribute and element
constructors and of whitespace in constructors
- Fixed static typing of attribute and element constructors -- is
now conservative: raises error if content type is mix of values and
nodes.
- Changed element node constructors in datamodel to collapse
adjacent text nodes and eliminate empty text nodes.
- Added tests to XQueryUnit (see xqueryunit/Changes)
- *** Noto Bene: the document loader is still in flux, therefore
loaded documents do not "round-trip" correctly when serialized ***
November 17, 2002 - Jerome
- Added support for 'at $i' in for expressions.
November 16, 2002 - Jerome
- Fixed some of the compilation phase for the toplevel query
prolog/context.
- Fixed bug in galapi. Made sure the externally bound variables are
added to the context *before* compiling the XQuery prolog.
- Added support for multiple kinds of statements in the toplevel
expressions. This is mostly transparent now, but is required to
add support for updates.
- Added support for keys and keyref operations. Syntax to define a
key is:
define key "KeyName" { Expr1 } { Expr2 }
"KeyName" is a string literal used to identify the key used. Expr1
is used to define the set of nodes on which the keys are
defined. Expr2 is an expression which has implicitly each node
from Expr1 bound as the context node '.' and describe the
component used to define the key. What ever Expr2 returns, the
string value is used for to define the key.
glx:keyref("KeyName", Expr3) is a special function which can be
used to access the XML node bound to the result of Expr3 in the
key whose name is "KeyName". The first parameter of that function
*must* be a string literal.
November 14, 2002 - Jerome
- Added some new functions in Galapi.
November 13, 2002 - Jerome
- Fixed bug in lexer having to do with string buffers not properly
reset during lexical state changes. This fixes problems in
attributes content escaped as XQuery expressions.
- Added separate module to handle calls to the error()
function. Xerror, which can now contain a proper data model value
as a message.
November 12, 2002 - Mary
- Testing CVS server
November 5, 2002 - Jerome
- Made fixes to projection now working for: child::, attribute::,
descendant, self::, descendant-or-self::. Improved projection for
attributes.
November 4, 2002 - Jerome
- Fixed XMark query 14.
November 2, 2002 - Jerome
- Fixed XMark query 19.
- Fixed wf-sax to use the monitor.
- Fixed a bug in the makfile which was building a symbolic link to
the wrong executable for wf-sax and validate.
- Fixed tabulation in the monitor.
- Added a mini update parser. Not connected to the rest of the
system yet.
October 29, 2002 - Jerome
- Cleaned up the top of the XQuery AST. Removed the notion of module
list. Fixed the parser and toplevel loop accordingly. Now a single
file contains only one module.
The ';' syntax is now only used to separate several statements
(currently only single expressions) at the end of the module. The
only difference visible externally is that one cannot write prolog
components after a given expression anymore.
October 28, 2002 - Jerome
- Added statistics on the number of data model nodes created.
- Fixed bug in monitoring for DOM-like parsing and loading of
document.
October 27, 2002 - Jerome
** Welcome to the big fall cleanup! **
** This is a large reorganization which will require people to
** migrate. Recommended is to do a full checkout again, except for
** people who made actual changes. More changes in the terminology
** inside the Datamodel and Datatypes modules are still expected.
- Fairly deep cleanup of the directory structure, file names, and
module organization. Here is the new organization, in compilation
order:
o ./base -- Basic modules, not really XML specific
XML related modules have been moved later in the
compilation chain. Remains:
Gmisc -- Additions to Caml's stdlib
Id -- Identifiers generation
Pool -- String pools
Finfo -- Handles locations in file
Error -- Galax error handling
Pervasive -- Wrapping of the pervasive.xq file
Conf -- Global variables and configuration parameters
Args -- Dealing with function arguments
Whitespace -- Operations on whitespace in strings
Occurrence -- Operations on occurrence indicators
o ./fsa -- Generic package for finite state automatas
This package has been made generic. Most modules only
contains functors, parameterized by an alphabet of
letters, which will make the transitions for the
automatas.
Fsautil -- Functions for the rest of the FSA package
Nfa -- Non deterministic FSAs
Dfa -- Deterministic FSAs
Regexp -- Regular expressions and Glushkov construction
from regular expressions to NFA and DFA. This module
relies on the fact that states in the automata should
be positions in the regular expression, as specified
in the Glushkov construction. This also contains
intersection and reachability (emptiness check) for
the automata(s)
o ./namespace -- Operations on XML names, and namespaces
All basic support for XML names is located here.
Qname_lexer_{encoding} -- Lexer for qualified names for
a given character encoding
Qname_lexer -- toplevel access to the QName lexer(s)
Namespace -- Support for namespace names, local names,
namespace prefixes and URIs. It also implements
namespace environments
Sym -- Support for 'compiled' names, i.e., names stored
somewhere in a string pool
Resolve -- Support for namespace resolution. Given a
qname and a namespace environment, it can return you a
resolved name
o ./datatypes -- Support for XML Schema datatypes
Support for XML Schema datatypes should now all be located
in this directory.
Decimal -- xsd:int, xsd:integer, xsd:decimal
DateTime -- xsd:dateTime, xsd:date, xsd:time
AnyURI -- xsd:anyURI
Datatypes_lexer -- Lexer for the various datatypes
Datatypes -- Top-level support for datatypes. Contains
implementation for atomic values in the XML Query data
model
o ./parsing -- Abstract Syntax Trees, XML&XQuery parsers
The parsing
Xml_ast -- XML Abstract Syntax Tree (if materialized)
Xquery_ast -- XQuery Abstract Syntax Tree
Print -- Printing functions for the AST's
Xml_astutil -- Construction and misc. operations on the
XML AST
Xquery_astutil -- Construction and misc. operations on
the XQuery AST
Lexutil -- Lexing utilities, including support for
multiple lexical states
Xquery_parser -- XQuery parser
Document_lexer_{encoding} -- XML Document prolog lexer
for a given character encoding
Opening_tag_lexer_{encoding} -- Opening tag lexer for a
given character encoding
Closing_tag_lexer_{encoding} -- Closing tag lexer for a
given character encoding
Text_lexer_{encoding} -- Text content lexer for a given
character encoding
Lexers_{encoding} -- Toplevel access to the lexer(s) for
a given encoding
Xmldecl_lexer -- XML declaration lexer
Type_lexer -- XQuery type system lexer
Xquery_lexer -- Main XQuery lexer
o ./monitor -- Monitoring of Galax activity
Monitor -- Used to monitor CPU and memory consumption
o ./schema -- XML Schema and XQuery type system
One step further in typing, now support for XML Schema and
the XQuery type system. A major rewrite of this package is
expected [Support for named typing].
Glushkov -- Wrapper on top of the FSA
package. Implements low-level inclusion and
intersection over content models
Schemamapping -- Mapping from XML Schema to the XQuery
type system
Schemautil -- Various operations on types. Pretty messy
in there...
Theta -- Subsumption mappings between type names, used
during the subtyping algorithm
Subsumption -- Main subtyping module
Simplification -- simplification over computed types
Typeutil -- More operations on types... used in the rest
of the type checking
o ./normalization -- Query normalization
This module corresponds to normalization as specified in
the XQuery 1.0 and XPath 2.0 Formal Semantics.
- Clean up of terminology in several modules, notably datatypes, and
data model. Here are the detailed changes:
--> Bound module becomes Occurrence module
Bound.bound type becomes Occurrence.occurs type
--> Simple module becomes Datatypes module
--> Data in Simple becomes Atomic in Datatype
--> _text in Simple becomes _untyped in Datatype
--> oforest becomes Sequence
--> InstanceNode becomes Node
--> Instance becomes Item
--> InstanceForest becomes Value
- Node names are aligned with names in the XQuery data model
document.
--> ElemNode becomes ElementNode
--> AttrNode becomes AttributeNode
--> DocNode becomes DocumentNode
--> NSNode becomes NamespaceNode
--> PINode becomes ProcessingInstructionNode
- Fixed bug in toplevel Galax processing files in reverse input
order when given on the command line! :^)
October 26, 2002 - Jerome
- Made a number of changes to try to understand the reason the data
model is so big in memory. Problems are in part due to the way
memory measure is done, which makes difficult to measure the
actual size of a memory object.
o Added some printing of the size of the string
pools.
o Simplified the way some of the loading with projection is done
to avoid registering names which are discarded by projection.
o Changed the SAX events to use QNames instead of symbols from
the pools. This is better since this way events do not get
recorded in the string pools. SAX event are discarded anyway.
October 25, 2002 - Jerome
- Fixed bug in xf:index-of which was not using node identity has it
should have. This bug was triggered by projection, since it was
removing many other nodes and making it more likely that other
nodes would have the same structure among siblings.
- Fixed monitor to print the phase name for each line in the
summary.
- Fixed the document function to make sure it calls the monitor.
October 21, 2002 - Mary
- Implemented element constructor semantics as described in Section
3.7.1. An item sequence containing both non-attribute nodes and
atomic values is converted to a node sequence before applying
element constructor. Effects:
datamodel/datamodel.mli
evaluation/xaeval.ml
- Implemented typing for element constructors: an item-sequence type
containing both non-attribute node types and atomic value types is
converted to a node-sequence type before typing element
constructor. Effects:
typing/typing.ml
- NB: The above changes will be effected by validating
constructors.
October 17, 2002 - Amelie
- Changed projection print function to output to formatter
- Fixed some projection bugs
October 16, 2002 - Jerome
- Added fairly extensive support for monitoring memory and CPU
activity in Galax. Monitoring can be turned on with [-monitor on]
along with the now standard [-output-monitor filename].
This gives detailed memory and CPU consumption for each processing
phase. It also allows to wrap monitors around sub-activities, for
instance this is used to monitor document loading, which is
typically an expensive process.
There is a new directory and interface for this in ./monitor.
***** Galax Release 0.2.0 October 15, 2002 *****
October 14, 2002 - Jerome, Vasilis, Mogan
- Hooked up minimal support for the xs:dateTime datatype. Not
enabled in the system yet.
October 13, 2002 - Jerome
- Cleaned up the Caml API.
- Added possibility to add a global XQuery variable from the Caml
side.
October 12, 2002 - Jerome and Amelie
- Implemented projection for a complete query.
- Added some regression tests for projection in the
./regress/projection directory. Those trip some bugs in loading
with projection when // is involved. Those tests are not done run
by default yet. use make project in the ./regress directory
instead.
- Added options in the Galax interpretor related to projection.
[-print-projection on] prints the path used for projection.
[-print-optimized-projection on] prints the path used for
optimized projection.
[-output-projection filename] prints back the input document
after projection.
October 11, 2002 - Jerome
- Updated the STATUS file, notably the section on F&O.
- Fixed bug for usecase tests under windows.
- Fixed bug in makefile for ISO-8859-1 lexer.
- Put all of the non standard functions in the glx: namespace. This
impacts the following functions:
glx:docorder
glx:distinct-docorder
glx:unique
glx:optional
glx:union-values
glx:intersect-values
glx:except-values
glx:document-sax
glx:document-validate
- Remove xf:distinct from pervasive, obsolete.
- Fixed some flag problem generated during printing of core
expressions.
- Added optimization as an option in the demo.
- Aligned parameters in the demo with processing phases/printing
options from the command line.
- Moved the 'english text' in the web demo to be a comment at the
beginning of the query expression instead of part of the form.
- Fixed the web demo form field names.
- Fixed some remaining bugs in printing of expressions in the Web demo.
- Added value-based union, intersection and difference.
- Added NEW file to record major changes between releases.
- Changed release number to 0.2.0.
- Renamed ./capi into ./galapi.
- Created automatic packaging for the source and for the
pre-installed binary versions.
- Fixed symbolic links to the executables to be relative instead of
absolute for better portability (e.g., moving the installed binary
to another directory).
October 11, 2002 - Mary
- Added support for arithmetic operators on xsd:integer
- Added rules for promoting between xsd:integer and other numeric
types.
October 7, 2002 - Amelie and Jerome
- Added support for document projection at loading time. Made
preliminary tests.
** BREAKING NEWS Tuesday October 7th, 2002 6:30pm EDT: The first
Galax query to run on 1Gb document is XMark usecase 1. It ran on
a Linux 256Mb memory box, and took about 1 minute to give a
(correct) result!
October 5, 2002 - Jerome
- All the use cases and regression tests now work with -optim
on. Included a third pass on the usecases which tests them with
optimization on.
- Fixed bug in recursive factor function used to compute the type of
descendant. Was forgetting to keep document node types. This fixes
a bug in the sgml use case.
- Changed toplevel to turn -print-xml off automatically when using
-dynamic off.
- Complete fix to the treatment of quantified expressions.
o Added support for multiple bindings in quantified expressions
in the AST and the parser [Forgotten August 16th change].
o Fixed pretty-printer to be pretty for quantified expressions
and support multiple bindings.
o Added quantified expressions in the core. Now some and every
are preserved pretty much 'as is'. Multiple bindings are turned
into nested unary some/every. This enables a nicer normalized
form for many expressions and optimization. See below.
o Changed normalization to preserve quantified expression in the
core. Changed normalization of 'map_existential' to use
existential quantification directly.
o Added typing rules and evaluation code for quantified
expressions. It seems the evaluation should be more efficient
like this than the previous one using not(empty(for...)).
o Added optimization rules for quantified expressions. Those are
quite similar to for. Ones, this enables actual optimization of
predicates and operators in XPath in many standard cases.
o Added a few regression tests for quantified expressions.
October 4, 2002 - Mary
- Added examples/ and examples/ml-api/ directories.
- Minor changes to README and INSTALL.
October 3, 2002 - Jerome
- Added JAVAINCLUDE parameter in the configuration makefile. This
will allow users of varions JDK's to point to the correct include
directory where jni.h is located. [Thanks to Lars Nilsson for
pointing out the problem and the fix!].
- Fixed README and INSTALL files.
- Fixed serialization for floating point numbers, doubles and
decimals, implementing XML Schema canonical value properly.
October 3, 2002 - Jerome & Mary
- Added missing test results in regress/
- Added tests regress/typeswitch_empty*.xq
- Fixed numerous bugs in typing/typing.ml related to factored types
(for CEFor, CESort, CETypeswitch, distinct-values, CEUnordered)
- Fixed typing bug in which some core expressions were not typed
o Caused optimization to fail
October 2, 2002 - Mary
- Fixed normalization & dynamic semantics of function application
o Added dynamic check that actual argument is instance of
corresponding formal type and that return value is instance of
return type.
o Added check at function application site (not in function body)
so that rule can be applied consistently to user-defined and
built-in functions. (Could be moved into function body for
user-defined functions.)
(NB: Dynamic type check is only necessary if static analysis is
off. We should generate dynamic checks conditionally, but will
wait to do this until context issue is resolved.)
o TODO : SequenceType matching not fully implemented (DTTypeRef)
in Xaeval.of_type_by_name and Commontype.small_type_unit.
- Updated stdlib/pervasive.xqp to use data types instead of type
names in function signatures
- Fixed signature of item-at() & corresponding tests
- Added Galapi.eval_xquery_fun
October 2, 2002 - Jerome
- Fixed compilation chain to work smoothly under Windows. Tested
with MinWG.
** Warning: for some obscure reason, some wrong tests have been
committed. No record was found. **
September 30, 2002 - Jerome
- Fixed the document() function to keep track of previously opened
documents. Multiple access to the same document result in the same
data model instance.
- Removed dependency to physical pervasive.xq file in the Galax
directory. The pervasive file is now compiled directly within the
Galax engine. This allows installation of the system anywhere
without requiring knowledge of the installation directory at
compile time. This will be good for binary packages.
September 27, 2002 - Jerome
- Implemented F&O Section 15. Context Functions:
xf:context-item
- Implemented F&O Section 13. Functions and Operators on Nodes:
xf:name
xf:namespace-uri
op:node-equal
xf:deep-equal
op:node-before
op:node-after
xf:copy
xf:root
- Finished implementing F&O Section 14. Functions on Sequences:
xf:empty
xf:exists
xf:distinct-nodes
xf:distinct-values
xf:insert
xf:remove
xf:subsequence
xf:sequence-deep-equal
xf:sequence-node-equal
op:union
op:intersect
op:except
xf:count
xf:avg-{int,decimal,float,double} // Monomorphic versions...
- Removed xf:length obsolete.
- Added a glx: prefix and URI for Galax additions to F&O, types,
etc. URI for the Galax namespace is http://db.bell-labs.com/galax
September 27, 2002 - Mary
- Tested CAST expression.
o See test matrix in regress/evaluation/cast_test_matrix.txt
- Implemented type promotion rules for
o Arithmetic operators
o Value comparison operators
o Updated regression tests and usecases effected by this change
September 25, 2002 - Mary
- Changed version to 0.2
- Revised STATUS document
- Changed default serialization to emit item sequences as XQuery
sequences (i.e., ',' delimited)
o Updated regression tests and usecases effected by this change
o Sec 3.7.1: Element Constructor
Added instance_forest_to_node_forest to datamodel.ml to
implement conversion of item sequence to node sequence.
- Added xq: prefix and namespace for serializing <xq:result/>
- Implemented
xf:string()
xf:string(item?)
xf:error(item?) - now reports user-defined error
- Fixed expression printing bug in website/demo
September 24, 2002 - Jerome
- Fixed bug about the default namespace not being remembered.
- Fixed bug about default namespace for attributes, in printing and
path expressions.
September 22, 2002 - Jerome
- Implemented F&O Section 9. Functions on QNames:
xf:expanded-QName
xf:get-local-name-from-QName
xf:get-namespace-from-QName
- Revised F&O Section 7. Functions and Operators on Booleans:
xf:true
xf:false
xf:not
op:and (* Missing in F&O *)
op:or (* Missing in F&O *)
- Implemented F&O Section 14. Functions on Sequences:
op:to
xf:boolean
op:concatenate
xf:item-at
- Implemented range expressions, backed up by the op:to operator.
September 21, 2002 - Jerome
- Fixed function normalization to lookup function *after* namespace
resolution instead of based on the namespace prefix. This fixes
errors on type constructors (xs:string, etc.) and special
functions (xf:position, xf:error, etc.).
- Removed "ERROR" function obsolete.
- Fixed built-in simple type table so that both xs: and xsd:
prefixes would work in casting and constructor operations.
- Made sure all errors are reported correctly at the toplevel.
- Made names of errors and error messages more consistent.
September 20, 2002 - Jerome
- Turned xf: into op: for operators.
- Merged 3 source branches from Amelie, Mary and Jerome.
- Implemented URI operations:
xf:base-uri (partially -- See XQuery issue)
xf:resolve-uri
September 20, Jerome and Amelie
- Added first prototype of path analysis.
- Created new ./analysis directory.
- Changed compilation order to have normalization before
datamodel. The ./analysis directory is compiled between
./normalization and ./datamodel.
September 20, 2002 - Mary
- Implemented -serialize-wf switch
September 19, 2002 - Mary
** MAJOR CHANGES TO COMMAND LINE INTERFACE **
- See documentation in galax/README for new options
o Changed toplevel/xmlquery.ml capi/toputils.ml
o Updated regress/runtest.perlp, usescases/runtest.perlp,
& website/demo to use new options
- Implemented xsd:TYPE constructor functions
September 19, 2002 - Jerome
** CHANGE TO COMMAND LINE EXECUTABLE NAME **
- Changed the name of the command line tools:
xmlquery --> galax (main command-line executable)
galax --> galaxtop (Caml interpretor with Galax embedded)
- Integrated netstring version 0.10.1 directly into Galax. This
removes dependencies to both netstring and findlib, and is the
base for URL support in Galax. It adds dependency to both Unix and
Str modules in Caml, but this is probably inevitable (e.g., for
date and time support).
- Moved the character sets to ./tools/charsets. All third-party code
is now located in the ./tools directory.
September 18, 2002 - Jerome
- Fixed the expected output for the usecases which do not use static
typing. (XMARK, PARTS, and NS).
- Started implementing F&O, version August 16th. Added:
xf:string
xf:local-name
xf:node-name
xf:node-kind
September 18, 2002 - Mary
- Implemented new normalization rules for Atomization and Effective
Boolean Value (EBV). These rules enforce stricter static typing
than previous rules.
- Some regression & usecase tests that previously raised dynamic
errors now raise static errors.
o Disabled static typing for NS, PARTS, and XMARK usecase tests
- Modified demo
o Disabled static typing for NS, PARTS, and XMARK usecases
See usecases/Usecases file
- Added Static_Type_Error to base/error.ml
September 17, 2002 - Mary & Jerome
- Changed static typing of typeswitch to allow branches to fail. The
overall typeswitch fails if all the branches fail.
- Changed the static typing to make sure all sub-expressions are
annotated with a type. All ill-typed expressions are annotated
with the 'none' type. This should make the optimizer happy.
September 15, 2002 - Jerome
- Fixed the Web demo to work with the new use case organization.
- Slightly reorganized the use cases, for the needs of the automatic
testing:
o All XML and XSD files are now in ./usecases/docs
o All usecases have now a _usecase.xq prefix
- Fixed bug in the parser which should parser a sequence of toplevel
expressions as a single expressions sequence instead of a list of
expressions.
- Finished fixing the pretty printer for XQuery
expressions. Precedence should work fine now.
- Tested the pretty printer through boot-strapping, using the
following steps:
o parsed use cases.
o pretty-printed back all of the expressions.
o checked that the pretty-printed expression parse back and run
the use cases as the original query.
- Added test script in the use case directory. This test runs all of
the working use cases, and also performs test of the
pretty-printer through boot-strapping (as described above).
- Hooked up testing of the use cases to the toplevel 'make tests'.
** From now on, each commit must be preceded from a make tests'
directly at the toplevel. **
September 12, 2002 - Jerome
- Removed binary operation 'to' obsolete, already had been replaced
by RangeExpr.
- Removed attribute list from computed element constructor's AST,
unused.
September 11, 2002 - Jerome
- Fixed many problems in the pretty printer for expressions. Started
implementing support for precedence in the pretty printer.
September 8, 2002 - Jerome
- Fixed error message for unallowed castings to xs:boolean, xs:integer
and xs:int.
- Bug on sorting with empty greatest was already fixed.
- Fixed all of the namespace support for functions. Implemented
support for default function and element namespaces.
- The default namespace for functions is now the one from F&O. xf:
and op: are now recognized by default.
- Reorganized static typing for functions. Built-in functions with
specific typing rules are now handled separatly, through a table
lookup.
- Fixed various problems with namespace handling. Added xmlns: as a
built-in namespace prefix. Added xsi: as an XML Schema
namespace prefix, will be used as soon as support for XML Schema
named typing is added. Fixed all built-in namespaces
(xml,xmlns,xs,xsd,xsi,xf,op) to the correct URIs.
** TODO: Better support of nested namespaces inside element
constructors is still needed. Some bugs are lurking there. **
September 6, 2002 - Gargi and Jerome
- Installed latest version of the optimization rules.
- Fixed all of the optimization regression tests so all errors are
recorded as bugs.
- Fixed the regression test program so that -all is working.
******************************************************************
** All committed changes should now use be preceded to a run of **
** the regression tests with the -all option **
******************************************************************
- Moved the GALAXSRC variable from ./config/Makefile to
./regress/Makefile.conf
This is now setup by default to .. so the standard user should not
have to do anything about it, except if he wants to move the
regression tests to a different location.
- Fixed the main Makefile so that it will still work if there is no
API to compile.
- Fixed output formatting for the regression tests, so it will print
a simple report on stdout.
- Added a "make tests" target in the main makefile for Galax users
will be able to run them when they compile the system. Document it
in the INSTALL file.
September 4, 2002 - Jerome and Amelie
- Fixed the SAX parser wrt. new XML lexers. Notably, whitespace in
document root and opening tags was not handled properly.
- Implemented loading from well-formed documents to the XML Query
data model from SAX streams.
- Added a document-sax(...) function in the built-in library which
uses SAX parsing instead of DOM parsing.
August 26, 2002 - Jerome
- Added support for multiple character encodings.
This required pretty deep changes in the compiling
process. Notably, separate Makefiles are used for various
character encodings. The configuration makefile can be used to
select a subset of the available encodings. The compilation
process then gets parameterized by the selected encodings. The
-linkall flag *must* be passed to the Caml compilers.
August 23, 2002 - Jerome
- Added back support for escaped names (e.g., :item, :for) in the
XQuery parser.
- Simplified the compilation process to two simple steps: "make",
followed by "make install".
- Implemented UTF-8 and ISO-8859-1 support at the parsing level.
- Implemented appropriate handling of XML character sets at the
parsing level.
Note:
This change required some pretty serious rewrite of each lexer,
which is not partially generated from auxiliary files 'a la'
PXP.
Character sets and pre-compilation tools are courtesy of Gerd
Stolpmann, and Claudio Sacerdoti Coen.
- Fixed all bugs related to handling of characters in the parsing
tests.
August 21, 2002 - Jerome
- Factorized the XML-DOM and XQuery parsers. Remove the original XML
parser and lexer. Added document prolog lexer.
August 20, 2002 - Jerome
- Fixed the syntax for the query prolog.
Works: declare namespace
default element namespace
import schema namespace prefix = uri
import schema default element namespace = uri
August 19, 2002 - Mary
- Fixed bug in normalization of "<<" and ">>"
- Fixed bugs in regress/evaluation/node_comp*
- usecases/
- Pre-August usecases compile & run, but are not up-to-date
w.r.t. 18 August Usecase document
- website/
- Recompiled and tested
- Previously deleted functions:
Gmisc.load_file added to demo/demo_conf.ml
Toputils.print_{core_}xquery_text_from_string added to
demo/querycgi.ml
August 15, 2002 - Jerome, Mary, Gargi
- Traded a bug for another: Fixed typing of axis so it would not
fail for complex content. Currently atomic types are turned into
text node types, but the adjacent 'text node types' are not
merged.
- Fixed parser to deal with the new grammar (August 16th) for
expressions. Notably:
o for/let/quantifiers now have an optional type assertion.
o Removed type assertions (assert as).
o Added unordered expression which does nothing for now.
o Changed the syntax of typeswitch.
o Changed 'sortby' to 'sort by'
- Added optimization which removes type assertions when the static
inference shows it is a no-op.
- Changed makefile so that xmlquery et al will be links to the
native code version if available.
August 14, 2002 - Mary and Gargi
- TODO: dynamic type checks in For/Let is not implemented
August 13, 2002 - Jerome
- Split the XQuery lexer into smaller parts. This will allow further
work on the parser and enable factorization with the XML parser.
[ Files created:
o opening_tag_lexer.mll for opening tags
o closing_tag_lexer.mll for closing tags
o text_lexer.mll for XML text content
o type_lexer.mll for type declarations ]
August 13, 2002 - Gargi
- Implemented generic optimizer which takes a list optimization
rules as a parameters. This makes the optimizer easily extensible
and more modular.
[ Files created:
./evaluation/optimgen.ml
./evaluation/optimrules.ml
./evaluation/optimjudge.ml ]
[ Files deleted:
./evaluation/optimutil.ml ]
- Improved let optimization: now works for step expressions.
- Added empty() and length() as "safe" functions [in the can_fail
judgement].
- Added optimization tests.
- Indicated all BUGS properly in the regression tests.
August 12, 2002 - Jerome
- Fixed malloc bug during parameter construction in the C API. Bug
fix courtesy of Yana Kadiyska.
- Fixed bug in parsing of single-quoted strings.
[ Fixes:
parsing/string_05_pos.xq
parsing/string_06_pos.xq
parsing/string_11_pos.xq ]
- Fixed bug in parsing of doubles. Was forcing a digit after the
decimal point.
[ Fixes:
parsing/double_10_pos.xq and
parsing/double_11_pos.xq ]
- Fixed bug in parsing of attribute content. Was allowing the
forbidden character '<'.
- Fixed bug in parsing of element content. Was allowing the
forbidden sequence of characters ']]>'.
- Fixed bug in parsing of element opening tags. Was allowing
duplicate attributes!
August 6, 2002 - Jerome
- Fixed bug in pretty printer for 'every', 'some', and 'if'.
August 1st, 2002 - Mary
- Regression tests in regress/evaluation/:
o re-ran each test by hand;
o populated expect/ directory with expected results
o annotated first line of each test query that triggers bug
o regress/results reports 24 files with bugs
- Fixed bug in pervasive.xqp -- xs:AnyDocument not contained in xs:AnyNode
- Fixed bug in load.ml -- document node was not assigned node
identifier during loading
- Fixed bug in typing.ml -- type check of data() incorrectly raised
error when applied to document {}
- Fixed bug in datamodel.ml -- elemNodeWithValue incorrectly created
empty text node
- Fixed bug in xmlquery.ml -- print errors to stderr
August 1st, 2002 - Jerome
- Now prints input XQuery using pretty-printing. Removed
Gmisc.load_file function which was not working under
Windows. Fixes Windows bug raised by Phil [ xmlquery was not
working properly on windows file with new lines. ]
July 31, 2002 - Jerome
- Implemented the string-value() Data Model accessor.
July 27, 2002 - Jerome
- Removed '=>' operator, removed from XQuery.
July 26, 2002 - Jerome
- Fixed bug in parsing of SequenceType for occurrence indicator
'*'. Was getting confused with multiplication.
July 25, 2002 - Jerome
- Added support for text node constructor.
Syntax : text { Expr }
Semantics : the expression should evaluate to a single string. It
creates a new text node with the corresponding string as text content.
Limitations : it does not deal with string concatenation and still
allows empty strings.
- Added text representation for element with a simple type. This
allows to use the XPath axis on e.g., <a> { 1 } </a>.
- Fixed bugs in typing for XPath axis in the case of simple type
elements and attributes.
July 24, 2002 - Jerome
- Added a 'concats' function which concatenates a list of string.
- Fixed bug in parsing of numeric types.
- Fixed bug in factoring for sortby. Cleaned up factoring functions.
July 22, 2002 - Mary
- Changed -noverbose option to -verbose option. (Terse output should
always be the default)
- Changed serialization of query output to always produce a document,
contained in <xq:result>. This was the default, but was changed
at some point.
- Updated regress/runtest.perl to look for expected output in
expect/ subdirectory.
- Updated regress/evaluation/expect
TODO: expected output for regress/typing
- Re-ran regress/evaluation to check for errors.
*** NOTE: All tests in evaluation/ should be run and
regress/results file should be examined before committing changes
to CVS repository ***
- Fixed bugs in:
- datamodel/datamodel.ml in isInstanceValue
- evaluation/xaeval.ml
in of_type_by_name :
did not match datatype Node with PIs or comments;
incorrectly matched datatype node with atomic values
in evaluation of CEAxis: $dot may be bound to atomic value
- Changed:
- parsing/print.ml: added printf_datatype_kind
- typing/typing.ml: in typing of CETypeswitch case clause, when
intersection of expression's type and datatype is None, we type
the case-clause body "conservatively" by using the data type of
the case clause.
- schema/schemautil.ml:
Added function factor_type_in_typeswitch, which factors the type
of the argument expression. For the empty type TEmpty,
factor_with_units (used to type for and sort expressions)
returns (TNone, 0, 0), which is not applicable to typeswitch.
In this case, the factored type is converted back to TEmpty.
- TODO : normalization rule for 'treat as'.
July 19, 2002 - Zewei
- Put in a temporary hack to protect against the backslash bug of
ocamldep for the benefit of Yu Xu
July 18, 2002 - Gargi
- Completed typeswitch simplification by adding intersects function and
and fixing code for remove-empty-clauses
- Extended let simplification by adding a new rule
- Implemented two rules for "for" simplification
- Changes made to typeswitch static type evaluation
July 15, 2002 - Zewei
- Separated the installation destinations of html documents and cgi
programs. This is necessitated by multi-user systems that have
restrictions on where a user can place cgi programs.
- Updated documentation to reflect the changes
Website/README content is replaced with a reference to ../INSTALL
Website/INSTALL content is replaced with a reference to ../INSTALL
INSTALL is updated to distinguish the configuration of web server
from configuration of website/demo wrt to a pre-configured server.
- All code changes are confined to website/demo
- Added a local module, Demo_conf, to provide run-time parameterization
(based on a config file) of:
DEMOSITE (html document directory)
DEMOCGIBIN (cgi program directory)
CGIBIN_PREFIX (how the webserver refers to the per user cgi-bin)
- Changed files:
Makefile (generates the configuration file, among other changes)
Makfile.config (only changes the user should be aware of)
demo_conf.ml[i] (new, defines demo_init: string -> unit)
viewxml.ml
querycgi.ml
usecase.ml
template.html
- TODO: demo_init reads in parameter definitions from a config file.
It has to be performed at each toplevel entry to the demo program
suite, namely: querycgi.ml, viewxml.ml, usecase.ml. The module
base/conf.ml hardcodes a number of parameters at compile time.
To use the configuration file approach here would improve it.
But there is currently no convenient entry point like an init
function. It can be added. Should it?
- Also, does it make sense to install LICENSE INSTALL STATUS in
the $(WEBSITE)?
July 12, 2002 - Zewei
- Separated the installation destinations of html documents and cgi
programs. This is necessitated by multi-user systems that have
restrictions on where a user can place cgi programs.
- Updated documentation to reflect the changes Website/README
content is replaced with a reference to ../INSTALL Website/INSTALL
content is replaced with a reference to ../INSTALL INSTALL is
updated to distinguish the configuration of web server from
configuration of website/demo wrt to a pre-configured server.
- All code changes are confined to website/demo
- Added a local module, Demo_conf, to provide run-time
parameterization (based on a config file) of:
DEMOSITE (html document directory)
DEMOCGIBIN (cgi program directory)
CGIBIN_PREFIX (how the webserver refers to the per user cgi-bin)
- Changed files:
Makefile (generates the configuration file, among other changes)
Makfile.config (only changes the user should be aware of)
demo_conf.ml[i] (new, defines demo_init: string -> unit)
viewxml.ml
querycgi.ml
usecase.ml
template.html
- TODO: demo_init reads in parameter definitions from a config file.
It has to be performed at each toplevel entry to the demo program
suite, namely: querycgi.ml, viewxml.ml, usecase.ml. The module
base/conf.ml hardcodes a number of parameters at compile time. To
use the configuration file approach here would improve it. But
there is currently no convenient entry point like an init
function. It can be added. Should it?
- Also, does it make sense to install LICENSE INSTALL STATUS in
the $(WEBSITE)?
July 12, 2002 - Gargi, Jerome and Mary
- Fixed bug in static typing of typeswitch: was sometimes not doing
typing of certain branches of the typeswitch.
July 10, 2002 - Jerome
- Fixed bug in subtyping for document nodes.
July 9, 2002 - Jerome
- Added '-version' option on the command line tool.
- Made '-verbose' the default. Verbose printing can be turned off
with '-noverbose'.
- Hooked-up the optimization module to the system. Added two options
in the command-line interface: '-optim' turns optimization on, and
'-print-optim-core' prints out the optimized core expression.
- Removed the temporary 'test_opt' command line tool. The same
behavior can be recovered through: xmlquery -notype -noeval -optim
-print-optim-core xqueryfile
- Added PI's and Comments in the XQuery core. Fixed normalization
rules for PI's and Comments.
- Added support for document node constructors (document { ... }).
- Added normalization for 'instance of'.
- Removed instance of only obsolete.
July 8, 2002 - Jerome
- Removed many obsolete files and directories from the CVS
repository.
July 8, 2002 - Gargi
- Implemented the can_fail judgement for the let expression. Other
than the cast-as, treat-as and error expressions, all user-defined
functions and some of the built-in functions have been defined to
fail. Note: Most of the built-in functions can fail if the static
typing is turned off.
July 3, 2002 - Jerome
- Added preliminary support for updates in Galax:
o Added low-level update operations at the data model level.
o Added marker in the data model for deleted nodes.
o Made sure that all accessors on nodes fail for deleted nodes.
June 28, 2002 - Jerome
- Added user-level API for Galax in ML. Name of the module is
Galapi.
- Fixed a bug in function calls normalization: was not raising an
appropriate error for function calls having a mismatch with the
function signature.
June 27, 2002 - Gargi, Mary and Jerome
- Added mini optimization module. This supports recursive
simplification of unused let bindings. Added toplevel test_opt to
test optimization.
- Reorganized the ./algebra directory into three directories:
o normalization
o typing
o evaluation
Everything about optimization should go into the ./evaluation
directory.
- Removed the type handle from the 'expr' type (XQuery AST).
- Cleaned up normalization to initialize the core expressions type
handles to None.
June 26, 2002 - Jerome
- A number of fixes to the demo.
- Fixed bugs in the XML parser: added support for <!DOCTYPE
... >. Added support for comments and pis in the document root.
May 29, 2002 - Jerome
- Implemented docorder() function which sorts by document order.
Note: implementation maps that function directly to a core sort
expression using '.'.
May 28, 2002 - Jerome
- Fixed the dynamic and static semantics of sortby.
- Added support for 'empty greatest' and 'empty least'.
- Added support for stable and unstable sort.
- Fixed a bug in the data() function.
was : data(<a/>) = ""
now : data(<a/>) = ()
- Cleaned up the organization of the evaluation module.
May 26, 2002 - Jerome
- Implemented ancestor and ancestor-or-self axis.
- Fixed typing for parent, ancestor, descendant, ancestor-or-self.
May 25, 2002 - Jerome
- Turned == into is
!== into isnot
- Removed before and after unused.
- Implemented follows and precedes.
May 24, 2002 - Mary and Jerome
- Fixed the new Web site.
May 14, 2002 - Jerome
- Fixed bug in parsing of comments in XML documents and XQuery
file. Was allowing '--'. Was closing comments with ' -->' instead
of '-->'.
May 5, 2002 - Jerome
- Fixed error messages to print file and line number where the error
occured. NOTE: Some of the typing errors are behaving strange:
raising error() dynamically instead of actual type error. TODO:
remove ./parsing/line.mll from the repository. Not needed anymore.
- Added check for matching open/close tags in SAX parser.
***** Galax Release 0.1-alpha April 25, 2002 *****
April 25, 2002 - Mary
- Added Galax website in website/. Includes demo subdirectory.
- TODO: remove demo/ subdirectory, add ptrs to other XQuery
implementations, track downloads, add intro slides to 'about galax'.
April 24th, 2002 - Jerome
- Fixed bug in deep copy, was wrongly returning a new internal Node
instead of updating the dirty one.
- Implemented support for parent.
April 23rd, 2002 - Mary and Jerome
- Implemented support for node identity in the data model, loading
and validation.
- Implemented lazy deep copy in node construction. Copy is done only
when an actual data model accessor requires it.
- Fixed attribute content to be text instead of a node.
April 1st, 2002 - Jerome
- Implemented a prototype SAX parser.
March 11, 2002 - Jerome and Mary
- Added XMark use case. 19 out of 20 queries are working. Tested on
up to 10Mb document on Jerome's Linux laptop with 128Mb memory.
- Fixed pointers to use cases in the demo.
- Implemented cast of UnknownSimpleType argument to type of second
operand in value comparisons
- Fixed comparison operators on decimal, integer, int
- Fixed attribute constructors: required type is sequence of atomic
value; constructor expression automatically converted to sequence
of atomic values.
March 6, 2002 - Jerome and Mary
- Implemented arithmetic on decimals, floats, and doubles
- BUG: Automatic type promotion is not implemented. User must use
explicit casts.
- Fixed places where minOccurs maxOccurs could still build anything
else than +, *, ?. Fixes bug in function call 3.
- Fixed bug in typing for data(), children() and attribute(). Now
working on union of atomic types.
- Fixed confusion use case.
- Replaced xs:AnyTree by xs:AnyContentModel, less missleading.
- Fixed bug in validation for mixed content. Was not walking into
text node content models properly.
March 5, 2002 - Jerome
- Rationalized the use of subtyping in typing and mapping modules.
Created a new module schema/typeutil.ml which contains subtyping
wrapper functions. No modules in ./algebra should now rely on
anything else but Schema, Simplify, and Typeutil (notably, they
should not call Subsumption directly).
- Fixed name of schema environment component in Xatenv.
Changed tyenv operation into schemaenv
- Changed printing of the core expression to use namespace prefixes.
March 1, 2002 - Mary
- Implemented formal semantics of:
2.2.4 Function Calls
- BUG: builtin-functions data(), nodes(), children(), etc. are
defined on singleton nodes, not on unions of singleton nodes.
- BUG: xsd:int (minoccurs 3) (maxoccurs 3) not subtype of xsd:int+
See regress/evaluation/function_arg_3_bug.xq
February 28, 2002 - Mary
- Implemented formal semantics of:
2.5 Arithmetic Expressions
2.6.1 Value Comparisons
2.6.2 General Comparisons
2.7 Logical Expressions
2.11 Conditional Expressions
2.12 Quantified Expressions
- Fixed printing bugs in print.ml & error.ml
- Added 'text', 'atomic', and 'numeric' as datatype keywords to
lexer & parser.
- Added AnyNumeric to builtin types in sym.ml
- Replaced (+), etc. by numeric-add, etc. in pervasive.xqp
February 27, 2002 - Mary
- BUG: In bltin.ml, built-in functions are denoted by unresolved QNames
(prefix, localname), but should be denoted by expanded QNames
(uri, localname).
- In maputil.ml, implemented formal semantics of :
optional_atomic_value
optional_node
effective_boolean_value
which are used in mapping of arithmetic, (in)equality, logical,
and conditional expressions.
- Usecases
Non-deterministic type bug in confusion
February 27, 2002 - Jerome
- Added support for "cast as". Works for:
casting to xsd:string, xsd:int, xsd:integer, xsd:decimal,
xsd:float, xsd:double, xsd:boolean, xsd:qname,
xsd:anyuri.
- Fixed bug introduced in the parser for e/text().
- Fixed bug in typing for element constructors containing text.
- Fixed bug in parsing of simple types, impacting both validation
and casting.
February 26, 2002 - Jerome
- Removed some 'long tokens' from the lexer, moving towards a
simpler XQuery parser.
- Fixed bug in schema loading/normalization introduced by the text
node.
- Fixed bug in the parser related to whitespace between keywords.
February 25, 2002 - Jerome
- Added support for escaped QNames. Syntax is:
':'NCNAME
- Added support for mixed content in validation. Mixed content is a
content model with text nodes but no simple value.
February 25, 2002 - Jerome and Mary
- Added support for datatype 'text' and for type model 'TText' and
for typing of text nodes as 'text'.
- Changed definition of data() on nodes:
data(element { anySimpleType }) : anySimpleType
data(element { anyTree }) : UnknownSimpleType*
data(text) : UnknownSimpleType*
- Added UnknownSimple value to data model
[ Mapping of binary operators and functions still does not align
with FS doc. ]
February 23, 2002 - Jerome
- Fixed bug in validation for optional attributes screwing up
content model processing (the system was thinking some content
model were not deterministics passing over optional attributes).
February 20, 2002 - Jerome
- Fixed bug in the empty namespace handling due to empty xml: prefix
in the configuration.
February 12, 2002 - Jerome
- Changed printing to print the default namespace even if default
namespace is the empty namespace.
- Fixed validation to preserve type names (required for named typing
and legodb).
January 27, 2002 - Mary
- Implemented "predicate truth value" semantics
(step-qualifiers) for XPath expressions.
(effects: algebra/{mapping,maputil}.ml)
- Added () (DTEmpty) to Datatype production -- necessary to
implement step qualifiers.
(effects: algebra/{typing,xaeveal}.ml
parsing/{xquery_ast,xquery_parser}.ml schema/schemautil.ml)
- Fixed subtag bug in base/sym.ml
- Removed "value" from stdlib/bltin.ml
- Added NS usecase
- Added "xml" namespace as builtin namespace in
stdlib/pervasive.xqp; defined in config/Makefile. Necessary for
NS usecase.
(effects: serialization in datamodel/datamodel.ml)
January 26, 2002 - Jerome
- Cleaned XML Schema validation.
January 23, 2002 - Mary
- Fixed some more use cases.
January 22, 2002 - Jerome
- Added support for single quoted strings in the lexer. now 'hello =
true' is a valid string.
- Fixed bug in load_file basic operation. Function 'input' is not
reading the complete file, using really_input instead.
January 21, 2002 - Mary and Jerome
- Fixed bug in reachability module for FSA (was blowing-up). This
fixes one known bug for the subtyping non terminating.
- Fixed bugs in simplification module for union types.
- Fixed type syntax from 'group' to 'type'
- Fixed type syntax for document nodes to M. Kay's proposal. Fixed
AST, mapping and typeswitch accordingly.
- Fixed use cases XMP, Rel, Tree, Semantics, Confusion to the new
syntax and mappings.
- Fixed bugs in typing of name() and nodes() built-in functions.
January 16, 2002 - Lori
- In the regress/parsing directory,
Renamed all the xmltest files to fit into our naming scheme:
xxx_pos.xq, xxx_neg.xq, xxx_neg_expect.xq.
Removed the badly named files from the repository,
and added the correctly named files to the repository.
January 14, 2002 - Lori
- Updated config/Makefile. Has new PERL and GALAXSRC variables.
- Updated top-level Makefile. New regress/runtest.perl target,
generated from runtest.perlp and PERL variable.
January 14, 2002 - Mary
- Fixed bug in pretty printing of errors
January 10, 2002 - Lori
- Added regress/runtest.perlp. When the new config/Makefile is updated,
and you run "make depend", it will generate runtest.perl.
- Added regress/Makefile. This allows
make all, make parsing, make typing, make evaluation, make clean.
- Added regress/parsing/xmltest_valid_*.xq and - valid xml expressions
regress/parsing/xmltest_notwf_*.xq - not well-formed xml exprs
- Still need to commit top-level Makefile and config/Makefile. Must resolve
conflicts first.
January 10, 2002 - Mary
- Added regress/evaluation/typeswitch* - to test new typeswitch
regress/mapping/ - start of XPath tests
- Updated algebra/maputil.ml to support 'fortran'-style operators eq,lt, etc.
January 10, 2002 - Mary and Jerome
- Fixed typing for typeswitch.
- Added datatype production and modified typeswitch (typing
& evaluation) to operate over datatypes.
- Added small_type(t1,t2) in lieu of intersect_type(t1,t2)
as semantics of typeswitch.
- In (1) type subsumption and (2) testing that a value is in the
domain of a type (see: Xaeval.of_type_by_name), only symbols are
compared.
For elements and attributes, it *only* compares for equality the
element/attribute value's symbol/name with the type's
symbol/name. It does not recursively check the node's content.
For simple values, it *only* checks that the type of the value
and datatype are equal. It should use type subsumption on
simple types.
Group references and 'element of type' not yet supported in
typeswitch.
- Added a document unit symbol to sym.ml
- In AST, added support for element of type (group and basetype)
January 6, 2002 - Phil and Jerome
- Updated the pretty printer for types to deal with precedence.
January 4, 2002 - Jerome
- Updated the mapping to deal with value comparisons: lt gt eq, etc.
*** Mary: please double check: see the note in ./algebra/maputil.ml
January 3, 2002 - Jerome and Mary
- Cleaned command line option for Lori's test suite.
* -notype : turns types off
* -noeval : turns eval off
* -parse : only do parsing
* -algebra is removed
* -print-core : prints XQuery Core. False by default.
- Removed junk from ./regress directory
- Added directories and README for test suite in ./regress:
* ./regress/parsing for parsing tests
* ./regress/mapping for XQuery to Core mapping tests
* ./regress/xmlschema for XML Schema to types mapping tests
* ./regress/namespaces for Namespaces tests
* ./regress/typing for typing tests on the Core
* ./regress/eval for evaluation tests on the Core
* ./regress/README documents the test suite.
- Updated the XQuery AST, lexer and parser to handle the new
datatype production.
January 2, 2002 - Mary
- Added command line options for xmlquery:
-verbose Default behavior : print everything
-quiet Only print result XML document and type
-o <prefix> Prints XML document to prefix.xml and type to prefix.xsd
- Changes to stdlib/pervasive/bltin, etc. to align with 20 Dec F&O document
- Fixed tests & usecases to align with new grammar & 20 Dec F&O document
- Updated STATUS document to reflect alignment with 20 Dec WDs.
January 2, 2002 - Jerome
- Improved pretty printing of serialized documents.
- Fixed bug in simple type lexer for decimal and doubles.
- Fixed Fsa and Dfa module interfaces to compile under Ocaml-3.04.
- Updated attribute constructor's syntax to reflect the new WD. New
syntax is:
<a a="{1 + 2}"/> instead of <a a={1 + 2}/>
- Removed obsolete ZERO token in the parser.
- Removed minOccurs maxOccurs from the type syntax.
- Fixed lexing of XML names (should be consistent with XML 1.0 with
ISO-88591 encoding.
- Cleaned whitespace after keywords in XQuery no longer needed.
December 20, 2001 - Mary
- Updated examples in test directory.
See tests/Status for examples that do not terminate
- Fixed usecases/{xmp,tree}* to conform to new syntax
December 13, 2001 - Jerome
- Added Use Case "Tree" to the demo.
- Fixed the formatting of the Use Case "Tree" for the demo.
- Fixed bug in typing rule for 'for'. Was not working for () and
NONE types.
- Added a configuration parameters to whether to print xsi:type
information in the results or not. Updated the demo to take this
parameter into account.
- Added dependency in the Makefile for the toplevel galax
interpretor.
- Fixed simple type parser for doubles (was not accepting values
without exponent).
- Fixed some of the XML schema mapping for datatypes. NEEDS MORE
CLEANING.
- Cleaned up text, pi and comment parsing.
o Fixed bug in child:: axis of document nodes.
o Fixed printing of Comments and PI's expressions.
o Removed CDATA from expressions. CDATA are not treated as text
and folded into the current text node.
o Fixed parsing of text in XQuery to deal with whitespace
consistently.
- Cleaned up parsing of XML document declaration.
- Added an UnknownSimpleType in the type system for untyped text
content from XML document.
- Added text creation in the core.
o Added CEText in cexpr in the XQuery Core AST.
o Added typing rule and evaluation rule for CEText.
o Changed mapping to the core to create CEText instead of
CEScalar for text.
- Fixed document root node bug in the data model loading and
validation. Both now create root node appropriately.
o This introduces a bug in the type system!! What is the type of
rooted documents?
- Turned all keywords in lowercase, following the new spec.
- Turned "instanceof" into "instance of".
- Fixed usecases to use only lowercase.
- Added root type. Syntax is:
o document { ... } added in type production
o document { ... } added in datatype production
o document() and document-validate() both return document { ... }
types
- Fixed usecases to use document functions and fixed several related
bugs in path expressions.
- Fixed whitespace handling bug. \013 was not recognized as
whitespace, breaking the demo.
- Changed typing rule for axis::text() to return UnknownSimpleType.
- Fixed bug in mapping rule for [i]: index_of renamed to index-of.
- Fixed AnyScalar in pervasive.xq.
- Fixed printing bug for core expressions : let in instead of let
return.
- Fixed the max-int, min-int, max-float, min-float to return () when
input is (). Fixed the signature in pervasive.xq to allow () as
output.
- Fixed sorting for xsd:integer and xsd:int datatypes.
- Fixed integer arithmetics (+, -, *, div, mod) to allow null
values.
- Added a large part of use case "R".
- Fixed printing for text("...") expressions in the core.
- Fixed bug in printing of attribute names.
December 1, 2001 - Jerome
- Added a Caml toplevel with built-in Galax libraries (galax).
- Some fixes in the XQuery parser:
o removed obsolete 'true' and 'false' keywords.
o fixed numeric literals to support:
--> XQuery numeric literals: double & decimal
--> int (not part of the XQuery spec)
o fixed string literals to avoid escaping a la Caml.
- Some fixed in simple type parsers:
o fixed numeric literals to support:
--> xs:double (IEEE floating point number, see XML schema
xsd:double, implemented as Caml float)
--> xs:decimal (Arbitrary precision decimal values,
implemented as Caml Num.num)
--> xs:integer (Arbitrary integers, implemented as Caml
Big_int.big_int)
--> xs:int (Implemented as Caml int)
o fixed boolean parser to support 1 and 0 for true and false.
o fixed double parser to support NaN, INF, and -INF
- Fixed printing of simple types: decimal was printed as integer.
- Fixed bug in subtyping of simple types.
- Fixed several bugs in validation:
o Validation is now working on empty content models.
o Validation is now working on simple content models with
attributes.
- Fixed several bugs in recfactor. not terminating for recursive
elements. wrong bounds.
Nov 30, 2001 - Mary
- base/error.ml -- errors not printed to stderr
- schema/schemamapping.ml - made some functions public
Nov 29, 2001 - Mary
- added TREE use case
o Validation error when trying to validate:
define element image {
attribute source { xsd:string }
}
o Stack overflow error in //
November 28, 2001 - Mary and Jerome
- Fixed several bug in validation. Validation now takes a root
global *element* instead of a global *group*.
- Fixed several bug in compilation process and Makefiles.
- Separated API compilation from the mail Galax libraries
compilation.
- Moved usecases in a root directory.
- Removed obsolete examples from the demo.
- Fixed names of F&O functions and operators from '_' to '-'.
- Fixed aggregate functions to be type specific (this is in
contradiction with the F&O document). This allows more precise
typing. Functions are:
min-int min-float
max-int max-float
sum-int sum-float
avg-int avg-float
- Fixed the XMP use cases. Notably the data() function only works on
a single node, which requires additional for loops in some cases.
- Heavy fix of the Simple module: aligned all built-in primitive
simple types with XML Schema spec. Propagated that change
throughout the code.
- Moved builtin type resolution from the parser to the Simple
module.
- Added serialization of xsi:type information.
- Updated INSTALL file.
- Fixed bug in validation of optional elements. (was only occuring,
when an element had several optional attributes).
November 21, 2001 - Jerome
- Fixed Makefile to create parent directories during installation as
well.
- Fixed bugs in the demo. The demo now uses well-formed XML
documents directly using the new parser.
November 20, 2001 - Jerome
- AST update:
o separated XML documents and XQuery AST in new modules:
Xml_ast
Xquery_ast
o moved AST utilities in corresponding modules:
Astutil -> Xquery_astutil
(new) Xml_astutil
The new XML ast is much smaller and should reduce memory
consumption when doing parsing.
- Created separate XML lexer and XML parser using Xml_ast.
- Migrated the XML parsing and loading functions to use Xml_ast and
the new parser. This impacts:
Parseutil
Schemamapping
Load
Bltin
Toputil
- Implemented partial Schema validation. This is in the Validation
module. The implementation uses the XQuery type system and
performs tree-walking on the AST for XML well-formed document,
parses text to check for values according to the schema and
creates an instance of the XML Query Data Model with values.
- Added document-validate function that performs both document
parsing and schema validation.
- Did some minimal debugging and testing of validation. See:
./tests/xq21.xq.
November 20, 2001 - Mary
- Updated INSTALL, README
- Added STATUS
- Removed TODO
- Updated Makefile to install executables in bin/
- config/Makefile
o added GALAXHOME as install/release directory
- stdlib/pervasive.xqp
stdlib/bltin.ml
o fixed bugs in function signatures
o alignment with F&O doc
- Changed several Internal_Error exceptions to Prototype exceptions
- base/config.mlp
o changed environment variable GLXLIB to GALAXLIB
November 13, 2001 - Byron
- Added some functions from F and O document
- the change is very localized. It's in the end of the bltin.ml and
the pervasive.xqp
- We may consider to put all those F and O in a separate file
- The test script file is in tests/fando.xq
- More complete test is needed.
November 12, 2001 - Mary
- Added builtin functions true(), false()
- Added integer arithmetic operators '*', 'div', 'mod'
o see stdlib/pervasive.xpq for ugly lexer hack
- XPath 2.0 Semantics:
o Added support for implicit conversion of nodes to their
simple-content values in conditional, binary-op, and unary-op
expressions and in the key expression of the sortby.
o NOT DONE: implicit conversion of node arguments to functions
expecting simple values.
o NOT DONE: 3-valued logic for all equality/comparison operators
- Fixed bugs: (see CVS comments)
o in schemamapping (element values now EText)
o in datamodel/instance_eq : element's children or simple valued
content are compared for equality; previously, only children
were compared.
o typewitch variable now available in default clause
o typeswitch may now refer to 'unit' group types, e.g.,
xs:AnyElement
- Added error messages during type checking for undefined variables,
functions
- In tests and tests/usecases, removed all unnecessary applications
of data().
o Changed confusion use case to use text() instead of data()
because it is applied to an 'untyped' document.
- Documentation:
o split README split into README, INSTALL, and DEVELOPERS.
INSTALL contains installation instructions. DEVELOPERS
contains internal documentation for implementors.
November 11, 2001 - Jerome
- Worked on the C, C++ and Java API. Some bugs remain.
November 9, 2001 - Arnaud and Jerome
- Added Java JNI interface to Galax! (not usable yet)
- Started cleaning the C and C++ interfaces.
November 8, 2001 - Jerome
- Renamed Xasyn into Xquery_ast.
- Fixed bug in the XQuery lexer when parsing whitespace in a closing
tag.
November 4, 2001 - Jerome
- Removed statix code out of Galax. StatiX is now an independant
piece of software.
October 30, 2001 - Jerome
- Added a specific statix command-line tool for the statistics.
- Fixed many bugs in the statistics generation.
October 26, 2001 - Jerome
- Hooked the statistics generation to the validate command
tool. Improved validate tool interface.
- Moved normalize_model from Subsumption to Schemautil.
- Added resolve_rgroup_stat, used for statistics generation.
October 25, 2001 - Jerome
- Added -wf option in the validate command line tool to only check
for well-formedness.
- Added basic lexer module for XML Schema simple types. Most of the
simple type values are string place-holders for now.
- Added conversion operations from text to simple values in Simple.
- Support for simple type values (Simple) can now shared between the
AST and the data model. This simplifies a lot of the evaluation
and loading operations. Modified Xasyn accordingly to use
Simple. Propagated that change to the AST accross the system.
October 24, 2001 - Jerome
- Moved simple values from Datamodel to Simple module. Move the
simple types module into the ./base directory.
- Renamed ./misc directory into ./base.
- Added a ./validate command-line tool that only performs schema
validation and reports errors.
October 21, 2001 - Jerome
- Major update of the Data Model:
o Implementation of text nodes
o De-nodification of values. Values are not nodes anymore, do
not have an identity of a parent.
o Implementation of instances as (possibly heterogeneous)
sequences of values or nodes.
o Major cleaning of the data model interface itself. Reorganized
function according to types.
o Propagated data model update to the rest of the system. Subtle
changes in the behavior of the run time can occur due to the
difference in handling text and values.
- Modified serialization to distinguish printing of values and text.
October 19, 2001 - Jerome
- Removed obsolete InfoItem and Reference nodes from the data model.
October 2, 2001 - Jerome
- Added an XML Schema use case in the demo. This contains XML Schema
import, static checking of input/output schemas and some
namespace related examples.
- Fixed bug in uri <--> prefix table.
- Fixed bug in default namespace and handling.
- Fixed pretty printing for models and sort declarations.
- Fixed pretty printing of core expressions.
- Improved error messages for failed type assertions. ASSERT AS.
- Fixed namespace support for the document() function. The document
function takes the namespace's environment into account.
- Allowed the default prefix in the XML Schema mapping.
- Added mapschema command line tools. This takes an XML Schema file
and prints the corresponding type system representation of that
schema.
August 26, 2001 - Jerome
- All the namespace examples in ./tests seem to work (This needs to
be checked by a namespace guru!!!)
- Fixed bug in printing for the default namespace.
- Fixed bug in mapping of element constructors: it should use
locally defined namespaces.
- Fixed bug in ASSERT mapping for global element and attributes.
- Added support for Floats.
- Moved validation module from ./schema to ./datamodel.
- Implemented the new syntax for global variables:
DEFINE GLOBAL $a { expr }
Updated the usecases accordingly.
- Fixed bug in prevasive.xqp: signature of the document() function
should be xs:AnyType.
- Fixed error message in case of parsing or lexing error.
- Fixed bug in Parser: XML fragment should return text instead of string.
- Fixed bug in Lexstate: string buffer was not initialized properly.
- Fixed bug in Parseutil: opened files where not closed properly.
- Fixed bug in mapping of global variables: model wasn't mapped.
- Fixed bug in subsumption: now raises an exception for
non-deterministic content models instead of returning false.
- Added TREAT in the core. Hooked its evaluation to validation (not
implemented yet).
- Renamed Simplify module into Simplification.
- Recompiled the C-API and the demo.
August 25, 2001 - Jerome
- Fixed many bugs due to the cleaning process, notably in
subsumption.
- Changed subsumption to avoid copying schema if not necessary.
- Fixed schema compilation (previously called renaming) to complain
about unknown global elements/attributes/groups.
- Simple types now use the "xsd" prefix. Changed examples to reflect
that.
- Changed printing of models to use namespaces for infered types.
August 24, 2001 - Byron and Jerome
- **Important** Schema replaces sort_decl pretty much everywhere to
avoid the previous type information duplication (there was no
clear rule at when to use one or the other). Related changes:
o Schemautil replaces Typeutil but now works on schema
structures. Typeutil has disappeared.
o All the modules using type information are now using schemas,
notably: subsumption, intersection, simplify, mapping, xatenv,
typing and eval.
- We are getting close! Everything but the C-API and the demo
compile. Several namespace bugs have been resolved in Namespace
and Sym modules. Printing is fixed somehow. Several typing bugs
are still there.
August 23, 2001 - Jerome, Phil and Byron
- We keep pushing hard on the cleaning. Recompiled: ./datamodel and
./stdlib modules.
- Further updates on Sym, Namespace and Resolve modules.
- Pushed cleaning up to typing. It is now time to clean the
Schema/Sort Decl mess.
August 22, 2001 - Jerome and Byron
- Major cleaning of the Symbol support, of the QName support, of the
Namespace support, of the Schema support, of the XML Schema
support and of the Mapping support. Here is a list of changes:
In Misc
-------
o New ./misc/pool.ml module implement generic support for name
pools
o New ./misc/namespace.ml module contains support for qnames
(resolved and unresolved) and namespaces environment.
o ./misc/sym.ml:
* Removed namespaces from there
* Created separate symbol pools for the 6 following kinds of
names:
--> uelem_symbol / unresolved element names
--> relem_symbol / resolved element names
--> uattr_symbol / unresolved attribute names
--> rattr_symbol / resolved attribute names
--> ugroup_symbol / unresolved group names
--> rgroup_symbol / resolved group names
* The interface has separate functions for the 6 above kinds
of names plus a few additional generic functions on certain
kinds of names.
o New ./misc/resolve contains the basic resolution functions for
namespaces.
In Parsing
----------
o Removed the algebra parser and the algebra parse utililities
o Removed the warning module
o ./parsing/xasyn.mli:
* Removed support for nameclasses and named types (until we
know what to do with them).
* Added schema names (used in the schema module).
* Put qname back in Path expressions (instead of symbol)
* Added types for XML AST and XML Schema Ast
o ./parsing/parseutil: Added function for XML Schema.
In FSA
------
o Created a new fsa directory with all the support for FSA.
In Schema
---------
o moved ./parsing/xmlschema.ml to ./schema/schemamapping.ml
o moved all fsa related code to ./fsa
o Folded all namespace resolution and conflict detection in the
./schema module to type declarations (i.e., when compiling the
schema).
o Finished recompiling everything with the new symbol support.
- merged with Mary's new Typeutil (renamed typeutils to typeutil)
August 17, 2001 - Mary
- Added '//'
- fixed bug in typeutils.ml
August 16, 2001 - Mary and Byron
- Added support for importing Schemas into type system:
SCHEMA prefix = "uri"
Regression tests in regress/schema-test.xq
- Added built-in functions :
length, contains, ends-with
- Added support for XPath '[]' predicates,
including last(), position() and [IntegerLiteral]
tests in tests/xq01b.xq
August 10, 2001 - Byron
- Implemented the below in mapping.ml.
Jerome wrote:
Having static static type assertion only for global elements. In
any case, a static type assertion checks the type of all its
descendants so we do not have to put them everywhere.
August 8, 2001 - Everyone
- Merged support for namespaces with for-factoring and nodeswitch
- Added syntax of function signatures:
DEFINE FUNCTION SIGNATURE fname (Datatype, ... , Datatype)
RETURNS QName | '(' Datatype ')'
- Changed pervasive.xq to use XQuery syntax
- Debugged namespaces
August 7, 2001 - Mary and Byron
- Added symbol spaces for namespace name and group.
symbol_val_c ::= Datasym .. | Elemsym .. | Attrsym ..
| Groupsym qname | NSsym (prefix opt, uri, targetnamespace)
Added accessors and constructors for the symbols
(See Also: misc/sym.ml)
- Element, Attribute, Group no longer carry qname or tname along.
They carry symbol now. (See Also: parsing/xasyn.mli: expr_desc,
cexpr_desc, model_desc, and nameclass)
- All the occurence of Element, Attribute, Group (core) expressions
need to be modified. The change is minor. But, it's everywhere.
- Slight modification on print module, as expected.
- The symbols are generated and added into the correct symbol space
during parsing
- mapping.ml does two things:
1. Map the Full AST to Core AST
2. Resolve the qnames all over the place (Element, Attribute,
Group, Path, etc.)
Note: all are done in 1 walk of the AST
Warning: mapping.ml becomes heavy-weight and less trivial.
maputil.ml are not doing much work.
- Modify Namespace node in datamodel (See also datamodel.ml: NSNode )
o the change we made is small. Essentially modifying the node,
its accessor and constructor And the change on fserialize
support serialization of the namespace-awared datamodel
forest.
o load.ml is modifyed accordingly.
- toplevel: use pervasiveX.xq (in Full XQuery synatx) instead of
pervasive.xq (in Core syntax)
- Added tests/result directory: It contains the redirected output of
the tests, located in tests/
Usage:
> xmlquery xqXX.xq > xqXX.res
> diff xqXX.res result/xqXX.res
If your xmlquery executable is correct, diff will tell you that
there is no difference between your output and the one in result
dir.
August 6, 2001 - Mary
- xquery_parser: limitedmodel. TNone and TEmpty are added add adhoc
rules to parse function signatures
August 3, 2001 - Jerome
- Added descendant and descendant-or-self accessors in the data
model. Added corresponding calls in the evaluation module. Typing
for descendant is not working yet. Sorting in doc-order and
duplicate removal is not working.
August 2, 2001 - Jerome and Phil
- Turned back to for-factoring.
o Added axis in the core.
o Added direct evaluation rules for axis.
o Modified mapping modules not to generate typeswitch and
preserve axis.
o Checked examples with the new system.
o Put back factoring in the for type inference rule.
o Added direct typing rules for axis.
- Added primitive support for warning when an expression is not
empty but has type empty.
August 1, 2001 - Jerome
- Fixed bug in typing for children.
- Added Jonathan Robie's example on well-formed vs. invalid
documents.
July 30, 2001 - Jerome
- Fixed bug in type intersection due to bug in or-patterns in
Caml(sic!).
- Fixed formatting and presentation bugs reported by Phil in the
demo.
- Added support for Attribute and Element references, except in XML
schema mapping.
tests are in ./tests/subtypes2.xq
July 26, 2001 - Jerome
- Added wadler as a CVS user.
- Put all the demo file in the Galax ./demo directory.
- Added current usecases in ./tests/usecases.
- Added automatic generation of JavaScript and HTML files for the
demo from the current use cases.
- Added [-context file] option in xmlquery command-line so one
context file can be shared among many queries.
July 24, 2001 - Jerome
- Added support for tracing of accesses to the data model children
operation.
o Extended algebra parser to support a (&1) [ "john" ] where 1 is
the ID of the a element node.
o Added tracing global variable in Config. This variable is set
to true if tracing is on.
o Added -trace file option in the command line xmlquery. The file
stores the node id of the elements accessed during the query in
the order where the query accesses these elements.
July 23, 2001 - Mary
- Added maping for error()/ERROR() functions
July 23, 2001 - Byron
- parsing/xmlschema: map XML syntax to the sort_decl
- partially implemented, had some simple tests
- parsing/MAP2SCHEMA: the mapping rules from XML Schema to the galax
sort declaration and models
July 21, 2001 - Jerome
- Computed names can now be of type string or qname.
- Fixed bug in the name function (did not work for attributes).
- Added type AnyNode = AnyElement | AnyAttribute in pervasive.xq.
July 20, 2001 - Jerome
- Fixed bug in the typing rule for the children function. children
now takes any node as input and returns empty sequence for values.
- Added support for computed elements and attributes in the parser.
- Added mapping rule for computed elements and attributes.
July 17, 2001 - Jerome
- XMP use case to use XML element constructors. Added Q7 and Q10.
- Fixed XQuery parser to support expression lists within enclosed
expressions. (i.e., <a>{ 1,2 }</a> instead of <a> { (1,2) } </a>.
- Added support for XML element constructor and EText in the mapping.
- Modified XQuery parser to generate EText instead of string values
for XML text.
- Added EText expressions for text nodes in the AST.
- Finished rewritting all the demo examples. All the examples from
the XML DevCon demo are now running.
- Cosmetic changes in xmlquery and in the demo scripts.
July 16, 2001 - Byron
- translated xq18.xq, xq19.xq, xq20.xq to Full XQuery syntax.
July 16, 2001 - Byron
Jerome wrote:
- Fixed bug in DFA to NFA automata mapping.
o Why is there such a conversion ??
val includes : NFA -> NFA -> bool (old)
val includes : NFA -> DFA -> bool (new)
o When we construct a DFA from a nondeterministic regular
expression, it will raise exception in runtime.
o We can pass NFA of a bigger type to includes
functions. (statically checked)
val intersects: NFA -> NFA -> NFA (needed in includes)
o This code is tested and working before DFA is written. (the
code is rather non-trivial.)
o write the conversion of DFA to NFA to reuse intersects.
o the conversion is not needed after intersects is modified to
intersects: NFA -> DFA -> NFA
July 16, 2001 - Jerome
- Implemented existential quantification in predicates.
- Updated the demo with XQuery examples.
- Fixed bug in Schema.weakunion_types and Simplify.
- XML loading function to remove leading and trailing whitespace.
- XML loading function to remove empty text nodes.
- Fixed Mary's subtype operator:
o resolved grammar ambiguity.
new syntax is : ASSERT AS (m1 <: m2)
o implemented mapping rule for <:
- BUG: subtyping should not return false when the bigger type is non
deterministic.
July 16, 2001 - Mary
- commented debugging statements
- added more tests to subtypes.xq
July 15, 2001 - Mary
- Added subtype operator model <: model for testing.
See tests in tests/subtypes.xq
- Added check_type to algebra/typing.ml to check type
of non-empty expressions.
July 15, 2001 - Jerome
- Recompiled the demo.
- Cleaned the toplevel modules and the CGI modules.
- Added support for global variables in the parser. Syntax is:
let $v as m := (e)
- Added mapping rule for global variables.
- Cleaned mapping module.
- Fixed e/@a bug located in mapping module.
--> mapping for attributes was not creating labelattr symbol.
July 13, 2001 - Mary
- Implemented mapping for following XQuery expressions: EApp, EAttr,
EAssert, EBinaryOp, EElem, EFLWR, EIf, EList, EPath (partially
implemented) EScalar, ESelf, ESome, EEvery, ESort, ETypeswitch,
EUnaryOp, EVar
- Implemented index_of using value equality (needs node equality but
DM doesn't have identity fully implemented)
- Updated tests/Status; most working upto xq18.xq.
- LEXER BUG : in function definition, function name must be
immediately followed by lparen.
July 13, 2001 - Jerome
- more updates on the XQuery parser for types.
o typeswitch supports full models
o function declarations take a limited forme of
model/element/attribute references
o TREAT/CAST/ASSERT take only a limited form of
model/element/attribute references
o made more tests and examples in regress. everything seems much
better now.
- updated the XQuery parser to support precisely the current
consensus grammar.
o removed TYPE declarations
o simplified wildcards
o minOccurs maxOccurs are not optional
July 12, 2001 - Jerome
- added many subsumption examples, most work. still a few bugs:
o RNone is not supported properly in the automata
o schema renaming must differ from bigger and smaller types.
- Updated syntax for types
o added ( model ), model?, model+
- Fixed bug in DFA to NFA automata mapping.
o Why is there such a conversion ??
- Added new implementation of the subsumption module.
o still supports subsumption mappings
o works for smaller type non deterministic
o hooked to Byron's automata for inclusion of regular
expressions
July 12, 2001 - Mary
- Translated all 'algebra' examples in tests/xa*.xq into XQuery
syntax in files tests/xq*.xq. Not all examples are complete.
- Added static type assertion expression: ASSERT AS model (expr)
- Extended mapping.ml to handle type declarations, function
definitions, and simple path expressions, e.g., $v/a
- Minor changes to algebra/xmlquery_parser.mly to parse TYPE
declarations (BUG ALERT: See ??MF about parsing ATTRIBUTE/ELEMENT
tokens )
July 12, 2001 - Byron
- Added an automata module during the past few days.
o fsa.ml(i): a fsa functor, plus some another structures for
creating an automata for type
o glushkov.ml(i): the implementation of the algorithm in Regular
Expressions into Finate Automata [Anne Bruggemann-Klein]
(Definitions of follow, nullable, first,..., at the front
Definition 2.3: Definition of Glushkov automaton
Definition 3.1, 3.2: Star normal form)
Normalization of Type AST is added. The normalization of TBound
(t, m,n) is follow:
Modified from Jerome's code
(I) t{0,*} == t*
(II) t{1,*} == t+
(III) t{m,*} == t, t{m-1, *}
(IV) t{0,1} == ()|t
(IV') t{0,n} == ()|t,t{0,n-1}
(V) if m > 1 then t{m,n} == t,t{m-1,n-1}
o intersectfsa.ml(i): given two TypeName_NFA.nfa, M1 and M2,
compute the intersection of M1 and M2.
The algorithm is mainly running special Dijkstra's on two
automata in parallel.
NB. Print function is provided to print out the automata. For
debugging reason.
o reachablity.ml(i): provide a function to decide the reachabilty
problem: Given an automaton M, a (start) state s, and a set of
(final) states F, is there a simple path from s to any memeber
of F.
The algorithm is adapted from Dijkstra's.
Limitation: M can only be the TypeName_NFA_Pair.nfa. It should
be more generic. Need modification.
July 3rd, 2001 - Jerome
- Added printing function for full XQuery expressions.
- Recompiled the C and C++ API.
- Fixed algebra parser. Sort rule only allows one sort
criteria. Fixed precedence problem.
- Fixed xquery parser. Fixed lexer that kept 'element ' in the
ELEMENT token instead of only keeping the qname.
July 3rd, 2001 - Byron
- sortby is working on simple types.
o the parser is updated (ie., expr1 sortby expr2 sortkind)
o the typing rule is added
o the evaluation rule is added
o example query are
query bib0/book/author sortby data() descending, data() ascending
query bib0/book sortby year/data() descending sortby year/data() ascending
o To Do
. need to propagate the typing error message properly. It
screams "Fatal error" when a Query Prototype exception is
raised. Quite scary.
. need to factor out the dummy sort variable, "_dot". It is now
hardcoded in xaeval.ml, typing.ml and xaparser.ml. Which file
should it go to?
. need to pretty print the core sort expression.
. map the Full XQuery Sort to the Core Sort. Need to deal with
Path expression. Not sure how to do.
July 2nd, 2001 - Byron
- the simple test queries for the rules are located at
galax/tests/xquery/
- Added mapping from Full XQuery to the Core.
o mappping.ml(i) : contains code for transversing the tree
o maputil.ml(i) : definition of intermediate structures for the
mapping and applying the mapping rule
Below are the rules that has been implemented and passed simple
tests.
o Binary operators
o FLWR expressions
o Conditional expressions
o Typeswitch
o Unary operators (*NOT TESTED*)
o Variables
o Scalar values
o Function application
o Sequences
o standalone element constructor
o standalone attribute constructor
- tests (only the evaluation part) the algebra test cases this is a
brief summary of the test:
evaluation/translation
xa01.xq correct
xa02.xq correct
xa03.xq correct
xa4.xq syntax error "for b <- ..."
xa05.xq correct
xa06.xq correct
xa07.xq correct
xa08.xq correct
xa09.xq 'unique' not supported
xa10.xq 'index' not supported
xa11.xq 'sort' not working
xa12.xq 'group' not supported
xa13.xq correct
xa14.xq correct
xa15.xq syntax error in type declaration
xa16.xq syntax error "<-", case
xa17.xq correct
xa18.xq syntax error "<-", case
xa19.xq syntax error "<-", case
xa20.xq syntax error case
- removed all the debugging print statements.
June 29th, 2001 - Mary, Byron and Jerome
- Compiled the whole thing except the C api with new AST
- Found lots of bugs in typing and subtyping.
- Added ELEMENT A { } ATTRIBUTE A { } in the xquery parser. Did not
debug that part yet.
June 28th, 2001 - Byron
- Updated the parser so that both element and attribute are
correctly parsed and constructed.
- Done more tests systematically. Reveals some bugs. Not fixed yet.
The scripts are located at ~/galax/regress
- Bug on subsumption and simplify. The new test set revealed the
problem with simplify.ml It has problem in simplifying Unions.
Fact:
o subsumption.ml's bug: None <: Empty (true) Empty <: None
(true!!! it should be false)
o None is a subtype of everything (from XQuery 1.0 Formal
Semantic section 4.2)
In simplification, it deunions everything, simplifies, REMOVE
types that is a subtype of something else in the new union.
If we simplify () | 0, it will remove () because of the
subsumption bug. It will give us 0. But, the correct result is ().
The code checks whehter () <: 0. The bug tells wrong answer. So
that () is removed.
June 27th, 2001 - Byron
- wrote a simple regression test. 4 remarks are made, mainly about
the xquery parser
o This doesn't parses:
parseStringFXQuery "default namespace = \"pennDBSpace\"";;
This does:
parseStringFXQuery "default namespace mySpace = \"pennDBSpace\"";;
We are expecting the opposite.
ToDo: EDefaultNamespaceDecl is (string * string). It should be
string. EDefaultNamespaceDecl ENamespaceDecl are not used
anywhere. => I can't tell what the pair of string means and I
didn't modify.
o model -> ... | ELEMENT nameset LCURLY typedmodel RCURLY | ...
This parses: "element * { String }" This doesn't: "element
myElem * { String }"
qname is missing. => The element model is not properly created
o model -> ... | ATTRIBUTE nameset LCURLY typedmodel RCURLY | ...
This parses: { attribute myAttr* { String }
This doesn't: { attribute myAttr * { String }
ATTRIBUTE -> "attribute" whitespaceplus qname
Cause: qname followed by nameset
ToDo: put whitespaceplus between these two 'terminals'
o Subsumption fails in this trivial case:
myMNone is a model of None
myMEmpty is a model of Empty
Both of the below return true.
isSubtype sortDeclList myMNone myMEmpty;;
isSubtype sortDeclList myMEmpty myMNone;;
June 26th, 2001 - Byron
- Updated Schema and Subsumption to compile with the new AST (not
test yet).
- subsumption.ml(i): the internal structure, sub_theta is updated
to:
type sub_theta = (tname * tname) list
this affects operations on subsumptions mappings and subsumption
functions.
- Many functions in schema.ml match on the model_desc
o Exceptions are raised if it matches TElemRef, TAttrRef. I am
not sure what's the right thing to do with them.
o TAmp is not supported yet.
June 25th, 2001 - Mary, Byron, and Jerome
- Updated Simplify, Intersection to compile with the new AST.
- Updated all interface under schema directory to compile with the
new AST.
- Updated the first half of Schema.
- Updated Typeutils to compile with the new AST.
June 24th, 2001 - Jerome
- Checked algebra parser and printing functions on ./test
examples. Updated all examples with the new syntax.
June 23th, 2001 - Jerome
- Updated Parseutil to compile with the new AST. Cleaned detection
of multiply defined functions and variables.
- Added new printing functions from the core to the XQuery syntax.
- Added back printing functions for old algebra type syntax.
- Added printing functions for the new type systax.
- Updated the Print module to compile with the new AST. Removed
obsolete printing functions.
June 22th, 2001 - Jerome
- Moved printing for minOccurs/maxOccurs values from the Print to
the Bound module.
- Updated the XQuery parser to compile with the new AST.
- Added additional AST creation functions in Astutil that take finfo
and other parameteres into account.
- Added precedence for SORT in Algebra parser.
- Modified syntax for match in Algebra:
match e match e as v
case v1 : t1 do e1 --> case t1 do e1
... ...
else en else en
- Updated the Algebra parser to compile with the new AST. The
algebra syntax for types handled by the parser is still the same,
but it now creates the new AST using groups instead of
types. Notably:
TYPE X = t --> GROUP X = t
a [ X ] --> ELEMENT a { GROUP X }
- Updated the AST to handle the new new syntax for types.
June 21th, 2001 - Byron and Jerome
- Created Astutil containing AST creation functions.
- Put locinfo() in the Finfo module.
- Updated Xasyn to the new AST for XQuery and the core.
- Fixed Makefile in ./capi to avoid trying the installation is the
CAPI is not compiled.
- Fixed printing function for Sort.
June 10th, 2001 - Jerome
- Removed support for unordered collections (cf. new version of the
data model).
- Added support for process instructions, CDATA sections and
comments in the parser.
June 6th, 2001 - Jerome
- Made CVS repository available to the rest of the Galax team.
June 4th, 2001
- Mary Fernandez and Byron Choi join the Galax team!
- Moved bltin.ml module from algebra/ to in stdlib/
- Preliminary support for the new syntax for types in XQuery (Phil
Wadler and Jonathan Robie's proposal).
May 25th, 2001
- Created toplevel/toputils.ml file and updated toplevel tools
accordingly.
- Removed the serialization module. Transfered the corresponding
function in the data model module.
- Made _Node and _ValueNode abstract in the datamodel.
- Did some cleaning on the datamodel interface.
- Made _oforest and _uforest abstract in the datamodel.
- Created lexer and parser for XQuery. Added corresponding files
parsing/xquery_lexer.mll parsing/xquery_parser.mly. Removed old
attempts xqlexer.mll and xqparser.mly. Updated parseutil.ml and
xasyn.ml accordingly. Added all_usecases.xq in the test directory.
- Created stdlib directory. This directory will contain the XPath
2.0 operators, pervasive.xq, etc.
|