<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<svg class="railroad-diagram" width="757.5" height="131" viewBox="0 0 757.5 131" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g transform="translate(.5 .5)">
        <g>
            <path d="M20 30v20m10 -20v20m-10 -10h20"></path>
        </g>
        <path d="M40 40h10"></path>
        <g class="terminal ">
            <path d="M50 40h0"></path>
            <path d="M197.5 40h0"></path>
            <rect x="50" y="29" width="147.5" height="22" rx="10" ry="10"></rect>
            <text x="123.75" y="44">DROP STATISTICS</text>
        </g>
        <path d="M197.5 40h10"></path>
        <path d="M207.5 40h10"></path>
        <g>
            <path d="M217.5 40h0"></path>
            <path d="M707.5 40h0"></path>
            <path d="M217.5 40h10"></path>
            <g>
                <path d="M227.5 40h0"></path>
                <path d="M697.5 40h0"></path>
                <g>
                    <path d="M227.5 40h0"></path>
                    <path d="M387 40h0"></path>
                    <path d="M227.5 40a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
                    <g>
                        <path d="M247.5 20h119.5"></path>
                    </g>
                    <path d="M367 20a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
                    <path d="M227.5 40h20"></path>
                    <g>
                        <path d="M247.5 40h0"></path>
                        <path d="M367 40h0"></path>
                        <g class="terminal ">
                            <path d="M247.5 40h0"></path>
                            <path d="M318.5 40h0"></path>
                            <rect x="247.5" y="29" width="71" height="22" rx="10" ry="10"></rect>
                            <text x="283" y="44">SCHEMA</text>
                        </g>
                        <path d="M318.5 40h10"></path>
                        <path d="M328.5 40h10"></path>
                        <g class="terminal ">
                            <path d="M338.5 40h0"></path>
                            <path d="M367 40h0"></path>
                            <rect x="338.5" y="29" width="28.5" height="22" rx="10" ry="10"></rect>
                            <text x="352.75" y="44">.</text>
                        </g>
                    </g>
                    <path d="M367 40h20"></path>
                </g>
                <path d="M387 40h10"></path>
                <g class="terminal ">
                    <path d="M397 40h0"></path>
                    <path d="M459.5 40h0"></path>
                    <rect x="397" y="29" width="62.5" height="22" rx="10" ry="10"></rect>
                    <text x="428.25" y="44">TABLE</text>
                </g>
                <path d="M459.5 40h10"></path>
                <g>
                    <path d="M469.5 40h0"></path>
                    <path d="M697.5 40h0"></path>
                    <path d="M469.5 40a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path>
                    <g>
                        <path d="M489.5 20h188"></path>
                    </g>
                    <path d="M677.5 20a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path>
                    <path d="M469.5 40h20"></path>
                    <g>
                        <path d="M489.5 40h0"></path>
                        <path d="M677.5 40h0"></path>
                        <g class="terminal ">
                            <path d="M489.5 40h0"></path>
                            <path d="M518 40h0"></path>
                            <rect x="489.5" y="29" width="28.5" height="22" rx="10" ry="10"></rect>
                            <text x="503.75" y="44">(</text>
                        </g>
                        <path d="M518 40h10"></path>
                        <path d="M528 40h10"></path>
                        <g>
                            <path d="M538 40h0"></path>
                            <path d="M629 40h0"></path>
                            <path d="M538 40h10"></path>
                            <g class="terminal ">
                                <path d="M548 40h0"></path>
                                <path d="M619 40h0"></path>
                                <rect x="548" y="29" width="71" height="22" rx="10" ry="10"></rect>
                                <text x="583.5" y="44">COLUMN</text>
                            </g>
                            <path d="M619 40h10"></path>
                            <path d="M548 40a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path>
                            <g class="terminal ">
                                <path d="M548 70h21.25"></path>
                                <path d="M597.75 70h21.25"></path>
                                <rect x="569.25" y="59" width="28.5" height="22" rx="10" ry="10"></rect>
                                <text x="583.5" y="74">,</text>
                            </g>
                            <path d="M619 70a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path>
                        </g>
                        <path d="M629 40h10"></path>
                        <path d="M639 40h10"></path>
                        <g class="terminal ">
                            <path d="M649 40h0"></path>
                            <path d="M677.5 40h0"></path>
                            <rect x="649" y="29" width="28.5" height="22" rx="10" ry="10"></rect>
                            <text x="663.25" y="44">)</text>
                        </g>
                    </g>
                    <path d="M677.5 40h20"></path>
                </g>
            </g>
            <path d="M697.5 40h10"></path>
            <path d="M227.5 40a10 10 0 0 0 -10 10v40a10 10 0 0 0 10 10"></path>
            <g class="terminal ">
                <path d="M227.5 100h220.75"></path>
                <path d="M476.75 100h220.75"></path>
                <rect x="448.25" y="89" width="28.5" height="22" rx="10" ry="10"></rect>
                <text x="462.5" y="104">,</text>
            </g>
            <path d="M697.5 100a10 10 0 0 0 10 -10v-40a10 10 0 0 0 -10 -10"></path>
        </g>
        <path d="M707.5 40h10"></path>
        <path d="M 717.5 40 h 20 m -10 -10 v 20 m 10 -20 v 20"></path>
    </g>
    <style>
        svg {
        background-color: hsl(0,0%,100%);
        }
        path {
        stroke-width: 2;
        stroke: black;
        fill: rgba(0,0,0,0);
        }
        text {
        font: bold 14px monospace;
        text-anchor: middle;
        white-space: pre;
        }
        text.diagram-text {
        font-size: 12px;
        }
        text.diagram-arrow {
        font-size: 16px;
        }
        text.label {
        text-anchor: start;
        }
        text.comment {
        font: italic 12px monospace;
        }
        g.non-terminal text {
        /&#42;font-style: italic;&#42;/
        }
        rect {
        stroke-width: 2;
        stroke: black;
        fill: hsl(0,0%,100%);
        }
        rect.group-box {
        stroke: gray;
        stroke-dasharray: 10 5;
        fill: none;
        }
        path.diagram-text {
        stroke-width: 2;
        stroke: black;
        fill: white;
        cursor: help;
        }
        g.diagram-text:hover path.diagram-text {
        fill: #eee;
        }</style>
</svg>
