libgda r3095 - in trunk: . doc/C libgda libgda/sql-parser libgda/sqlite providers/postgres providers/skel-implementation/capi
- From: vivien svn gnome org
- To: svn-commits-list gnome org
- Subject: libgda r3095 - in trunk: . doc/C libgda libgda/sql-parser libgda/sqlite providers/postgres providers/skel-implementation/capi
- Date: Mon, 24 Mar 2008 16:41:50 +0000 (GMT)
Author: vivien
Date: Mon Mar 24 16:41:50 2008
New Revision: 3095
URL: http://svn.gnome.org/viewvc/libgda?rev=3095&view=rev
Log:
2008-03-24 Vivien Malerba <malerba gnome-db org>
* libgda/sql-parser/lemon.c:
* libgda/sql-parser/LemonPatch:
* libgda/sql-parser/lempar.c: use the Lemon parser generator for SQLite 3.5.7
* libgda/sql-parser/parser.y:
* libgda/sql-parser/delimiter.y:
* providers/skel-implementation/capi/parser.y:
* providers/postgres/parser.y: add #include <assert.h> which is required by the
new version of the Lemon parser generator
* providers/postgres/gda-postgres-meta.c:
* providers/postgres/gda-postgres-provider.c: renamed the prepared statement with
lowercase only to avoid postgres warning about non existing prepared statement
when calling DEALLOCATE
* libgda/information_schema.xml: added some descriptions
* doc/C/information_schema.png:
* doc/C/information_schema.svg: updated the GdaMetaStore's internal structure's
diagram
Modified:
trunk/ChangeLog
trunk/doc/C/information_schema.png
trunk/doc/C/information_schema.svg
trunk/libgda/information_schema.xml
trunk/libgda/sql-parser/LemonPatch
trunk/libgda/sql-parser/delimiter.y
trunk/libgda/sql-parser/lemon.c
trunk/libgda/sql-parser/lempar.c
trunk/libgda/sql-parser/parser.y
trunk/libgda/sqlite/gda-sqlite-meta.c
trunk/providers/postgres/gda-postgres-meta.c
trunk/providers/postgres/gda-postgres-provider.c
trunk/providers/postgres/parser.y
trunk/providers/skel-implementation/capi/parser.y
Modified: trunk/doc/C/information_schema.png
==============================================================================
Binary files. No diff available.
Modified: trunk/doc/C/information_schema.svg
==============================================================================
--- trunk/doc/C/information_schema.svg (original)
+++ trunk/doc/C/information_schema.svg Mon Mar 24 16:41:50 2008
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Generated by Graphviz version 2.12 (Mon Apr 23 09:57:53 UTC 2007)
- For user: (vmalerba) MALERBA Vivien DSNA-DTI SIM ATM M204 p5713 -->
+<!-- Generated by Graphviz version 2.12 (Tue Sep 4 16:56:48 UTC 2007)
+ For user: (vivien) Vivien,,, -->
<!-- Title: G Pages: 1 -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
@@ -11,19 +11,15 @@
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="27.07in"
- height="24.85in"
+ height="25.10in"
id="svg2"
sodipodi:version="0.32"
- inkscape:version="0.45"
+ inkscape:version="0.45.1"
sodipodi:docname="graph.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
- sodipodi:docbase="/local/TESTS/V4/bugs/20080311_meta_store_structure_dump"
- inkscape:export-filename="/local/TESTS/V4/bugs/20080311_meta_store_structure_dump/graph.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"
- sodipodi:modified="TRUE">
+ sodipodi:docbase="/home/vivien/Devel/V4/bugs/20080311_meta_store_structure_dump">
<metadata
- id="metadata978">
+ id="metadata986">
<rdf:RDF>
<cc:Work
rdf:about="">
@@ -34,17 +30,13 @@
</rdf:RDF>
</metadata>
<defs
- id="defs976">
+ id="defs984">
<title
id="title5">G</title>
- <title
- id="title409">main.main._enums->main.main._udt</title>
- <title
- id="title646">main.main._parameters->main.main._routines</title>
</defs>
<sodipodi:namedview
- inkscape:window-height="887"
- inkscape:window-width="1087"
+ inkscape:window-height="1200"
+ inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
@@ -54,23 +46,23 @@
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
- inkscape:zoom="0.25735968"
- inkscape:cx="1222.0129"
- inkscape:cy="705.30271"
- inkscape:window-x="6"
- inkscape:window-y="52"
+ inkscape:zoom="0.40340068"
+ inkscape:cx="1299.9967"
+ inkscape:cy="1053.6697"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
inkscape:current-layer="svg2" />
<polygon
id="polygon7"
- points="-4,4 -4,-1786 1946,-1786 1946,4 -4,4 "
+ points="-4,4 -4,-1804 1946,-1804 1946,4 -4,4 "
style="fill:#ffffff;stroke:#ffffff"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)"
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<g
class="node"
id="node1"
- transform="matrix(1.33333,0,0,1.33333,-223.91783,1817.9135)">
+ transform="matrix(1.33333,0,0,1.33333,111.92709,241.22582)">
<title
id="title10">main.main._attributes</title>
<polygon
@@ -104,36 +96,36 @@
<g
class="node"
id="node2"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title25">main.main._information_schema_catalog_name</title>
<polygon
id="polygon27"
- points="699,-1757 699,-1777 911,-1777 911,-1757 699,-1757 "
+ points="699,-1775 699,-1795 911,-1795 911,-1775 699,-1775 "
style="fill:#808080;stroke:#808080" />
<text
id="text29"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1762.33"
+ y="-1780.33"
x="805">_information_schema_catalog_name</text>
<polygon
id="polygon31"
- points="699,-1757 699,-1777 911,-1777 911,-1757 699,-1757 "
+ points="699,-1775 699,-1795 911,-1795 911,-1775 699,-1775 "
style="fill:none;stroke:#000000" />
<text
id="text33"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1743.33"
+ y="-1761.33"
x="739.5">catalog_name</text>
<polygon
id="polygon35"
- points="698,-1738 698,-1778 912,-1778 912,-1738 698,-1738 "
+ points="698,-1756 698,-1796 912,-1796 912,-1756 698,-1756 "
style="fill:none;stroke:#000000" />
</g>
<g
class="node"
id="node3"
- transform="matrix(1.33333,0,0,1.33333,-1376.002,2115.1629)">
+ transform="matrix(1.33333,0,0,1.33333,-1427.4853,1926.8948)">
<title
id="title38">main.main._builtin_data_types</title>
<polygon
@@ -187,7 +179,7 @@
<g
class="node"
id="node4"
- transform="matrix(1.33333,0,0,1.33333,-1570.2826,1866.4837)">
+ transform="matrix(1.33333,0,0,1.33333,-1702.646,1669.0866)">
<title
id="title61">main.main._element_types</title>
<polygon
@@ -256,1899 +248,1931 @@
<g
class="node"
id="node5"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title90">main.main._schemata</title>
<polygon
id="polygon92"
- points="741,-1673 741,-1693 869,-1693 869,-1673 741,-1673 "
+ points="741,-1691 741,-1711 869,-1711 869,-1691 741,-1691 "
style="fill:#808080;stroke:#808080" />
<text
id="text94"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1678.33"
+ y="-1696.33"
x="805">_schemata</text>
<polygon
id="polygon96"
- points="741,-1673 741,-1693 869,-1693 869,-1673 741,-1673 "
+ points="741,-1691 741,-1711 869,-1711 869,-1691 741,-1691 "
style="fill:none;stroke:#000000" />
<text
id="text98"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1659.33"
+ y="-1677.33"
x="781.5">catalog_name</text>
<text
id="text100"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1641.33"
+ y="-1659.33"
x="782">schema_name</text>
<text
id="text102"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1623.33"
+ y="-1641.33"
x="784.5">schema_owner</text>
<text
id="text104"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1605.33"
+ y="-1623.33"
x="788.5">schema_internal</text>
<polygon
id="polygon106"
- points="740,-1600 740,-1694 870,-1694 870,-1600 740,-1600 "
+ points="740,-1618 740,-1712 870,-1712 870,-1618 740,-1618 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge2"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title109">main.main._schemata->main.main._information_schema_catalog_name</title>
<path
id="path111"
- d="M 805,-1698 C 805,-1706 805,-1715 805,-1724"
+ d="M 805,-1716 C 805,-1724 805,-1733 805,-1742"
style="fill:none;stroke:#000000" />
<polygon
id="polygon113"
- points="801.5,-1724 805,-1734 808.5,-1724 801.5,-1724 "
+ points="801.5,-1742 805,-1752 808.5,-1742 801.5,-1742 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node7"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title116">main.main._udt</title>
<polygon
id="polygon118"
- points="214,-1427 214,-1447 324,-1447 324,-1427 214,-1427 "
+ points="214,-1445 214,-1465 324,-1465 324,-1445 214,-1445 "
style="fill:#808080;stroke:#808080" />
<text
id="text120"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1432.33"
+ y="-1450.33"
x="269">_udt</text>
<polygon
id="polygon122"
- points="214,-1427 214,-1447 324,-1447 324,-1427 214,-1427 "
+ points="214,-1445 214,-1465 324,-1465 324,-1445 214,-1445 "
style="fill:none;stroke:#000000" />
<text
id="text124"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1413.33"
+ y="-1431.33"
x="248.5">udt_catalog</text>
<text
id="text126"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1395.33"
+ y="-1413.33"
x="249">udt_schema</text>
<text
id="text128"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1377.33"
+ y="-1395.33"
x="243.5">udt_name</text>
<text
id="text130"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1359.33"
+ y="-1377.33"
x="244">udt_gtype</text>
<text
id="text132"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1341.33"
+ y="-1359.33"
x="257">udt_comments</text>
<text
id="text134"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1323.33"
+ y="-1341.33"
x="261">udt_short_name</text>
<text
id="text136"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1305.33"
+ y="-1323.33"
x="257">udt_full_name</text>
<text
id="text138"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1287.33"
+ y="-1305.33"
x="250">udt_internal</text>
<text
id="text140"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1269.33"
+ y="-1287.33"
x="246">udt_owner</text>
<polygon
id="polygon142"
- points="213,-1264 213,-1448 325,-1448 325,-1264 213,-1264 "
+ points="213,-1282 213,-1466 325,-1466 325,-1282 213,-1282 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge4"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title145">main.main._udt->main.main._schemata</title>
<path
id="path147"
- d="M 305,-1452 C 324,-1491 351,-1533 388,-1560 C 440,-1598 616,-1625 722,-1638"
+ d="M 305,-1470 C 324,-1509 351,-1551 388,-1578 C 440,-1616 616,-1643 722,-1656"
style="fill:none;stroke:#000000" />
<polygon
id="polygon149"
- points="721.701,-1641.49 732,-1639 722.398,-1634.52 721.701,-1641.49 "
+ points="721.701,-1659.49 732,-1657 722.398,-1652.52 721.701,-1659.49 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node9"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title152">main.main._domains</title>
<polygon
id="polygon154"
- points="439,-1535 439,-1555 631,-1555 631,-1535 439,-1535 "
+ points="439,-1553 439,-1573 631,-1573 631,-1553 439,-1553 "
style="fill:#808080;stroke:#808080" />
<text
id="text156"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1540.33"
+ y="-1558.33"
x="535">_domains</text>
<polygon
id="polygon158"
- points="439,-1535 439,-1555 631,-1555 631,-1535 439,-1535 "
+ points="439,-1553 439,-1573 631,-1573 631,-1553 439,-1553 "
style="fill:none;stroke:#000000" />
<text
id="text160"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1521.33"
+ y="-1539.33"
x="485.5">domain_catalog</text>
<text
id="text162"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1503.33"
+ y="-1521.33"
x="486">domain_schema</text>
<text
id="text164"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1485.33"
+ y="-1503.33"
x="480.5">domain_name</text>
<text
id="text166"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1467.33"
+ y="-1485.33"
x="468">data_type</text>
<text
id="text168"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
+ y="-1467.33"
+ x="456.5">gtype</text>
+ <text
+ id="text170"
+ style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-1449.33"
x="519.5">character_maximum_length</text>
<text
- id="text170"
+ id="text172"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-1431.33"
x="504.5">character_octet_length</text>
<text
- id="text172"
+ id="text174"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-1413.33"
x="489">collation_catalog</text>
<text
- id="text174"
+ id="text176"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-1395.33"
x="489.5">collation_schema</text>
<text
- id="text176"
+ id="text178"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-1377.33"
x="484">collation_name</text>
<text
- id="text178"
+ id="text180"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-1359.33"
x="501">character_set_catalog</text>
<text
- id="text180"
+ id="text182"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-1341.33"
x="501.5">character_set_schema</text>
<text
- id="text182"
+ id="text184"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-1323.33"
x="496">character_set_name</text>
<text
- id="text184"
+ id="text186"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-1305.33"
x="493">numeric_precision</text>
<text
- id="text186"
+ id="text188"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-1287.33"
x="481">numeric_scale</text>
<text
- id="text188"
+ id="text190"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-1269.33"
x="485">domain_default</text>
<text
- id="text190"
- style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1251.33"
- x="481">domain_gtype</text>
- <text
id="text192"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1233.33"
+ y="-1251.33"
x="494">domain_comments</text>
<text
id="text194"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1215.33"
+ y="-1233.33"
x="498">domain_short_name</text>
<text
id="text196"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1197.33"
+ y="-1215.33"
x="494">domain_full_name</text>
<text
id="text198"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1179.33"
+ y="-1197.33"
x="487">domain_internal</text>
<text
id="text200"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1161.33"
+ y="-1179.33"
x="483">domain_owner</text>
<polygon
id="polygon202"
- points="438,-1156 438,-1556 632,-1556 632,-1156 438,-1156 "
+ points="438,-1174 438,-1574 632,-1574 632,-1174 438,-1174 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge6"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title205">main.main._domains->main.main._schemata</title>
<path
id="path207"
- d="M 640,-1551 C 643,-1554 646,-1557 649,-1560 C 670,-1581 698,-1599 723,-1612"
+ d="M 640,-1569 C 643,-1572 646,-1575 649,-1578 C 670,-1599 698,-1617 723,-1630"
style="fill:none;stroke:#000000" />
<polygon
id="polygon209"
- points="721.559,-1615.2 732,-1617 724.958,-1609.08 721.559,-1615.2 "
+ points="721.559,-1633.2 732,-1635 724.958,-1627.08 721.559,-1633.2 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node11"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title212">main.main._tables</title>
<polygon
id="polygon214"
- points="881,-1028 881,-1048 1007,-1048 1007,-1028 881,-1028 "
+ points="881,-1037 881,-1057 1007,-1057 1007,-1037 881,-1037 "
style="fill:#808080;stroke:#808080" />
<text
id="text216"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1033.33"
+ y="-1042.33"
x="944">_tables</text>
<polygon
id="polygon218"
- points="881,-1028 881,-1048 1007,-1048 1007,-1028 881,-1028 "
+ points="881,-1037 881,-1057 1007,-1057 1007,-1037 881,-1037 "
style="fill:none;stroke:#000000" />
<text
id="text220"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1014.33"
+ y="-1023.33"
x="920">table_catalog</text>
<text
id="text222"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-996.33301"
+ y="-1005.33"
x="920.5">table_schema</text>
<text
id="text224"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-978.33301"
+ y="-987.33301"
x="915">table_name</text>
<text
id="text226"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-960.33301"
+ y="-969.33301"
x="912">table_type</text>
<text
id="text228"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-942.33301"
+ y="-951.33301"
x="932.5">is_insertable_into</text>
<text
id="text230"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-924.33301"
+ y="-933.33301"
x="928.5">table_comments</text>
<text
id="text232"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-906.33301"
+ y="-915.33301"
x="932.5">table_short_name</text>
<text
id="text234"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-888.33301"
+ y="-897.33301"
x="928.5">table_full_name</text>
<text
id="text236"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-870.33301"
+ y="-879.33301"
x="917.5">table_owner</text>
<polygon
id="polygon238"
- points="880,-865 880,-1049 1008,-1049 1008,-865 880,-865 "
+ points="880,-874 880,-1058 1008,-1058 1008,-874 880,-874 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge8"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title241">main.main._tables->main.main._schemata</title>
<path
id="path243"
- d="M 948,-1053 C 950,-1176 942,-1392 873,-1560 C 869,-1570 864,-1579 858,-1588"
+ d="M 948,-1062 C 951,-1186 943,-1406 873,-1578 C 869,-1588 864,-1597 858,-1606"
style="fill:none;stroke:#000000" />
<polygon
id="polygon245"
- points="855.2,-1585.9 852,-1596 860.8,-1590.1 855.2,-1585.9 "
+ points="855.2,-1603.9 852,-1614 860.8,-1608.1 855.2,-1603.9 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node13"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title248">main.main._collations</title>
<polygon
id="polygon250"
- points="667,-1400 667,-1420 827,-1420 827,-1400 667,-1400 "
+ points="667,-1418 667,-1438 827,-1438 827,-1418 667,-1418 "
style="fill:#808080;stroke:#808080" />
<text
id="text252"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1405.33"
+ y="-1423.33"
x="747">_collations</text>
<polygon
id="polygon254"
- points="667,-1400 667,-1420 827,-1420 827,-1400 667,-1400 "
+ points="667,-1418 667,-1438 827,-1438 827,-1418 667,-1418 "
style="fill:none;stroke:#000000" />
<text
id="text256"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1386.33"
+ y="-1404.33"
x="717">collation_catalog</text>
<text
id="text258"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1368.33"
+ y="-1386.33"
x="717.5">collation_schema</text>
<text
id="text260"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1350.33"
+ y="-1368.33"
x="712">collation_name</text>
<text
id="text262"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1332.33"
+ y="-1350.33"
x="725.5">collation_comments</text>
<text
id="text264"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1314.33"
+ y="-1332.33"
x="729.5">collation_short_name</text>
<text
id="text266"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1296.33"
+ y="-1314.33"
x="725.5">collation_full_name</text>
<polygon
id="polygon268"
- points="666,-1291 666,-1421 828,-1421 828,-1291 666,-1291 "
+ points="666,-1309 666,-1439 828,-1439 828,-1309 666,-1309 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge10"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title271">main.main._collations->main.main._schemata</title>
<path
id="path273"
- d="M 761,-1425 C 770,-1474 783,-1539 793,-1586"
+ d="M 761,-1443 C 770,-1492 783,-1557 793,-1604"
style="fill:none;stroke:#000000" />
<polygon
id="polygon275"
- points="789.607,-1586.88 795,-1596 796.471,-1585.51 789.607,-1586.88 "
+ points="789.607,-1604.88 795,-1614 796.471,-1603.51 789.607,-1604.88 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node15"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title278">main.main._routines</title>
<polygon
id="polygon280"
- points="1083,-1535 1083,-1555 1229,-1555 1229,-1535 1083,-1535 "
+ points="1083,-1553 1083,-1573 1229,-1573 1229,-1553 1083,-1553 "
style="fill:#808080;stroke:#808080" />
<text
id="text282"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1540.33"
+ y="-1558.33"
x="1156">_routines</text>
<polygon
id="polygon284"
- points="1083,-1535 1083,-1555 1229,-1555 1229,-1535 1083,-1535 "
+ points="1083,-1553 1083,-1573 1229,-1573 1229,-1553 1083,-1553 "
style="fill:none;stroke:#000000" />
<text
id="text286"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1521.33"
+ y="-1539.33"
x="1130">specific_catalog</text>
<text
id="text288"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1503.33"
+ y="-1521.33"
x="1130.5">specific_schema</text>
<text
id="text290"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1485.33"
+ y="-1503.33"
x="1125">specific_name</text>
<text
id="text292"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1467.33"
+ y="-1485.33"
x="1128.5">routine_catalog</text>
<text
id="text294"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1449.33"
+ y="-1467.33"
x="1129">routine_schema</text>
<text
id="text296"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1431.33"
+ y="-1449.33"
x="1123.5">routine_name</text>
<text
id="text298"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1413.33"
+ y="-1431.33"
x="1120.5">routine_type</text>
<text
id="text300"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1395.33"
+ y="-1413.33"
x="1117.5">return_type</text>
<text
id="text302"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1377.33"
+ y="-1395.33"
x="1115.5">returns_set</text>
<text
id="text304"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1359.33"
+ y="-1377.33"
x="1122.5">routine_body</text>
<text
id="text306"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1341.33"
+ y="-1359.33"
x="1136">routine_definition</text>
<text
id="text308"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1323.33"
+ y="-1341.33"
x="1126">external_name</text>
<text
id="text310"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1305.33"
+ y="-1323.33"
x="1136">external_language</text>
<text
id="text312"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1287.33"
+ y="-1305.33"
x="1129.5">parameter_style</text>
<text
id="text314"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1269.33"
+ y="-1287.33"
x="1129.5">is_deterministic</text>
<text
id="text316"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1251.33"
+ y="-1269.33"
x="1128.5">sql_data_access</text>
<text
id="text318"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1233.33"
+ y="-1251.33"
x="1117.5">is_null_call</text>
<text
id="text320"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1215.33"
+ y="-1233.33"
x="1137">routine_comments</text>
<text
id="text322"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1197.33"
+ y="-1215.33"
x="1141">routine_short_name</text>
<text
id="text324"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1179.33"
+ y="-1197.33"
x="1137">routine_full_name</text>
<text
id="text326"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1161.33"
+ y="-1179.33"
x="1126">routine_owner</text>
<polygon
id="polygon328"
- points="1082,-1156 1082,-1556 1230,-1556 1230,-1156 1082,-1156 "
+ points="1082,-1174 1082,-1574 1230,-1574 1230,-1174 1082,-1174 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge12"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title331">main.main._routines->main.main._schemata</title>
<path
id="path333"
- d="M 1074,-1544 C 1069,-1550 1064,-1555 1058,-1560 C 1011,-1602 942,-1624 888,-1636"
+ d="M 1074,-1562 C 1069,-1568 1064,-1573 1058,-1578 C 1011,-1620 942,-1642 888,-1654"
style="fill:none;stroke:#000000" />
<polygon
id="polygon335"
- points="887.119,-1632.61 878,-1638 888.492,-1639.47 887.119,-1632.61 "
+ points="887.119,-1650.61 878,-1656 888.492,-1657.47 887.119,-1650.61 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node17"
- transform="matrix(1.33333,0,0,1.33333,-50.991312,2379.9536)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
id="title338">main.main._udt_columns</title>
<polygon
id="polygon340"
- points="167,-1091 167,-1111 371,-1111 371,-1091 167,-1091 "
+ points="167,-1109 167,-1129 371,-1129 371,-1109 167,-1109 "
style="fill:#808080;stroke:#808080" />
<text
id="text342"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1096.33"
+ y="-1114.33"
x="269">_udt_columns</text>
<polygon
id="polygon344"
- points="167,-1091 167,-1111 371,-1111 371,-1091 167,-1091 "
+ points="167,-1109 167,-1129 371,-1129 371,-1109 167,-1109 "
style="fill:none;stroke:#000000" />
<text
id="text346"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1077.33"
+ y="-1095.33"
x="201.5">udt_catalog</text>
<text
id="text348"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1059.33"
+ y="-1077.33"
x="202">udt_schema</text>
<text
id="text350"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1041.33"
+ y="-1059.33"
x="196.5">udt_name</text>
<text
id="text352"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1023.33"
+ y="-1041.33"
x="202.5">udt_column</text>
<text
id="text354"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
+ y="-1023.33"
+ x="215">ordinal_position</text>
+ <text
+ id="text356"
+ style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-1005.33"
x="196">data_type</text>
<text
- id="text356"
+ id="text358"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-987.33301"
x="247.5">character_maximum_length</text>
<text
- id="text358"
+ id="text360"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-969.33301"
x="232.5">character_octet_length</text>
<text
- id="text360"
+ id="text362"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-951.33301"
x="221">numeric_precision</text>
<text
- id="text362"
+ id="text364"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-933.33301"
x="209">numeric_scale</text>
<text
- id="text364"
+ id="text366"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-915.33301"
x="222">datetime_precision</text>
<text
- id="text366"
+ id="text368"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-897.33301"
x="229">character_set_catalog</text>
<text
- id="text368"
+ id="text370"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-879.33301"
x="229.5">character_set_schema</text>
<text
- id="text370"
+ id="text372"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-861.33301"
x="224">character_set_name</text>
<text
- id="text372"
+ id="text374"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-843.33301"
x="217">collation_catalog</text>
<text
- id="text374"
+ id="text376"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-825.33301"
x="217.5">collation_schema</text>
<text
- id="text376"
+ id="text378"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-807.33301"
x="212">collation_name</text>
<polygon
- id="polygon378"
- points="166,-802 166,-1112 372,-1112 372,-802 166,-802 "
+ id="polygon380"
+ points="166,-802 166,-1130 372,-1130 372,-802 166,-802 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge14"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title381">main.main._udt_columns->main.main._udt</title>
+ id="title383">main.main._udt_columns->main.main._udt</title>
<path
- id="path383"
- d="M 269,-1116 C 269,-1161 269,-1209 269,-1250"
+ id="path385"
+ d="M 269,-1134 C 269,-1179 269,-1227 269,-1268"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon385"
- points="265.5,-1250 269,-1260 272.5,-1250 265.5,-1250 "
+ id="polygon387"
+ points="265.5,-1268 269,-1278 272.5,-1268 265.5,-1268 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node19"
- transform="matrix(1.33333,0,0,1.33333,448.29315,2715.4901)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title388">main.main._enums</title>
+ id="title390">main.main._enums</title>
<polygon
- id="polygon390"
- points="9,-992 9,-1012 131,-1012 131,-992 9,-992 "
+ id="polygon392"
+ points="9,-1001 9,-1021 131,-1021 131,-1001 9,-1001 "
style="fill:#808080;stroke:#808080" />
<text
- id="text392"
+ id="text394"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-997.33301"
+ y="-1006.33"
x="70">_enums</text>
<polygon
- id="polygon394"
- points="9,-992 9,-1012 131,-1012 131,-992 9,-992 "
+ id="polygon396"
+ points="9,-1001 9,-1021 131,-1021 131,-1001 9,-1001 "
style="fill:none;stroke:#000000" />
<text
- id="text396"
+ id="text398"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-978.33301"
+ y="-987.33301"
x="43.5">udt_catalog</text>
<text
- id="text398"
+ id="text400"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-960.33301"
+ y="-969.33301"
x="44">udt_schema</text>
<text
- id="text400"
+ id="text402"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-942.33301"
+ y="-951.33301"
x="38.5">udt_name</text>
<text
- id="text402"
+ id="text404"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-924.33301"
+ y="-933.33301"
x="24.5">label</text>
<text
- id="text404"
+ id="text406"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-906.33301"
+ y="-915.33301"
x="57">ordinal_position</text>
<polygon
- id="polygon406"
- points="8,-901 8,-1013 132,-1013 132,-901 8,-901 "
+ id="polygon408"
+ points="8,-910 8,-1022 132,-1022 132,-910 8,-910 "
style="fill:none;stroke:#000000" />
</g>
- <path
- style="fill:none;stroke:#000000;stroke-width:1.7279501"
- d="M 539.45026,1361.0629 C 523.34651,1277.628 504.022,1174.7249 486.84466,1085.7276 C 463.22583,963.35645 437.45982,827.07944 414.91457,710.27058"
- id="path411" />
- <polygon
- style="fill:#000000;stroke:#000000"
- points="213.084,-1252.96 221,-1260 219.203,-1249.56 213.084,-1252.96 "
- id="polygon413"
- transform="matrix(1.0240327,-0.8538888,0.8538888,1.0240327,1261.8718,2177.5094)" />
+ <g
+ class="edge"
+ id="edge16"
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
+ <title
+ id="title411">main.main._enums->main.main._udt</title>
+ <path
+ id="path413"
+ d="M 98,-1026 C 113,-1058 132,-1098 149,-1134 C 170,-1179 195,-1227 216,-1269"
+ style="fill:none;stroke:#000000" />
+ <polygon
+ id="polygon415"
+ points="213.084,-1270.96 221,-1278 219.203,-1267.56 213.084,-1270.96 "
+ style="fill:#000000;stroke:#000000" />
+ </g>
<g
class="node"
id="node21"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title416">main.main._views</title>
+ id="title418">main.main._views</title>
<polygon
- id="polygon418"
+ id="polygon420"
points="483,-566 483,-586 599,-586 599,-566 483,-566 "
style="fill:#808080;stroke:#808080" />
<text
- id="text420"
+ id="text422"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-571.33301"
x="541">_views</text>
<polygon
- id="polygon422"
+ id="polygon424"
points="483,-566 483,-586 599,-586 599,-566 483,-566 "
style="fill:none;stroke:#000000" />
<text
- id="text424"
+ id="text426"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-552.33301"
x="522">table_catalog</text>
<text
- id="text426"
+ id="text428"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-534.33301"
x="522.5">table_schema</text>
<text
- id="text428"
+ id="text430"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-516.33301"
x="517">table_name</text>
<text
- id="text430"
+ id="text432"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-498.33301"
x="529.5">view_definition</text>
<text
- id="text432"
+ id="text434"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-480.33301"
x="522.5">check_option</text>
<text
- id="text434"
+ id="text436"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-462.33301"
x="520">is_updatable</text>
<polygon
- id="polygon436"
+ id="polygon438"
points="482,-457 482,-587 600,-587 600,-457 482,-457 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge18"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title439">main.main._views->main.main._tables</title>
+ id="title441">main.main._views->main.main._tables</title>
<path
- id="path441"
- d="M 544,-591 C 550,-646 568,-720 617,-762 C 702,-834 773,-734 863,-798 C 882,-812 897,-831 908,-852"
+ id="path443"
+ d="M 544,-591 C 550,-646 568,-720 617,-762 C 702,-834 773,-733 863,-798 C 884,-814 900,-837 912,-861"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon443"
- points="905.084,-853.958 913,-861 911.203,-850.559 905.084,-853.958 "
+ id="polygon445"
+ points="908.74,-862.283 916,-870 915.137,-859.44 908.74,-862.283 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node23"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title446">main.main._character_sets</title>
+ id="title448">main.main._character_sets</title>
<polygon
- id="polygon448"
- points="649,-1028 649,-1048 845,-1048 845,-1028 649,-1028 "
+ id="polygon450"
+ points="649,-1037 649,-1057 845,-1057 845,-1037 649,-1037 "
style="fill:#808080;stroke:#808080" />
<text
- id="text450"
+ id="text452"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1033.33"
+ y="-1042.33"
x="747">_character_sets</text>
<polygon
- id="polygon452"
- points="649,-1028 649,-1048 845,-1048 845,-1028 649,-1028 "
+ id="polygon454"
+ points="649,-1037 649,-1057 845,-1057 845,-1037 649,-1037 "
style="fill:none;stroke:#000000" />
<text
- id="text454"
+ id="text456"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1014.33"
+ y="-1023.33"
x="711">character_set_catalog</text>
<text
- id="text456"
+ id="text458"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-996.33301"
+ y="-1005.33"
x="711.5">character_set_schema</text>
<text
- id="text458"
+ id="text460"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-978.33301"
+ y="-987.33301"
x="706">character_set_name</text>
<text
- id="text460"
+ id="text462"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-960.33301"
+ y="-969.33301"
x="716">default_collate_catalog</text>
<text
- id="text462"
+ id="text464"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-942.33301"
+ y="-951.33301"
x="716.5">default_collate_schema</text>
<text
- id="text464"
+ id="text466"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-924.33301"
+ y="-933.33301"
x="711">default_collate_name</text>
<text
- id="text466"
+ id="text468"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-906.33301"
+ y="-915.33301"
x="719.5">character_set_comments</text>
<text
- id="text468"
+ id="text470"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-888.33301"
+ y="-897.33301"
x="723.5">character_set_short_name</text>
<text
- id="text470"
+ id="text472"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-870.33301"
+ y="-879.33301"
x="719.5">character_set_full_name</text>
<polygon
- id="polygon472"
- points="648,-865 648,-1049 846,-1049 846,-865 648,-865 "
+ id="polygon474"
+ points="648,-874 648,-1058 846,-1058 846,-874 648,-874 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge20"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title475">main.main._character_sets->main.main._schemata</title>
+ id="title477">main.main._character_sets->main.main._schemata</title>
<path
- id="path477"
- d="M 806,-1053 C 822,-1084 837,-1118 845,-1152 C 886,-1329 883,-1383 845,-1560 C 843,-1569 840,-1578 837,-1586"
+ id="path479"
+ d="M 804,-1062 C 820,-1095 836,-1133 845,-1170 C 885,-1347 883,-1401 845,-1578 C 843,-1587 840,-1596 837,-1604"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon479"
- points="833.464,-1585.42 833,-1596 839.964,-1588.02 833.464,-1585.42 "
+ id="polygon481"
+ points="833.464,-1603.42 833,-1614 839.964,-1606.02 833.464,-1603.42 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="edge"
id="edge22"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title482">main.main._character_sets->main.main._collations</title>
+ id="title484">main.main._character_sets->main.main._collations</title>
<path
- id="path484"
- d="M 747,-1053 C 747,-1121 747,-1212 747,-1277"
+ id="path486"
+ d="M 747,-1062 C 747,-1133 747,-1228 747,-1295"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon486"
- points="743.5,-1277 747,-1287 750.5,-1277 743.5,-1277 "
+ id="polygon488"
+ points="743.5,-1295 747,-1305 750.5,-1295 743.5,-1295 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node26"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title489">main.main._triggers</title>
+ id="title491">main.main._triggers</title>
<polygon
- id="polygon491"
+ id="polygon493"
points="1061,-629 1061,-649 1213,-649 1213,-629 1061,-629 "
style="fill:#808080;stroke:#808080" />
<text
- id="text493"
+ id="text495"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-634.33301"
x="1137">_triggers</text>
<polygon
- id="polygon495"
+ id="polygon497"
points="1061,-629 1061,-649 1213,-649 1213,-629 1061,-629 "
style="fill:none;stroke:#000000" />
<text
- id="text497"
+ id="text499"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-615.33301"
x="1105.5">trigger_catalog</text>
<text
- id="text499"
+ id="text501"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-597.33301"
x="1106">trigger_schema</text>
<text
- id="text501"
+ id="text503"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-579.33301"
x="1100.5">trigger_name</text>
<text
- id="text503"
+ id="text505"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-561.33301"
x="1118.5">event_manipulation</text>
<text
- id="text505"
+ id="text507"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-543.33301"
x="1122">event_object_catalog</text>
<text
- id="text507"
+ id="text509"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-525.33301"
x="1122.5">event_object_schema</text>
<text
- id="text509"
+ id="text511"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-507.33301"
x="1115.5">event_object_table</text>
<text
- id="text511"
+ id="text513"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-489.33301"
x="1110">action_statement</text>
<text
- id="text513"
+ id="text515"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-471.33301"
x="1114">action_orientation</text>
<text
- id="text515"
+ id="text517"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-453.33301"
x="1111.5">condition_timing</text>
<text
- id="text517"
+ id="text519"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-435.33301"
x="1114">trigger_comments</text>
<text
- id="text519"
+ id="text521"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-417.33301"
x="1118">trigger_short_name</text>
<text
- id="text521"
+ id="text523"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-399.33301"
x="1114">trigger_full_name</text>
<polygon
- id="polygon523"
+ id="polygon525"
points="1060,-394 1060,-650 1214,-650 1214,-394 1060,-394 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge24"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title526">main.main._triggers->main.main._schemata</title>
+ id="title528">main.main._triggers->main.main._schemata</title>
<path
- id="path528"
- d="M 1098,-654 C 1085,-699 1072,-751 1063,-798 C 997,-1137 1111,-1273 923,-1560 C 913,-1575 900,-1588 886,-1600"
+ id="path530"
+ d="M 1097,-654 C 1085,-699 1072,-751 1063,-798 C 997,-1144 1117,-1284 924,-1578 C 914,-1593 901,-1606 886,-1618"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon530"
- points="883.9,-1597.2 878,-1606 888.1,-1602.8 883.9,-1597.2 "
+ id="polygon532"
+ points="883.9,-1615.2 878,-1624 888.1,-1620.8 883.9,-1615.2 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="edge"
id="edge26"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title533">main.main._triggers->main.main._tables</title>
+ id="title535">main.main._triggers->main.main._tables</title>
<path
- id="path535"
- d="M 1088,-654 C 1074,-690 1058,-728 1043,-762 C 1029,-792 1014,-823 1000,-852"
+ id="path537"
+ d="M 1087,-654 C 1073,-690 1058,-728 1043,-762 C 1028,-795 1012,-829 997,-861"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon537"
- points="996.797,-850.559 995,-861 1002.92,-853.958 996.797,-850.559 "
+ id="polygon539"
+ points="993.797,-859.559 992,-870 999.916,-862.958 993.797,-859.559 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node29"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title540">main.main._table_constraints</title>
+ id="title542">main.main._table_constraints</title>
<polygon
- id="polygon542"
+ id="polygon544"
points="863,-602 863,-622 1025,-622 1025,-602 863,-602 "
style="fill:#808080;stroke:#808080" />
<text
- id="text544"
+ id="text546"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-607.33301"
x="944">_table_constraints</text>
<polygon
- id="polygon546"
+ id="polygon548"
points="863,-602 863,-622 1025,-622 1025,-602 863,-602 "
style="fill:none;stroke:#000000" />
<text
- id="text548"
+ id="text550"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-588.33301"
x="916">constraint_catalog</text>
<text
- id="text550"
+ id="text552"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-570.33301"
x="916.5">constraint_schema</text>
<text
- id="text552"
+ id="text554"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-552.33301"
x="911">constraint_name</text>
<text
- id="text554"
+ id="text556"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-534.33301"
x="902">table_catalog</text>
<text
- id="text556"
+ id="text558"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-516.33301"
x="902.5">table_schema</text>
<text
- id="text558"
+ id="text560"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-498.33301"
x="897">table_name</text>
<text
- id="text560"
+ id="text562"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-480.33301"
x="908">constraint_type</text>
<text
- id="text562"
+ id="text564"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-462.33301"
x="901.5">check_clause</text>
<text
- id="text564"
+ id="text566"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-444.33301"
x="901.5">is_deferrable</text>
<text
- id="text566"
+ id="text568"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-426.33301"
x="914">initially_deferred</text>
<polygon
- id="polygon568"
+ id="polygon570"
points="862,-421 862,-623 1026,-623 1026,-421 862,-421 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge28"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title571">main.main._table_constraints->main.main._tables</title>
+ id="title573">main.main._table_constraints->main.main._tables</title>
<path
- id="path573"
- d="M 944,-627 C 944,-695 944,-783 944,-851"
+ id="path575"
+ d="M 944,-627 C 944,-698 944,-789 944,-860"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon575"
- points="940.5,-851 944,-861 947.5,-851 940.5,-851 "
+ id="polygon577"
+ points="940.5,-860 944,-870 947.5,-860 940.5,-860 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node31"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title578">main.main._domain_constraints</title>
+ id="title580">main.main._domain_constraints</title>
<polygon
- id="polygon580"
- points="407,-1028 407,-1048 575,-1048 575,-1028 407,-1028 "
+ id="polygon582"
+ points="407,-1037 407,-1057 575,-1057 575,-1037 407,-1037 "
style="fill:#808080;stroke:#808080" />
<text
- id="text582"
+ id="text584"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1033.33"
+ y="-1042.33"
x="491">_domain_constraints</text>
<polygon
- id="polygon584"
- points="407,-1028 407,-1048 575,-1048 575,-1028 407,-1028 "
+ id="polygon586"
+ points="407,-1037 407,-1057 575,-1057 575,-1037 407,-1037 "
style="fill:none;stroke:#000000" />
<text
- id="text586"
+ id="text588"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1014.33"
+ y="-1023.33"
x="460">constraint_catalog</text>
<text
- id="text588"
+ id="text590"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-996.33301"
+ y="-1005.33"
x="460.5">constraint_schema</text>
<text
- id="text590"
+ id="text592"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-978.33301"
+ y="-987.33301"
x="455">constraint_name</text>
<text
- id="text592"
+ id="text594"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-960.33301"
+ y="-969.33301"
x="453.5">domain_catalog</text>
<text
- id="text594"
+ id="text596"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-942.33301"
+ y="-951.33301"
x="454">domain_schema</text>
<text
- id="text596"
+ id="text598"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-924.33301"
+ y="-933.33301"
x="448.5">domain_name</text>
<text
- id="text598"
+ id="text600"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-906.33301"
+ y="-915.33301"
x="445.5">check_clause</text>
<text
- id="text600"
+ id="text602"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-888.33301"
+ y="-897.33301"
x="445.5">is_deferrable</text>
<text
- id="text602"
+ id="text604"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-870.33301"
+ y="-879.33301"
x="458">initially_deferred</text>
<polygon
- id="polygon604"
- points="406,-865 406,-1049 576,-1049 576,-865 406,-865 "
+ id="polygon606"
+ points="406,-874 406,-1058 576,-1058 576,-874 406,-874 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge32"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title607">main.main._domain_constraints->main.main._schemata</title>
+ id="title609">main.main._domain_constraints->main.main._schemata</title>
<path
- id="path609"
- d="M 442,-1053 C 382,-1183 305,-1415 421,-1560 C 458,-1606 620,-1629 722,-1640"
+ id="path611"
+ d="M 442,-1062 C 382,-1194 303,-1431 421,-1578 C 458,-1624 620,-1647 722,-1658"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon611"
- points="721.701,-1643.49 732,-1641 722.398,-1636.52 721.701,-1643.49 "
+ id="polygon613"
+ points="721.701,-1661.49 732,-1659 722.398,-1654.52 721.701,-1661.49 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="edge"
id="edge30"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title614">main.main._domain_constraints->main.main._domains</title>
+ id="title616">main.main._domain_constraints->main.main._domains</title>
<path
- id="path616"
- d="M 502,-1053 C 505,-1080 508,-1110 512,-1142"
+ id="path618"
+ d="M 501,-1062 C 505,-1092 508,-1125 512,-1160"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon618"
- points="508.522,-1142.4 513,-1152 515.488,-1141.7 508.522,-1142.4 "
+ id="polygon620"
+ points="508.522,-1160.4 513,-1170 515.488,-1159.7 508.522,-1160.4 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node34"
- transform="matrix(1.33333,0,0,1.33333,-130.67006,2598.3833)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title621">main.main._parameters</title>
+ id="title623">main.main._parameters</title>
<polygon
- id="polygon623"
- points="1267,-1010 1267,-1030 1403,-1030 1403,-1010 1267,-1010 "
+ id="polygon625"
+ points="1267,-1019 1267,-1039 1403,-1039 1403,-1019 1267,-1019 "
style="fill:#808080;stroke:#808080" />
<text
- id="text625"
+ id="text627"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1015.33"
+ y="-1024.33"
x="1335">_parameters</text>
<polygon
- id="polygon627"
- points="1267,-1010 1267,-1030 1403,-1030 1403,-1010 1267,-1010 "
+ id="polygon629"
+ points="1267,-1019 1267,-1039 1403,-1039 1403,-1019 1267,-1019 "
style="fill:none;stroke:#000000" />
<text
- id="text629"
+ id="text631"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-996.33301"
+ y="-1005.33"
x="1314">specific_catalog</text>
<text
- id="text631"
+ id="text633"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-978.33301"
+ y="-987.33301"
x="1314.5">specific_schema</text>
<text
- id="text633"
+ id="text635"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-960.33301"
+ y="-969.33301"
x="1309">specific_name</text>
<text
- id="text635"
+ id="text637"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-942.33301"
+ y="-951.33301"
x="1315">ordinal_position</text>
<text
- id="text637"
+ id="text639"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-924.33301"
+ y="-933.33301"
x="1316">parameter_mode</text>
<text
- id="text639"
+ id="text641"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-906.33301"
+ y="-915.33301"
x="1315.5">parameter_name</text>
<text
- id="text641"
+ id="text643"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-888.33301"
+ y="-897.33301"
x="1296">data_type</text>
<polygon
- id="polygon643"
- points="1266,-883 1266,-1031 1404,-1031 1404,-883 1266,-883 "
+ id="polygon645"
+ points="1266,-892 1266,-1040 1404,-1040 1404,-892 1266,-892 "
style="fill:none;stroke:#000000" />
</g>
- <path
- style="fill:none;stroke:#000000;stroke-width:1.51578224"
- d="M 1675.3776,1214.1743 C 1661.2203,1112.0936 1644.5646,982.42372 1627.0761,858.27171"
- id="path648" />
- <polygon
- style="fill:#000000;stroke:#000000"
- points="1238.86,-1162.44 1238,-1173 1245.26,-1165.28 1238.86,-1162.44 "
- id="polygon650"
- transform="matrix(1.2798233,0.3739268,-0.3739268,1.2798233,-399.21721,1883.417)" />
+ <g
+ class="edge"
+ id="edge34"
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
+ <title
+ id="title648">main.main._parameters->main.main._routines</title>
+ <path
+ id="path650"
+ d="M 1301,-1044 C 1284,-1082 1263,-1131 1242,-1178"
+ style="fill:none;stroke:#000000" />
+ <polygon
+ id="polygon652"
+ points="1238.86,-1176.44 1238,-1187 1245.26,-1179.28 1238.86,-1176.44 "
+ style="fill:#000000;stroke:#000000" />
+ </g>
<g
class="node"
id="node36"
- transform="matrix(1.33333,0,0,1.33333,-29.010968,2386.8225)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title653">main.main._routine_columns</title>
+ id="title655">main.main._routine_columns</title>
<polygon
- id="polygon655"
- points="1081,-1001 1081,-1021 1231,-1021 1231,-1001 1081,-1001 "
+ id="polygon657"
+ points="1081,-1010 1081,-1030 1231,-1030 1231,-1010 1081,-1010 "
style="fill:#808080;stroke:#808080" />
<text
- id="text657"
+ id="text659"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-1006.33"
+ y="-1015.33"
x="1156">_routine_columns</text>
<polygon
- id="polygon659"
- points="1081,-1001 1081,-1021 1231,-1021 1231,-1001 1081,-1001 "
+ id="polygon661"
+ points="1081,-1010 1081,-1030 1231,-1030 1231,-1010 1081,-1010 "
style="fill:none;stroke:#000000" />
<text
- id="text661"
+ id="text663"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-987.33301"
+ y="-996.33301"
x="1128">specific_catalog</text>
<text
- id="text663"
+ id="text665"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-969.33301"
+ y="-978.33301"
x="1128.5">specific_schema</text>
<text
- id="text665"
+ id="text667"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-951.33301"
+ y="-960.33301"
x="1123">specific_name</text>
<text
- id="text667"
+ id="text669"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-933.33301"
+ y="-942.33301"
x="1122.5">column_name</text>
<text
- id="text669"
+ id="text671"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-915.33301"
+ y="-924.33301"
x="1129">ordinal_position</text>
<text
- id="text671"
+ id="text673"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-897.33301"
+ y="-906.33301"
x="1110">data_type</text>
<polygon
- id="polygon673"
- points="1080,-892 1080,-1022 1232,-1022 1232,-892 1080,-892 "
+ id="polygon675"
+ points="1080,-901 1080,-1031 1232,-1031 1232,-901 1080,-901 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge36"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title676">main.main._routine_columns->main.main._routines</title>
+ id="title678">main.main._routine_columns->main.main._routines</title>
<path
- id="path678"
- d="M 1156,-1026 C 1156,-1058 1156,-1099 1156,-1142"
+ id="path680"
+ d="M 1156,-1035 C 1156,-1070 1156,-1114 1156,-1160"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon680"
- points="1152.5,-1142 1156,-1152 1159.5,-1142 1152.5,-1142 "
+ id="polygon682"
+ points="1152.5,-1160 1156,-1170 1159.5,-1160 1152.5,-1160 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node39"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title718">main.main._columns</title>
+ id="title720">main.main._columns</title>
<polygon
- id="polygon720"
+ id="polygon722"
points="635,-737 635,-757 827,-757 827,-737 635,-737 "
style="fill:#808080;stroke:#808080" />
<text
- id="text722"
+ id="text724"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-742.33301"
x="731">_columns</text>
<polygon
- id="polygon724"
+ id="polygon726"
points="635,-737 635,-757 827,-757 827,-737 635,-737 "
style="fill:none;stroke:#000000" />
<text
- id="text726"
+ id="text728"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-723.33301"
x="674">table_catalog</text>
<text
- id="text728"
+ id="text730"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-705.33301"
x="674.5">table_schema</text>
<text
- id="text730"
+ id="text732"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-687.33301"
x="669">table_name</text>
<text
- id="text732"
+ id="text734"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-669.33301"
x="676.5">column_name</text>
<text
- id="text734"
+ id="text736"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-651.33301"
x="683">ordinal_position</text>
<text
- id="text736"
+ id="text738"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-633.33301"
x="681">column_default</text>
<text
- id="text738"
+ id="text740"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-615.33301"
x="667.5">is_nullable</text>
<text
- id="text740"
+ id="text742"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-597.33301"
x="664">data_type</text>
<text
- id="text742"
+ id="text744"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-579.33301"
x="684">array_dimension</text>
<text
- id="text744"
+ id="text746"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-561.33301"
x="674.5">element_type</text>
<text
- id="text746"
+ id="text748"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-543.33301"
x="652.5">gtype</text>
<text
- id="text748"
+ id="text750"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-525.33301"
x="715.5">character_maximum_length</text>
<text
- id="text750"
+ id="text752"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-507.33301"
x="700.5">character_octet_length</text>
<text
- id="text752"
+ id="text754"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-489.33301"
x="689">numeric_precision</text>
<text
- id="text754"
+ id="text756"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-471.33301"
x="677">numeric_scale</text>
<text
- id="text756"
+ id="text758"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-453.33301"
x="690">datetime_precision</text>
<text
- id="text758"
+ id="text760"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-435.33301"
x="697">character_set_catalog</text>
<text
- id="text760"
+ id="text762"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-417.33301"
x="697.5">character_set_schema</text>
<text
- id="text762"
+ id="text764"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-399.33301"
x="692">character_set_name</text>
<text
- id="text764"
+ id="text766"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-381.33301"
x="685">collation_catalog</text>
<text
- id="text766"
+ id="text768"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-363.33301"
x="685.5">collation_schema</text>
<text
- id="text768"
+ id="text770"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-345.33301"
x="680">collation_name</text>
<text
- id="text770"
+ id="text772"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-327.33301"
x="651">extra</text>
<text
- id="text772"
+ id="text774"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-309.33301"
x="672">is_updatable</text>
<text
- id="text774"
+ id="text776"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-291.33301"
x="690">column_comments</text>
<polygon
- id="polygon776"
+ id="polygon778"
points="634,-286 634,-758 828,-758 828,-286 634,-286 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge38"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title779">main.main._columns->main.main._tables</title>
+ id="title781">main.main._columns->main.main._tables</title>
<path
- id="path781"
- d="M 836,-744 C 839,-750 842,-756 845,-762 C 853,-780 872,-816 890,-852"
+ id="path783"
+ d="M 836,-744 C 839,-750 842,-756 845,-762 C 852,-779 855,-782 863,-798 C 873,-818 883,-840 894,-861"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon783"
- points="887.084,-853.958 895,-861 893.203,-850.559 887.084,-853.958 "
+ id="polygon785"
+ points="890.74,-862.283 898,-870 897.137,-859.44 890.74,-862.283 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="edge"
id="edge42"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title786">main.main._columns->main.main._collations</title>
+ id="title788">main.main._columns->main.main._collations</title>
<path
- id="path788"
- d="M 639,-762 C 636,-774 633,-786 631,-798 C 607,-938 599,-979 631,-1116 C 636,-1134 642,-1136 649,-1152 C 669,-1194 691,-1240 710,-1278"
+ id="path790"
+ d="M 639,-762 C 636,-774 633,-786 631,-798 C 606,-946 597,-989 631,-1134 C 636,-1152 642,-1154 649,-1170 C 669,-1212 691,-1258 710,-1296"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon790"
- points="706.74,-1279.28 714,-1287 713.137,-1276.44 706.74,-1279.28 "
+ id="polygon792"
+ points="706.74,-1297.28 714,-1305 713.137,-1294.44 706.74,-1297.28 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="edge"
id="edge40"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title793">main.main._columns->main.main._character_sets</title>
+ id="title795">main.main._columns->main.main._character_sets</title>
<path
- id="path795"
- d="M 740,-762 C 741,-793 743,-823 744,-851"
+ id="path797"
+ d="M 740,-762 C 741,-796 742,-830 743,-860"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon797"
- points="740.5,-851 744,-861 747.5,-851 740.5,-851 "
+ id="polygon799"
+ points="739.5,-860 743,-870 746.5,-860 739.5,-860 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node43"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title800">main.main._referential_constraints</title>
+ id="title802">main.main._referential_constraints</title>
<polygon
- id="polygon802"
+ id="polygon804"
points="1043,-212 1043,-232 1231,-232 1231,-212 1043,-212 "
style="fill:#808080;stroke:#808080" />
<text
- id="text804"
+ id="text806"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-217.33299"
x="1137">_referential_constraints</text>
<polygon
- id="polygon806"
+ id="polygon808"
points="1043,-212 1043,-232 1231,-232 1231,-212 1043,-212 "
style="fill:none;stroke:#000000" />
<text
- id="text808"
+ id="text810"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-198.33299"
x="1082">table_catalog</text>
<text
- id="text810"
+ id="text812"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-180.33299"
x="1082.5">table_schema</text>
<text
- id="text812"
+ id="text814"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-162.33299"
x="1077">table_name</text>
<text
- id="text814"
+ id="text816"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-144.33299"
x="1091">constraint_name</text>
<text
- id="text816"
+ id="text818"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-126.333"
x="1093.5">ref_table_catalog</text>
<text
- id="text818"
+ id="text820"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-108.333"
x="1094">ref_table_schema</text>
<text
- id="text820"
+ id="text822"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-90.333298"
x="1088.5">ref_table_name</text>
<text
- id="text822"
+ id="text824"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-72.333298"
x="1102.5">ref_constraint_name</text>
<text
- id="text824"
+ id="text826"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-54.333302"
x="1083.5">match_option</text>
<text
- id="text826"
+ id="text828"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-36.333302"
x="1078">update_rule</text>
<text
- id="text828"
+ id="text830"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-18.3333"
x="1076">delete_rule</text>
<polygon
- id="polygon830"
+ id="polygon832"
points="1042,-13 1042,-233 1232,-233 1232,-13 1042,-13 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge44"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title833">main.main._referential_constraints->main.main._table_constraints</title>
+ id="title835">main.main._referential_constraints->main.main._table_constraints</title>
<path
- id="path835"
+ id="path837"
d="M 1067,-237 C 1058,-252 1050,-267 1043,-282 C 1023,-322 1003,-368 987,-408"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon837"
+ id="polygon839"
points="983.863,-406.44 983,-417 990.26,-409.283 983.863,-406.44 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node45"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title840">main.main._key_column_usage</title>
+ id="title842">main.main._key_column_usage</title>
<polygon
- id="polygon842"
+ id="polygon844"
points="653,-167 653,-187 809,-187 809,-167 653,-167 "
style="fill:#808080;stroke:#808080" />
<text
- id="text844"
+ id="text846"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-172.33299"
x="731">_key_column_usage</text>
<polygon
- id="polygon846"
+ id="polygon848"
points="653,-167 653,-187 809,-187 809,-167 653,-167 "
style="fill:none;stroke:#000000" />
<text
- id="text848"
+ id="text850"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-153.33299"
x="692">table_catalog</text>
<text
- id="text850"
+ id="text852"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-135.33299"
x="692.5">table_schema</text>
<text
- id="text852"
+ id="text854"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-117.333"
x="687">table_name</text>
<text
- id="text854"
+ id="text856"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-99.333298"
x="701">constraint_name</text>
<text
- id="text856"
+ id="text858"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-81.333298"
x="694.5">column_name</text>
<text
- id="text858"
+ id="text860"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-63.333302"
x="701">ordinal_position</text>
<polygon
- id="polygon860"
+ id="polygon862"
points="652,-58 652,-188 810,-188 810,-58 652,-58 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge46"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title863">main.main._key_column_usage->main.main._table_constraints</title>
+ id="title865">main.main._key_column_usage->main.main._table_constraints</title>
<path
- id="path865"
+ id="path867"
d="M 786,-192 C 806,-219 828,-251 845,-282 C 866,-322 886,-367 902,-408"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon867"
+ id="polygon869"
points="898.74,-409.283 906,-417 905.137,-406.44 898.74,-409.283 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="edge"
id="edge48"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title870">main.main._key_column_usage->main.main._columns</title>
+ id="title872">main.main._key_column_usage->main.main._columns</title>
<path
- id="path872"
+ id="path874"
d="M 731,-192 C 731,-215 731,-243 731,-272"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon874"
+ id="polygon876"
points="727.5,-272 731,-282 734.5,-272 727.5,-272 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node48"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title877">main.main._check_column_usage</title>
+ id="title879">main.main._check_column_usage</title>
<polygon
- id="polygon879"
+ id="polygon881"
points="845,-158 845,-178 1007,-178 1007,-158 845,-158 "
style="fill:#808080;stroke:#808080" />
<text
- id="text881"
+ id="text883"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-163.33299"
x="926">_check_column_usage</text>
<polygon
- id="polygon883"
+ id="polygon885"
points="845,-158 845,-178 1007,-178 1007,-158 845,-158 "
style="fill:none;stroke:#000000" />
<text
- id="text885"
+ id="text887"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-144.33299"
x="884">table_catalog</text>
<text
- id="text887"
+ id="text889"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-126.333"
x="884.5">table_schema</text>
<text
- id="text889"
+ id="text891"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-108.333"
x="879">table_name</text>
<text
- id="text891"
+ id="text893"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-90.333298"
x="893">constraint_name</text>
<text
- id="text893"
+ id="text895"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
y="-72.333298"
x="886.5">column_name</text>
<polygon
- id="polygon895"
+ id="polygon897"
points="844,-67 844,-179 1008,-179 1008,-67 844,-67 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge50"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title898">main.main._check_column_usage->main.main._table_constraints</title>
+ id="title900">main.main._check_column_usage->main.main._table_constraints</title>
<path
- id="path900"
+ id="path902"
d="M 929,-183 C 932,-242 936,-333 939,-407"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon902"
+ id="polygon904"
points="935.5,-407 939,-417 942.5,-407 935.5,-407 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="edge"
id="edge52"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title905">main.main._check_column_usage->main.main._columns</title>
+ id="title907">main.main._check_column_usage->main.main._columns</title>
<path
- id="path907"
+ id="path909"
d="M 895,-183 C 880,-213 861,-249 845,-282 C 844,-285 842,-288 841,-291"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon909"
+ id="polygon911"
points="837.797,-289.559 836,-300 843.916,-292.958 837.797,-289.559 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="node"
id="node51"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title912">main.main._view_column_usage</title>
+ id="title914">main.main._view_column_usage</title>
<polygon
- id="polygon914"
- points="468,-149 468,-169 616,-169 616,-149 468,-149 "
+ id="polygon916"
+ points="468,-176 468,-196 616,-196 616,-176 468,-176 "
style="fill:#808080;stroke:#808080" />
<text
- id="text916"
+ id="text918"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-154.33299"
+ y="-181.33299"
x="542">_view_column_usage</text>
<polygon
- id="polygon918"
- points="468,-149 468,-169 616,-169 616,-149 468,-149 "
+ id="polygon920"
+ points="468,-176 468,-196 616,-196 616,-176 468,-176 "
style="fill:none;stroke:#000000" />
<text
- id="text920"
+ id="text922"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-135.33299"
+ y="-162.33299"
x="507">view_catalog</text>
<text
- id="text922"
+ id="text924"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-117.333"
+ y="-144.33299"
x="507.5">view_schema</text>
<text
- id="text924"
+ id="text926"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-99.333298"
+ y="-126.333"
x="502">view_name</text>
<text
- id="text926"
+ id="text928"
style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
- y="-81.333298"
+ y="-108.333"
+ x="507">table_catalog</text>
+ <text
+ id="text930"
+ style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
+ y="-90.333298"
+ x="507.5">table_schema</text>
+ <text
+ id="text932"
+ style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
+ y="-72.333298"
+ x="502">table_name</text>
+ <text
+ id="text934"
+ style="font-size:14.17500019px;text-anchor:middle;font-family:Nimbus Roman No9 L"
+ y="-54.333302"
x="509.5">column_name</text>
<polygon
- id="polygon928"
- points="467,-76 467,-170 617,-170 617,-76 467,-76 "
+ id="polygon936"
+ points="467,-49 467,-197 617,-197 617,-49 467,-49 "
style="fill:none;stroke:#000000" />
</g>
<g
class="edge"
id="edge54"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title931">main.main._view_column_usage->main.main._views</title>
+ id="title939">main.main._view_column_usage->main.main._views</title>
<path
- id="path933"
- d="M 542,-174 C 542,-242 542,-363 541,-443"
+ id="path941"
+ d="M 542,-201 C 542,-272 542,-373 541,-443"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon935"
+ id="polygon943"
points="537.5,-443 541,-453 544.5,-443 537.5,-443 "
style="fill:#000000;stroke:#000000" />
</g>
<g
class="edge"
id="edge56"
- transform="matrix(1.33333,0,0,1.33333,5.33332,2381.3274)">
+ transform="matrix(1.33333,0,0,1.33333,5.33332,2405.3273)">
<title
- id="title938">main.main._view_column_usage->main.main._columns</title>
+ id="title946">main.main._view_column_usage->main.main._columns</title>
<path
- id="path940"
- d="M 566,-174 C 581,-205 600,-247 622,-291"
+ id="path948"
+ d="M 579,-201 C 592,-228 606,-259 622,-292"
style="fill:none;stroke:#000000" />
<polygon
- id="polygon942"
- points="618.74,-292.283 626,-300 625.137,-289.44 618.74,-292.283 "
+ id="polygon950"
+ points="618.74,-293.283 626,-301 625.137,-290.44 618.74,-293.283 "
style="fill:#000000;stroke:#000000" />
</g>
</svg>
Modified: trunk/libgda/information_schema.xml
==============================================================================
--- trunk/libgda/information_schema.xml (original)
+++ trunk/libgda/information_schema.xml Mon Mar 24 16:41:50 2008
@@ -239,9 +239,9 @@
<column name="routine_catalog" nullok="TRUE"/>
<column name="routine_schema" nullok="TRUE"/>
<column name="routine_name"/>
- <column name="routine_type" nullok="TRUE"/>
+ <column name="routine_type" nullok="TRUE" descr="FUNCTION, PROCEDURE, AGGREGATE"/>
<column name="return_type" nullok="TRUE"/>
- <column name="returns_set" type="boolean"/>
+ <column name="returns_set" type="boolean" descr="True if function returns a set (i.e., multiple values of the specified data type)"/>
<column name="routine_body" nullok="TRUE"/>
<column name="routine_definition" nullok="TRUE"/>
<column name="external_name" nullok="TRUE"/>
Modified: trunk/libgda/sql-parser/LemonPatch
==============================================================================
--- trunk/libgda/sql-parser/LemonPatch (original)
+++ trunk/libgda/sql-parser/LemonPatch Mon Mar 24 16:41:50 2008
@@ -1,6 +1,6 @@
---- lemon.c
+--- lemon.c.3.5.7
+++ lemon.c
-@@ -263,6 +263,8 @@
+@@ -266,6 +266,8 @@
char *vardest; /* Code for the default non-terminal destructor */
int vardestln; /* Line number for default non-term destructor code*/
char *filename; /* Name of the input file */
@@ -9,7 +9,7 @@
char *outname; /* Name of the current output file */
char *tokenprefix; /* A prefix added to token names in the .h file */
int nconflict; /* Number of parsing conflicts */
-@@ -1393,6 +1395,7 @@
+@@ -1402,6 +1404,7 @@
static int quiet = 0;
static int statistics = 0;
static int mhflag = 0;
@@ -17,7 +17,7 @@
static struct s_options options[] = {
{OPT_FLAG, "b", (char*)&basisflag, "Print only the basis in report."},
{OPT_FLAG, "c", (char*)&compress, "Don't compress the action table."},
-@@ -1402,19 +1405,21 @@
+@@ -1411,19 +1414,21 @@
{OPT_FLAG, "q", (char*)&quiet, "(Quiet) Don't print the report file."},
{OPT_FLAG, "s", (char*)&statistics,
"Print parser stats to standard output."},
@@ -41,7 +41,7 @@
exit(1);
}
memset(&lem, 0, sizeof(lem));
-@@ -1426,6 +1431,21 @@
+@@ -1435,6 +1440,21 @@
State_init();
lem.argv0 = argv[0];
lem.filename = OptArg(0);
@@ -63,7 +63,7 @@
lem.basisflag = basisflag;
Symbol_new("$");
lem.errsym = Symbol_new("error");
-@@ -2667,12 +2687,12 @@
+@@ -2677,12 +2697,12 @@
char *name;
char *cp;
@@ -78,7 +78,7 @@
cp = strrchr(name,'.');
if( cp ) *cp = 0;
strcat(name,suffix);
-@@ -3008,7 +3028,6 @@
+@@ -3023,7 +3043,6 @@
PRIVATE FILE *tplt_open(lemp)
struct lemon *lemp;
{
@@ -86,7 +86,7 @@
char buf[1000];
FILE *in;
char *tpltname;
-@@ -3022,20 +3041,20 @@
+@@ -3037,20 +3056,20 @@
}
if( access(buf,004)==0 ){
tpltname = buf;
Modified: trunk/libgda/sql-parser/delimiter.y
==============================================================================
--- trunk/libgda/sql-parser/delimiter.y (original)
+++ trunk/libgda/sql-parser/delimiter.y Mon Mar 24 16:41:50 2008
@@ -40,6 +40,7 @@
#include <libgda/sql-parser/gda-statement-struct-util.h>
#include <libgda/sql-parser/gda-statement-struct-unknown.h>
#include <libgda/sql-parser/gda-statement-struct-parts.h>
+#include <assert.h>
#ifdef GDA_DEBUG_NO
#define DEBUG(format, ...) g_print ("___" format "\n", __VA_ARGS__)
Modified: trunk/libgda/sql-parser/lemon.c
==============================================================================
--- trunk/libgda/sql-parser/lemon.c (original)
+++ trunk/libgda/sql-parser/lemon.c Mon Mar 24 16:41:50 2008
@@ -131,6 +131,7 @@
} assoc; /* Associativity if predecence is defined */
char *firstset; /* First-set for all rules of this symbol */
Boolean lambda; /* True if NT and can generate an empty string */
+ int useCnt; /* Number of times used */
char *destructor; /* Code which executes whenever this symbol is
** popped from the stack during error processing */
int destructorln; /* Line number of destructor code */
@@ -191,7 +192,9 @@
ACCEPT,
REDUCE,
ERROR,
- CONFLICT, /* Was a reduce, but part of a conflict */
+ SSCONFLICT, /* A shift/shift conflict */
+ SRCONFLICT, /* Was a reduce, but part of a conflict */
+ RRCONFLICT, /* Was a reduce, but part of a conflict */
SH_RESOLVED, /* Was a shift. Precedence resolved conflict */
RD_RESOLVED, /* Was reduce. Precedence resolved conflict */
NOT_USED /* Deleted by compression */
@@ -339,7 +342,7 @@
if( freelist==0 ){
int i;
int amt = 100;
- freelist = (struct action *)malloc( sizeof(struct action)*amt );
+ freelist = (struct action *)calloc(amt, sizeof(struct action));
if( freelist==0 ){
fprintf(stderr,"Unable to allocate memory for a new parser action.");
exit(1);
@@ -362,8 +365,10 @@
){
int rc;
rc = ap1->sp->index - ap2->sp->index;
- if( rc==0 ) rc = (int)ap1->type - (int)ap2->type;
if( rc==0 ){
+ rc = (int)ap1->type - (int)ap2->type;
+ }
+ if( rc==0 && ap1->type==REDUCE ){
rc = ap1->x.rp->index - ap2->x.rp->index;
}
return rc;
@@ -439,7 +444,7 @@
/* Allocate a new acttab structure */
acttab *acttab_alloc(void){
- acttab *p = malloc( sizeof(*p) );
+ acttab *p = calloc( 1, sizeof(*p) );
if( p==0 ){
fprintf(stderr,"Unable to allocate memory for a new acttab.");
exit(1);
@@ -1012,7 +1017,7 @@
int errcnt = 0;
assert( apx->sp==apy->sp ); /* Otherwise there would be no conflict */
if( apx->type==SHIFT && apy->type==SHIFT ){
- apy->type = CONFLICT;
+ apy->type = SSCONFLICT;
errcnt++;
}
if( apx->type==SHIFT && apy->type==REDUCE ){
@@ -1020,7 +1025,7 @@
spy = apy->x.rp->precsym;
if( spy==0 || spx->prec<0 || spy->prec<0 ){
/* Not enough precedence information. */
- apy->type = CONFLICT;
+ apy->type = SRCONFLICT;
errcnt++;
}else if( spx->prec>spy->prec ){ /* Lower precedence wins */
apy->type = RD_RESOLVED;
@@ -1032,7 +1037,7 @@
apx->type = SH_RESOLVED;
}else{
assert( spx->prec==spy->prec && spx->assoc==NONE );
- apy->type = CONFLICT;
+ apy->type = SRCONFLICT;
errcnt++;
}
}else if( apx->type==REDUCE && apy->type==REDUCE ){
@@ -1040,7 +1045,7 @@
spy = apy->x.rp->precsym;
if( spx==0 || spy==0 || spx->prec<0 ||
spy->prec<0 || spx->prec==spy->prec ){
- apy->type = CONFLICT;
+ apy->type = RRCONFLICT;
errcnt++;
}else if( spx->prec>spy->prec ){
apy->type = RD_RESOLVED;
@@ -1051,10 +1056,14 @@
assert(
apx->type==SH_RESOLVED ||
apx->type==RD_RESOLVED ||
- apx->type==CONFLICT ||
+ apx->type==SSCONFLICT ||
+ apx->type==SRCONFLICT ||
+ apx->type==RRCONFLICT ||
apy->type==SH_RESOLVED ||
apy->type==RD_RESOLVED ||
- apy->type==CONFLICT
+ apy->type==SSCONFLICT ||
+ apy->type==SRCONFLICT ||
+ apy->type==RRCONFLICT
);
/* The REDUCE/SHIFT case cannot happen because SHIFTs come before
** REDUCEs on the list. If we reach this point it must be because
@@ -1080,7 +1089,7 @@
if( freelist==0 ){
int i;
int amt = 3;
- freelist = (struct config *)malloc( sizeof(struct config)*amt );
+ freelist = (struct config *)calloc( amt, sizeof(struct config) );
if( freelist==0 ){
fprintf(stderr,"Unable to allocate memory for a new configuration.");
exit(1);
@@ -1449,6 +1458,7 @@
lem.basisflag = basisflag;
Symbol_new("$");
lem.errsym = Symbol_new("error");
+ lem.errsym->useCnt = 0;
/* Parse the input file */
Parse(&lem);
@@ -1474,7 +1484,7 @@
Reprint(&lem);
}else{
/* Initialize the size for all follow and first sets */
- SetSize(lem.nterminal);
+ SetSize(lem.nterminal+1);
/* Find the precedence for every production rule (that has one) */
FindRulePrecedences(&lem);
@@ -2111,8 +2121,8 @@
case IN_RHS:
if( x[0]=='.' ){
struct rule *rp;
- rp = (struct rule *)malloc( sizeof(struct rule) +
- sizeof(struct symbol*)*psp->nrhs + sizeof(char*)*psp->nrhs );
+ rp = (struct rule *)calloc( sizeof(struct rule) +
+ sizeof(struct symbol*)*psp->nrhs + sizeof(char*)*psp->nrhs, 1);
if( rp==0 ){
ErrorMsg(psp->filename,psp->tokenlineno,
"Can't allocate enough memory for this rule.");
@@ -2148,7 +2158,7 @@
}else if( isalpha(x[0]) ){
if( psp->nrhs>=MAXRHS ){
ErrorMsg(psp->filename,psp->tokenlineno,
- "Too many symbols on RHS or rule beginning at \"%s\".",
+ "Too many symbols on RHS of rule beginning at \"%s\".",
x);
psp->errorcnt++;
psp->state = RESYNC_AFTER_RULE_ERROR;
@@ -2161,11 +2171,11 @@
struct symbol *msp = psp->rhs[psp->nrhs-1];
if( msp->type!=MULTITERMINAL ){
struct symbol *origsp = msp;
- msp = malloc(sizeof(*msp));
+ msp = calloc(1,sizeof(*msp));
memset(msp, 0, sizeof(*msp));
msp->type = MULTITERMINAL;
msp->nsubsym = 1;
- msp->subsym = malloc(sizeof(struct symbol*));
+ msp->subsym = calloc(1,sizeof(struct symbol*));
msp->subsym[0] = origsp;
msp->name = origsp->name;
psp->rhs[psp->nrhs-1] = msp;
@@ -2618,7 +2628,7 @@
if( plink_freelist==0 ){
int i;
int amt = 100;
- plink_freelist = (struct plink *)malloc( sizeof(struct plink)*amt );
+ plink_freelist = (struct plink *)calloc( amt, sizeof(struct plink) );
if( plink_freelist==0 ){
fprintf(stderr,
"Unable to allocate memory for a new follow-set propagation link.\n");
@@ -2844,10 +2854,15 @@
case ERROR:
fprintf(fp,"%*s error",indent,ap->sp->name);
break;
- case CONFLICT:
+ case SRCONFLICT:
+ case RRCONFLICT:
fprintf(fp,"%*s reduce %-3d ** Parsing conflict **",
indent,ap->sp->name,ap->x.rp->index);
break;
+ case SSCONFLICT:
+ fprintf(fp,"%*s shift %d ** Parsing conflict **",
+ indent,ap->sp->name,ap->x.stp->statenum);
+ break;
case SH_RESOLVED:
case RD_RESOLVED:
case NOT_USED:
@@ -3355,7 +3370,7 @@
/* Allocate and initialize types[] and allocate stddt[] */
arraysize = lemp->nsymbol * 2;
- types = (char**)malloc( arraysize * sizeof(char*) );
+ types = (char**)calloc( arraysize, sizeof(char*) );
for(i=0; i<arraysize; i++) types[i] = 0;
maxdtlength = 0;
if( lemp->vartype ){
@@ -3436,7 +3451,9 @@
fprintf(out," %s yy%d;\n",types[i],i+1); lineno++;
free(types[i]);
}
- fprintf(out," int yy%d;\n",lemp->errsym->dtnum); lineno++;
+ if( lemp->errsym->useCnt ){
+ fprintf(out," int yy%d;\n",lemp->errsym->dtnum); lineno++;
+ }
free(stddt);
free(types);
fprintf(out,"} YYMINORTYPE;\n"); lineno++;
@@ -3486,6 +3503,25 @@
return p2->nAction - p1->nAction;
}
+/*
+** Write text on "out" that describes the rule "rp".
+*/
+static void writeRuleText(FILE *out, struct rule *rp){
+ int j;
+ fprintf(out,"%s ::=", rp->lhs->name);
+ for(j=0; j<rp->nrhs; j++){
+ struct symbol *sp = rp->rhs[j];
+ fprintf(out," %s", sp->name);
+ if( sp->type==MULTITERMINAL ){
+ int k;
+ for(k=1; k<sp->nsubsym; k++){
+ fprintf(out,"|%s",sp->subsym[k]->name);
+ }
+ }
+ }
+}
+
+
/* Generate C source code for the parser */
void ReportTable(lemp, mhflag)
struct lemon *lemp;
@@ -3581,8 +3617,10 @@
}
fprintf(out,"#define YYNSTATE %d\n",lemp->nstate); lineno++;
fprintf(out,"#define YYNRULE %d\n",lemp->nrule); lineno++;
- fprintf(out,"#define YYERRORSYMBOL %d\n",lemp->errsym->index); lineno++;
- fprintf(out,"#define YYERRSYMDT yy%d\n",lemp->errsym->dtnum); lineno++;
+ if( lemp->errsym->useCnt ){
+ fprintf(out,"#define YYERRORSYMBOL %d\n",lemp->errsym->index); lineno++;
+ fprintf(out,"#define YYERRSYMDT yy%d\n",lemp->errsym->dtnum); lineno++;
+ }
if( lemp->has_fallback ){
fprintf(out,"#define YYFALLBACK 1\n"); lineno++;
}
@@ -3601,7 +3639,7 @@
*/
/* Compute the actions on all states and count them up */
- ax = malloc( sizeof(ax[0])*lemp->nstate*2 );
+ ax = calloc(lemp->nstate*2, sizeof(ax[0]));
if( ax==0 ){
fprintf(stderr,"malloc failed\n");
exit(1);
@@ -3781,17 +3819,8 @@
*/
for(i=0, rp=lemp->rule; rp; rp=rp->next, i++){
assert( rp->index==i );
- fprintf(out," /* %3d */ \"%s ::=", i, rp->lhs->name);
- for(j=0; j<rp->nrhs; j++){
- struct symbol *sp = rp->rhs[j];
- fprintf(out," %s", sp->name);
- if( sp->type==MULTITERMINAL ){
- int k;
- for(k=1; k<sp->nsubsym; k++){
- fprintf(out,"|%s",sp->subsym[k]->name);
- }
- }
- }
+ fprintf(out," /* %3d */ \"", i);
+ writeRuleText(out, rp);
fprintf(out,"\",\n"); lineno++;
}
tplt_xfer(lemp->name,in,out,&lineno);
@@ -3804,7 +3833,8 @@
for(i=0; i<lemp->nsymbol; i++){
struct symbol *sp = lemp->symbols[i];
if( sp==0 || sp->type!=TERMINAL ) continue;
- fprintf(out," case %d:\n",sp->index); lineno++;
+ fprintf(out," case %d: /* %s */\n",
+ sp->index, sp->name); lineno++;
}
for(i=0; i<lemp->nsymbol && lemp->symbols[i]->type!=TERMINAL; i++);
if( i<lemp->nsymbol ){
@@ -3818,7 +3848,8 @@
struct symbol *sp = lemp->symbols[i];
if( sp==0 || sp->type==TERMINAL ||
sp->index<=0 || sp->destructor!=0 ) continue;
- fprintf(out," case %d:\n",sp->index); lineno++;
+ fprintf(out," case %d: /* %s */\n",
+ sp->index, sp->name); lineno++;
dflt_sp = sp;
}
if( dflt_sp!=0 ){
@@ -3829,7 +3860,8 @@
for(i=0; i<lemp->nsymbol; i++){
struct symbol *sp = lemp->symbols[i];
if( sp==0 || sp->type==TERMINAL || sp->destructor==0 ) continue;
- fprintf(out," case %d:\n",sp->index); lineno++;
+ fprintf(out," case %d: /* %s */\n",
+ sp->index, sp->name); lineno++;
/* Combine duplicate destructors into a single case */
for(j=i+1; j<lemp->nsymbol; j++){
@@ -3837,7 +3869,8 @@
if( sp2 && sp2->type!=TERMINAL && sp2->destructor
&& sp2->dtnum==sp->dtnum
&& strcmp(sp->destructor,sp2->destructor)==0 ){
- fprintf(out," case %d:\n",sp2->index); lineno++;
+ fprintf(out," case %d: /* %s */\n",
+ sp2->index, sp2->name); lineno++;
sp2->destructor = 0;
}
}
@@ -3868,10 +3901,14 @@
for(rp=lemp->rule; rp; rp=rp->next){
struct rule *rp2;
if( rp->code==0 ) continue;
- fprintf(out," case %d:\n",rp->index); lineno++;
+ fprintf(out," case %d: /* ", rp->index);
+ writeRuleText(out, rp);
+ fprintf(out, " */\n"); lineno++;
for(rp2=rp->next; rp2; rp2=rp2->next){
if( rp2->code==rp->code ){
- fprintf(out," case %d:\n",rp2->index); lineno++;
+ fprintf(out," case %d: /* ", rp2->index);
+ writeRuleText(out, rp2);
+ fprintf(out," */\n"); lineno++;
rp2->code = 0;
}
}
@@ -4072,13 +4109,11 @@
/* Allocate a new set */
char *SetNew(){
char *s;
- int i;
- s = (char*)malloc( size );
+ s = (char*)calloc( size, 1);
if( s==0 ){
extern void memory_error();
memory_error();
}
- for(i=0; i<size; i++) s[i] = 0;
return s;
}
@@ -4096,6 +4131,7 @@
int e;
{
int rv;
+ assert( e>=0 && e<size );
rv = s[e];
s[e] = 1;
return !rv;
@@ -4285,7 +4321,7 @@
sp = Symbol_find(x);
if( sp==0 ){
- sp = (struct symbol *)malloc( sizeof(struct symbol) );
+ sp = (struct symbol *)calloc(1, sizeof(struct symbol) );
MemoryCheck(sp);
sp->name = Strsafe(x);
sp->type = isupper(*x) ? TERMINAL : NONTERMINAL;
@@ -4297,8 +4333,10 @@
sp->lambda = LEMON_FALSE;
sp->destructor = 0;
sp->datatype = 0;
+ sp->useCnt = 0;
Symbol_insert(sp,sp->name);
}
+ sp->useCnt++;
return sp;
}
@@ -4468,7 +4506,7 @@
int i,size;
if( x2a==0 ) return 0;
size = x2a->count;
- array = (struct symbol **)malloc( sizeof(struct symbol *)*size );
+ array = (struct symbol **)calloc(size, sizeof(struct symbol *));
if( array ){
for(i=0; i<size; i++) array[i] = x2a->tbl[i].data;
}
@@ -4519,7 +4557,7 @@
struct state *State_new()
{
struct state *new;
- new = (struct state *)malloc( sizeof(struct state) );
+ new = (struct state *)calloc(1, sizeof(struct state) );
MemoryCheck(new);
return new;
}
Modified: trunk/libgda/sql-parser/lempar.c
==============================================================================
--- trunk/libgda/sql-parser/lempar.c (original)
+++ trunk/libgda/sql-parser/lempar.c Mon Mar 24 16:41:50 2008
@@ -349,9 +349,7 @@
if( stateno>YY_SHIFT_MAX || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){
return yy_default[stateno];
}
- if( iLookAhead==YYNOCODE ){
- return YY_NO_ACTION;
- }
+ assert( iLookAhead!=YYNOCODE );
i += iLookAhead;
if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
if( iLookAhead>0 ){
@@ -402,21 +400,14 @@
YYCODETYPE iLookAhead /* The look-ahead token */
){
int i;
- /* int stateno = pParser->yystack[pParser->yyidx].stateno; */
-
- if( stateno>YY_REDUCE_MAX ||
- (i = yy_reduce_ofst[stateno])==YY_REDUCE_USE_DFLT ){
- return yy_default[stateno];
- }
- if( iLookAhead==YYNOCODE ){
- return YY_NO_ACTION;
- }
+ assert( stateno<=YY_REDUCE_MAX );
+ i = yy_reduce_ofst[stateno];
+ assert( i!=YY_REDUCE_USE_DFLT );
+ assert( iLookAhead!=YYNOCODE );
i += iLookAhead;
- if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
- return yy_default[stateno];
- }else{
- return yy_action[i];
- }
+ assert( i>=0 && i<YY_SZ_ACTTAB );
+ assert( yy_lookahead[i]==iLookAhead );
+ return yy_action[i];
}
/*
@@ -562,7 +553,8 @@
{
yy_shift(yypParser,yyact,yygoto,&yygotominor);
}
- }else if( yyact == YYNSTATE + YYNRULE + 1 ){
+ }else{
+ assert( yyact == YYNSTATE + YYNRULE + 1 );
yy_accept(yypParser);
}
}
@@ -647,7 +639,9 @@
YYMINORTYPE yyminorunion;
int yyact; /* The parser action. */
int yyendofinput; /* True if we are at the end of input */
+#ifdef YYERRORSYMBOL
int yyerrorhit = 0; /* True if yymajor has invoked an error */
+#endif
yyParser *yypParser; /* The parser */
/* (re)initialize the parser, if necessary */
@@ -678,17 +672,17 @@
do{
yyact = yy_find_shift_action(yypParser,yymajor);
if( yyact<YYNSTATE ){
+ assert( !yyendofinput ); /* Impossible to shift the $ token */
yy_shift(yypParser,yyact,yymajor,&yyminorunion);
yypParser->yyerrcnt--;
- if( yyendofinput && yypParser->yyidx>=0 ){
- yymajor = 0;
- }else{
- yymajor = YYNOCODE;
- }
+ yymajor = YYNOCODE;
}else if( yyact < YYNSTATE + YYNRULE ){
yy_reduce(yypParser,yyact-YYNSTATE);
- }else if( yyact == YY_ERROR_ACTION ){
+ }else{
+ assert( yyact == YY_ERROR_ACTION );
+#ifdef YYERRORSYMBOL
int yymx;
+#endif
#ifndef NDEBUG
if( yyTraceFILE ){
fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
@@ -769,9 +763,6 @@
}
yymajor = YYNOCODE;
#endif
- }else{
- yy_accept(yypParser);
- yymajor = YYNOCODE;
}
}while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
return;
Modified: trunk/libgda/sql-parser/parser.y
==============================================================================
--- trunk/libgda/sql-parser/parser.y (original)
+++ trunk/libgda/sql-parser/parser.y Mon Mar 24 16:41:50 2008
@@ -45,6 +45,7 @@
#include <libgda/sql-parser/gda-statement-struct-select.h>
#include <libgda/sql-parser/gda-statement-struct-compound.h>
#include <libgda/sql-parser/gda-statement-struct-parts.h>
+#include <assert.h>
#ifdef GDA_DEBUG_NO
#define DEBUG(format, ...) g_print ("___" format "\n", __VA_ARGS__)
Modified: trunk/libgda/sqlite/gda-sqlite-meta.c
==============================================================================
--- trunk/libgda/sqlite/gda-sqlite-meta.c (original)
+++ trunk/libgda/sqlite/gda-sqlite-meta.c Mon Mar 24 16:41:50 2008
@@ -66,6 +66,10 @@
/* I_PRAGMA_FK_LIST */
"PRAGMA foreign_key_list (##tblname::string)"
};
+/* name of the temporary database we don't want */
+#define TMP_DATABASE_NAME "temp"
+/* SQL statement where we can't use a prepared statement since the table to select from is the variable */
+#define SELECT_TABLES_VIEWS "SELECT tbl_name, type, sql FROM %s.sqlite_master where type='table' OR type='view'"
/*
* predefined statements' GdaStatement
@@ -299,8 +303,8 @@
_gda_sqlite_meta__collations (GdaServerProvider *prov, GdaConnection *cnc,
GdaMetaStore *store, GdaMetaContext *context, GError **error)
{
- /* How to do it ? Is it a static list ? */
- TO_IMPLEMENT;
+ /* FIXME: We need to do something similar to what's done with
+ * functions and aggregates as there is no pragma or API */
return TRUE;
}
@@ -310,8 +314,8 @@
const GValue *collation_catalog, const GValue *collation_schema,
const GValue *collation_name_n)
{
- /* How to do it ? Is it a static list ? */
- TO_IMPLEMENT;
+ /* FIXME: We need to do something similar to what's done with
+ * functions and aggregates as there is no pragma or API */
return TRUE;
}
@@ -319,8 +323,8 @@
_gda_sqlite_meta__character_sets (GdaServerProvider *prov, GdaConnection *cnc,
GdaMetaStore *store, GdaMetaContext *context, GError **error)
{
- /* How to do it ? Is it a static list ? */
- TO_IMPLEMENT;
+ /* FIXME: We need to do something similar to what's done with
+ * functions and aggregates as there is no pragma or API */
return TRUE;
}
@@ -330,8 +334,8 @@
const GValue *chset_catalog, const GValue *chset_schema,
const GValue *chset_name_n)
{
- /* How to do it ? Is it a static list ? */
- TO_IMPLEMENT;
+ /* FIXME: We need to do something similar to what's done with
+ * functions and aggregates as there is no pragma or API */
return TRUE;
}
@@ -339,9 +343,8 @@
_gda_sqlite_meta__schemata (GdaServerProvider *prov, GdaConnection *cnc,
GdaMetaStore *store, GdaMetaContext *context, GError **error)
{
- /* use same technique as _gda_sqlite_meta_schemata, in a common function */
- TO_IMPLEMENT;
- return TRUE;
+ return _gda_sqlite_meta_schemata (prov, cnc, store, context, error,
+ NULL, NULL);
}
gboolean
@@ -371,7 +374,7 @@
GValue *v1;
cstr = g_value_get_string (cvalue);
- if (!cstr || !strncmp (cstr, "temp", 4))
+ if (!cstr || !strncmp (cstr, TMP_DATABASE_NAME, 4))
continue;
g_value_set_boolean ((v1 = gda_value_new (G_TYPE_BOOLEAN)), FALSE);
@@ -411,11 +414,10 @@
const gchar *schema_name;
schema_name = g_value_get_string (p_table_schema);
- if (!strcmp (schema_name, "temp"))
+ if (!strcmp (schema_name, TMP_DATABASE_NAME))
return TRUE; /* nothing to do */
- str = g_strdup_printf ("SELECT tbl_name, type, sql FROM %s.sqlite_master where type='table' OR type='view'",
- schema_name);
+ str = g_strdup_printf (SELECT_TABLES_VIEWS, schema_name);
stmt = gda_sql_parser_parse_string (internal_parser, str, NULL, NULL);
g_free (str);
g_assert (stmt);
@@ -483,8 +485,50 @@
_gda_sqlite_meta__tables_views (GdaServerProvider *prov, GdaConnection *cnc,
GdaMetaStore *store, GdaMetaContext *context, GError **error)
{
- TO_IMPLEMENT;
- return TRUE;
+ GdaDataModel *tmpmodel;
+ GdaDataModel *tables_model, *views_model;
+ gboolean retval = TRUE;
+ gint i, nrows;
+
+ tmpmodel = (GdaDataModel *) gda_connection_statement_execute (cnc, internal_stmt[I_PRAGMA_DATABASE_LIST],
+ NULL, GDA_STATEMENT_MODEL_RANDOM_ACCESS, NULL, error);
+ if (!tmpmodel)
+ return FALSE;
+
+ tables_model = gda_meta_store_create_modify_data_model (store, "_tables");
+ g_assert (tables_model);
+ views_model = gda_meta_store_create_modify_data_model (store, "_views");
+ g_assert (views_model);
+
+ nrows = gda_data_model_get_n_rows (tmpmodel);
+ for (i = 0; i < nrows; i++) {
+ /* iterate through the schemas */
+ const GValue *cvalue = gda_data_model_get_value_at (tmpmodel, 1, i);
+ if (!strcmp (g_value_get_string (cvalue), TMP_DATABASE_NAME))
+ continue; /* nothing to do */
+
+ if (! fill_tables_views_model (cnc, tables_model, views_model,
+ cvalue, NULL, error)) {
+ retval = FALSE;
+ break;
+ }
+ }
+
+ GdaMetaContext c2;
+ c2 = *context; /* copy contents, just because we need to modify @context->table_name */
+ if (retval) {
+ c2.table_name = "_tables";
+ retval = gda_meta_store_modify_with_context (store, &c2, tables_model, error);
+ }
+ if (retval) {
+ c2.table_name = "_views";
+ retval = gda_meta_store_modify_with_context (store, &c2, views_model, error);
+ }
+ g_object_unref (tables_model);
+ g_object_unref (views_model);
+
+ g_object_unref (tmpmodel);
+ return retval;
}
gboolean
@@ -639,8 +683,73 @@
_gda_sqlite_meta__columns (GdaServerProvider *prov, GdaConnection *cnc,
GdaMetaStore *store, GdaMetaContext *context, GError **error)
{
- TO_IMPLEMENT;
- return TRUE;
+ GdaDataModel *mod_model, *tmpmodel;
+ gboolean retval = TRUE;
+ gint i, nrows;
+ SqliteConnectionData *cdata;
+
+ cdata = (SqliteConnectionData*) gda_connection_internal_get_provider_data (cnc);
+ if (!cdata)
+ return FALSE;
+
+ tmpmodel = (GdaDataModel *) gda_connection_statement_execute (cnc, internal_stmt[I_PRAGMA_DATABASE_LIST],
+ NULL, GDA_STATEMENT_MODEL_RANDOM_ACCESS, NULL, error);
+ if (!tmpmodel)
+ return FALSE;
+
+ mod_model = gda_meta_store_create_modify_data_model (store, context->table_name);
+ g_assert (mod_model);
+
+ nrows = gda_data_model_get_n_rows (tmpmodel);
+ for (i = 0; i < nrows; i++) {
+ /* iterate through the schemas */
+ GdaDataModel *tables_model;
+ const gchar *schema_name;
+ const GValue *cvalue = gda_data_model_get_value_at (tmpmodel, 1, i);
+
+ schema_name = g_value_get_string (cvalue);
+ if (!strcmp (schema_name, TMP_DATABASE_NAME))
+ continue; /* nothing to do */
+
+ gchar *str;
+ GType col_types[] = {G_TYPE_STRING, G_TYPE_STRING, G_TYPE_NONE};
+ GdaStatement *stmt;
+
+ str = g_strdup_printf (SELECT_TABLES_VIEWS, schema_name);
+ stmt = gda_sql_parser_parse_string (internal_parser, str, NULL, NULL);
+ g_free (str);
+ g_assert (stmt);
+ tables_model = gda_connection_statement_execute_select_full (cnc, stmt, NULL,
+ GDA_STATEMENT_MODEL_RANDOM_ACCESS,
+ col_types, error);
+ g_object_unref (stmt);
+ if (!tables_model) {
+ retval = FALSE;
+ break;
+ }
+
+ gint tnrows, ti;
+ tnrows = gda_data_model_get_n_rows (tables_model);
+ for (ti = 0; ti < tnrows; ti++) {
+ /* iterate through the tables */
+ if (!fill_columns_model (cnc, cdata, mod_model, cvalue,
+ gda_data_model_get_value_at (tables_model, 0, ti),
+ error)) {
+ retval = FALSE;
+ break;
+ }
+ }
+ g_object_unref (tables_model);
+ if (!retval)
+ break;
+ }
+ g_object_unref (tmpmodel);
+
+ if (retval)
+ retval = gda_meta_store_modify_with_context (store, context, mod_model, error);
+ g_object_unref (mod_model);
+
+ return retval;
}
gboolean
@@ -883,8 +992,73 @@
_gda_sqlite_meta__constraints_tab (GdaServerProvider *prov, GdaConnection *cnc,
GdaMetaStore *store, GdaMetaContext *context, GError **error)
{
- TO_IMPLEMENT;
- return TRUE;
+ GdaDataModel *mod_model, *tmpmodel;
+ gboolean retval = TRUE;
+ gint i, nrows;
+ SqliteConnectionData *cdata;
+
+ cdata = (SqliteConnectionData*) gda_connection_internal_get_provider_data (cnc);
+ if (!cdata)
+ return FALSE;
+
+ tmpmodel = (GdaDataModel *) gda_connection_statement_execute (cnc, internal_stmt[I_PRAGMA_DATABASE_LIST],
+ NULL, GDA_STATEMENT_MODEL_RANDOM_ACCESS, NULL, error);
+ if (!tmpmodel)
+ return FALSE;
+
+ mod_model = gda_meta_store_create_modify_data_model (store, context->table_name);
+ g_assert (mod_model);
+
+ nrows = gda_data_model_get_n_rows (tmpmodel);
+ for (i = 0; i < nrows; i++) {
+ /* iterate through the schemas */
+ GdaDataModel *tables_model;
+ const gchar *schema_name;
+ const GValue *cvalue = gda_data_model_get_value_at (tmpmodel, 1, i);
+
+ schema_name = g_value_get_string (cvalue);
+ if (!strcmp (schema_name, TMP_DATABASE_NAME))
+ continue; /* nothing to do */
+
+ gchar *str;
+ GType col_types[] = {G_TYPE_STRING, G_TYPE_STRING, G_TYPE_NONE};
+ GdaStatement *stmt;
+
+ str = g_strdup_printf (SELECT_TABLES_VIEWS, schema_name);
+ stmt = gda_sql_parser_parse_string (internal_parser, str, NULL, NULL);
+ g_free (str);
+ g_assert (stmt);
+ tables_model = gda_connection_statement_execute_select_full (cnc, stmt, NULL,
+ GDA_STATEMENT_MODEL_RANDOM_ACCESS,
+ col_types, error);
+ g_object_unref (stmt);
+ if (!tables_model) {
+ retval = FALSE;
+ break;
+ }
+
+ gint tnrows, ti;
+ tnrows = gda_data_model_get_n_rows (tables_model);
+ for (ti = 0; ti < tnrows; ti++) {
+ /* iterate through the tables */
+ if (!fill_constraints_tab_model (cnc, cdata, mod_model, cvalue,
+ gda_data_model_get_value_at (tables_model, 0, ti),
+ NULL, error)) {
+ retval = FALSE;
+ break;
+ }
+ }
+ g_object_unref (tables_model);
+ if (!retval)
+ break;
+ }
+ g_object_unref (tmpmodel);
+
+ if (retval)
+ retval = gda_meta_store_modify_with_context (store, context, mod_model, error);
+ g_object_unref (mod_model);
+
+ return retval;
}
gboolean
@@ -914,8 +1088,8 @@
static gboolean
fill_constraints_ref_model (GdaConnection *cnc, SqliteConnectionData *cdata, GdaDataModel *mod_model,
- const GValue *p_table_schema, const GValue *p_table_name, const GValue *constraint_name,
- GError **error)
+ const GValue *p_table_schema, const GValue *p_table_name,
+ const GValue *constraint_name_n, GError **error)
{
GdaDataModel *tmpmodel;
gboolean retval = TRUE;
@@ -951,12 +1125,12 @@
cvalue = gda_data_model_get_value_at (tmpmodel, 2, i);
if (! ref_table || strcmp (ref_table, g_value_get_string (cvalue))) {
gchar *constname;
- GValue *v2, *v3, *v4;
+ GValue *v2, *v3, *v4, *v5;
g_free (ref_table);
ref_table = g_strdup (g_value_get_string (cvalue));
constname = g_strdup_printf ("fk_%s", ref_table);
- if (strcmp (g_value_get_string (constraint_name), constname)) {
+ if (constraint_name_n && strcmp (g_value_get_string (constraint_name_n), constname)) {
g_free (constname);
continue;
}
@@ -964,12 +1138,15 @@
g_value_set_string ((v2 = gda_value_new (G_TYPE_STRING)), "FOREIGN KEY");
g_value_set_string ((v3 = gda_value_new (G_TYPE_STRING)), ref_table);
g_value_set_string ((v4 = gda_value_new (G_TYPE_STRING)), "primary_key");
-
+ if (!constraint_name_n)
+ g_value_take_string ((v5 = gda_value_new (G_TYPE_STRING)), constname);
+
if (! append_a_row (mod_model, error, 11,
FALSE, catalog_value, /* table_catalog */
FALSE, p_table_schema, /* table_schema */
FALSE, p_table_name, /* table_name */
- FALSE, constraint_name, /* constraint_name */
+ constraint_name_n ? FALSE: TRUE,
+ constraint_name_n ? constraint_name_n : v5, /* constraint_name */
FALSE, catalog_value, /* ref_table_catalog */
FALSE, p_table_schema, /* ref_table_schema */
TRUE, v3, /* ref_table_name */
@@ -978,6 +1155,8 @@
FALSE, rule_value, /* update_rule */
FALSE, rule_value /* delete_rule */))
retval = FALSE;
+ if (constraint_name_n)
+ g_free (constname);
}
}
g_free (ref_table);
@@ -990,8 +1169,73 @@
_gda_sqlite_meta__constraints_ref (GdaServerProvider *prov, GdaConnection *cnc,
GdaMetaStore *store, GdaMetaContext *context, GError **error)
{
- TO_IMPLEMENT;
- return TRUE;
+ GdaDataModel *mod_model, *tmpmodel;
+ gboolean retval = TRUE;
+ gint i, nrows;
+ SqliteConnectionData *cdata;
+
+ cdata = (SqliteConnectionData*) gda_connection_internal_get_provider_data (cnc);
+ if (!cdata)
+ return FALSE;
+
+ tmpmodel = (GdaDataModel *) gda_connection_statement_execute (cnc, internal_stmt[I_PRAGMA_DATABASE_LIST],
+ NULL, GDA_STATEMENT_MODEL_RANDOM_ACCESS, NULL, error);
+ if (!tmpmodel)
+ return FALSE;
+
+ mod_model = gda_meta_store_create_modify_data_model (store, context->table_name);
+ g_assert (mod_model);
+
+ nrows = gda_data_model_get_n_rows (tmpmodel);
+ for (i = 0; i < nrows; i++) {
+ /* iterate through the schemas */
+ GdaDataModel *tables_model;
+ const gchar *schema_name;
+ const GValue *cvalue = gda_data_model_get_value_at (tmpmodel, 1, i);
+
+ schema_name = g_value_get_string (cvalue);
+ if (!strcmp (schema_name, TMP_DATABASE_NAME))
+ continue; /* nothing to do */
+
+ gchar *str;
+ GType col_types[] = {G_TYPE_STRING, G_TYPE_STRING, G_TYPE_NONE};
+ GdaStatement *stmt;
+
+ str = g_strdup_printf (SELECT_TABLES_VIEWS, schema_name);
+ stmt = gda_sql_parser_parse_string (internal_parser, str, NULL, NULL);
+ g_free (str);
+ g_assert (stmt);
+ tables_model = gda_connection_statement_execute_select_full (cnc, stmt, NULL,
+ GDA_STATEMENT_MODEL_RANDOM_ACCESS,
+ col_types, error);
+ g_object_unref (stmt);
+ if (!tables_model) {
+ retval = FALSE;
+ break;
+ }
+
+ gint tnrows, ti;
+ tnrows = gda_data_model_get_n_rows (tables_model);
+ for (ti = 0; ti < tnrows; ti++) {
+ /* iterate through the tables */
+ if (!fill_constraints_ref_model (cnc, cdata, mod_model, cvalue,
+ gda_data_model_get_value_at (tables_model, 0, ti),
+ NULL, error)) {
+ retval = FALSE;
+ break;
+ }
+ }
+ g_object_unref (tables_model);
+ if (!retval)
+ break;
+ }
+ g_object_unref (tmpmodel);
+
+ if (retval)
+ retval = gda_meta_store_modify_with_context (store, context, mod_model, error);
+ g_object_unref (mod_model);
+
+ return retval;
}
gboolean
@@ -1184,8 +1428,99 @@
_gda_sqlite_meta__key_columns (GdaServerProvider *prov, GdaConnection *cnc,
GdaMetaStore *store, GdaMetaContext *context, GError **error)
{
- TO_IMPLEMENT;
- return TRUE;
+ /* iterate through the tables, and each time call fill_constraints_tab_model()
+ * to get the list of table constraints.
+ * Then iterate through that data model and call fill_key_columns_model()
+ * for each row */
+
+ GdaDataModel *const_model, *tmpmodel;
+ gboolean retval = TRUE;
+ gint i, nrows;
+ SqliteConnectionData *cdata;
+
+ cdata = (SqliteConnectionData*) gda_connection_internal_get_provider_data (cnc);
+ if (!cdata)
+ return FALSE;
+
+ tmpmodel = (GdaDataModel *) gda_connection_statement_execute (cnc, internal_stmt[I_PRAGMA_DATABASE_LIST],
+ NULL, GDA_STATEMENT_MODEL_RANDOM_ACCESS, NULL, error);
+ if (!tmpmodel)
+ return FALSE;
+
+ const_model = gda_meta_store_create_modify_data_model (store, "_table_constraints");
+ g_assert (const_model);
+
+ nrows = gda_data_model_get_n_rows (tmpmodel);
+ for (i = 0; i < nrows; i++) {
+ /* iterate through the schemas */
+ GdaDataModel *tables_model;
+ const gchar *schema_name;
+ const GValue *cvalue = gda_data_model_get_value_at (tmpmodel, 1, i);
+
+ schema_name = g_value_get_string (cvalue);
+ if (!strcmp (schema_name, TMP_DATABASE_NAME))
+ continue; /* nothing to do */
+
+ gchar *str;
+ GType col_types[] = {G_TYPE_STRING, G_TYPE_STRING, G_TYPE_NONE};
+ GdaStatement *stmt;
+
+ str = g_strdup_printf (SELECT_TABLES_VIEWS, schema_name);
+ stmt = gda_sql_parser_parse_string (internal_parser, str, NULL, NULL);
+ g_free (str);
+ g_assert (stmt);
+ tables_model = gda_connection_statement_execute_select_full (cnc, stmt, NULL,
+ GDA_STATEMENT_MODEL_RANDOM_ACCESS,
+ col_types, error);
+ g_object_unref (stmt);
+ if (!tables_model) {
+ retval = FALSE;
+ break;
+ }
+
+ gint tnrows, ti;
+ tnrows = gda_data_model_get_n_rows (tables_model);
+ for (ti = 0; ti < tnrows; ti++) {
+ /* iterate through the tables */
+ if (!fill_constraints_tab_model (cnc, cdata, const_model, cvalue,
+ gda_data_model_get_value_at (tables_model, 0, ti),
+ NULL, error)) {
+ retval = FALSE;
+ break;
+ }
+ }
+ g_object_unref (tables_model);
+ if (!retval)
+ break;
+ }
+ g_object_unref (tmpmodel);
+ if (!retval) {
+ g_object_unref (const_model);
+ return FALSE;
+ }
+
+ GdaDataModel *mod_model;
+ mod_model = gda_meta_store_create_modify_data_model (store, context->table_name);
+ g_assert (mod_model);
+
+ nrows = gda_data_model_get_n_rows (const_model);
+ for (i = 0; i < nrows; i++) {
+ if (!fill_key_columns_model (cnc, cdata, mod_model,
+ gda_data_model_get_value_at (const_model, 4, i),
+ gda_data_model_get_value_at (const_model, 5, i),
+ gda_data_model_get_value_at (const_model, 2, i),
+ error)) {
+ retval = FALSE;
+ break;
+ }
+ }
+ g_object_unref (const_model);
+
+ if (retval)
+ retval = gda_meta_store_modify_with_context (store, context, mod_model, error);
+ g_object_unref (mod_model);
+
+ return retval;
}
gboolean
Modified: trunk/providers/postgres/gda-postgres-meta.c
==============================================================================
--- trunk/providers/postgres/gda-postgres-meta.c (original)
+++ trunk/providers/postgres/gda-postgres-meta.c Mon Mar 24 16:41:50 2008
@@ -956,7 +956,7 @@
gda_holder_set_value (gda_set_get_holder (i_set, "schema"), table_schema);
gda_holder_set_value (gda_set_get_holder (i_set, "name"), table_name);
- model = gda_connection_statement_execute_select (cnc, internal_stmt[I_STMT_TABLES_CONSTRAINTS], i_set,
+ model = gda_connection_statement_execute_select (cnc, internal_stmt[I_STMT_TRIGGERS], i_set,
error);
if (!model)
return FALSE;
Modified: trunk/providers/postgres/gda-postgres-provider.c
==============================================================================
--- trunk/providers/postgres/gda-postgres-provider.c (original)
+++ trunk/providers/postgres/gda-postgres-provider.c Mon Mar 24 16:41:50 2008
@@ -1604,7 +1604,7 @@
gchar *prep_stm_name;
GdaConnectionEvent *event = NULL;
- prep_stm_name = g_strdup_printf ("PS%p", stmt);
+ prep_stm_name = g_strdup_printf ("ps%p", stmt);
pg_res = PQprepare (cdata->pconn, prep_stm_name, sql, 0, NULL);
if (!pg_res || (PQresultStatus (pg_res) != PGRES_COMMAND_OK)) {
event = _gda_postgres_make_error (cnc, cdata->pconn, pg_res, error);
@@ -1678,7 +1678,7 @@
gchar *prep_stm_name;
GdaConnectionEvent *event = NULL;
- prep_stm_name = g_strdup_printf ("PS%d", counter++);
+ prep_stm_name = g_strdup_printf ("ps%d", counter++);
pg_res = PQprepare (cdata->pconn, prep_stm_name, sql, 0, NULL);
if (!pg_res || (PQresultStatus (pg_res) != PGRES_COMMAND_OK)) {
event = _gda_postgres_make_error (cdata->cnc, cdata->pconn, pg_res, error);
@@ -2110,7 +2110,7 @@
if (!cdata)
return;
- if (cdata->pconn)
+ if (cdata->pconn)
PQfinish (cdata->pconn);
if (cdata->type_data) {
Modified: trunk/providers/postgres/parser.y
==============================================================================
--- trunk/providers/postgres/parser.y (original)
+++ trunk/providers/postgres/parser.y Mon Mar 24 16:41:50 2008
@@ -45,6 +45,7 @@
#include <libgda/sql-parser/gda-statement-struct-select.h>
#include <libgda/sql-parser/gda-statement-struct-compound.h>
#include <libgda/sql-parser/gda-statement-struct-parts.h>
+#include <assert.h>
#ifdef GDA_DEBUG_NO
#define DEBUG(format, ...) g_print ("___" format "\n", __VA_ARGS__)
Modified: trunk/providers/skel-implementation/capi/parser.y
==============================================================================
--- trunk/providers/skel-implementation/capi/parser.y (original)
+++ trunk/providers/skel-implementation/capi/parser.y Mon Mar 24 16:41:50 2008
@@ -45,6 +45,7 @@
#include <libgda/sql-parser/gda-statement-struct-select.h>
#include <libgda/sql-parser/gda-statement-struct-compound.h>
#include <libgda/sql-parser/gda-statement-struct-parts.h>
+#include <assert.h>
#ifdef GDA_DEBUG_NO
#define DEBUG(format, ...) g_print ("___" format "\n", __VA_ARGS__)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]