<!-- @@@ START COPYRIGHT @@@                                                 -->
<!--
<!-- 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.
<!--
<!-- @@@ END COPYRIGHT @@@                                                   -->
<MV>
    <Version>1.0</Version>
    <JBB id='B9'>
      <Hub>
        <JBBCList>
          <Table id='T1' TS='2007-09-22 10:30:45' IsAnMV='0'>cat.sch.tbl1</Table>
          <Table id='T2' TS='2007-09-22 10:30:45' IsAnMV='1'>cat.sch.tbl2</Table>
          <JBB ref="B1"/>
          <Operator>an operator</Operator>
        </JBBCList>
        <JoinPredList>
          <JoinPred id="J1">
            <Column id="C1" TableId="T1" SqlType="varchar(20)">cat.sch.tbl1.col1</Column>
            <Column id="C2" TableId="T1" SqlType="int">cat.sch.tbl1.col2</Column>
            <Expr>
              x + y * z
              <BinaryOper id='S1' op='2042'>
                <Column id="C2" TableId="T1" SqlType="int">cat.sch.tbl1.col2</Column>
                <Function id='S5' op='2256'>
                  <Column id="C12" TableId="Product" SqlType="varchar">cat.sch.product.name</Column>
                </Function>
              </BinaryOper>
              <Input></Input>
            </Expr>
            <MVColumn MV='MV1' ref='C4'>coll1</MVColumn>
            <MVColumn MV='MV1' ref='C5'>coll2</MVColumn>
          </JoinPred>
        </JoinPredList>
        <RangePredList>
          <Range>
            <Column id="C1" TableId="T2" SqlType="char(20)">cat.sch.person.name</Column>
            <OpEQ>
              <StringVal>Barry</StringVal>
              <StringVal>Joanne</StringVal>
              <StringVal>Brian</StringVal>
              <StringVal>Katie</StringVal>
            </OpEQ>
            <OpLS>
              <StringVal>aardvark</StringVal>
            </OpLS>
            <OpGE>
              <StringVal>zebra</StringVal>
            </OpGE>
            <OpBT>
              <StringVal>m</StringVal>
              <StringVal>n</StringVal>
            </OpBT>
            <OpBT>
              <StringVal>pa</StringVal>
              <StringVal>pe</StringVal>
            </OpBT>
          </Range>
        </RangePredList>
        <ResidualPredList>
          <Residual id="D1" result="NotProvided">
		    <PredicateText>COALESCE(UPPER(%1),'NONE') &lt; 'xyz'</PredicateText>
            <Column id="C1" TableId="T4" SqlType="char(20)">cat.sch.product.name</Column>
          </Residual>
        </ResidualPredList>
        <GroupBy>
            <Column id="C1" TableId="T1" SqlType="varchar(20)">cat.sch.tbl1.col1</Column>
            <Expr>
              x + y * z
              <BinaryOper>
                <Column id="C2" TableId="T1" SqlType="int">cat.sch.tbl1.col2</Column>
                <Function id='S2' op='2044'>
                  <UnaryOper id='S3' op='2030'>
                    <Column id="C3" TableId="T1" SqlType="int">cat.sch.tbl1.numval</Column>
                  </UnaryOper>
                  <Column id="C4" TableId="T1" SqlType="int">cat.sch.tbl1.anotherval</Column>
                </Function>
              </BinaryOper>
              <Input>
                <Column id="C2" TableId="T1" SqlType="int">cat.sch.tbl1.col2</Column>
                <Column id="C2" TableId="T1" SqlType="int">cat.sch.tbl1.col2</Column>
                <Column id="C2" TableId="T1" SqlType="int">cat.sch.tbl1.col2</Column>
              </Input>
            </Expr>
            <MVColumn>mv col 1</MVColumn>
        </GroupBy>
      </Hub>
      <ExtraHub>
        <TableList>
          <Table id='T1' TS='2007-09-22 10:30:45' Reason='OuterJoin'>cat.sch.tbl1</Table>
          <Table id='T2' TS='2007-09-22 10:30:45' Reason='RI'>cat.sch.tbl2</Table>
        </TableList>
        <JoinPredList>
          <JoinPred id="J2">
            <Column id="C1" TableId="T1" SqlType="varchar(20)">cat.sch.tbl1.col1</Column>
            <Column id="C2" TableId="T1" SqlType="int">cat.sch.tbl1.col2</Column>
            <Expr>
              x + y * z
              <BinaryOper id='S1' op='2042'>
                <Column id="C2" TableId="T1" SqlType="int">cat.sch.tbl1.col2</Column>
                <Function id='S5' op='2256'>
                  <Column id="C12" TableId="Product" SqlType="varchar">cat.sch.product.name</Column>
                </Function>
              </BinaryOper>
              <Input></Input>
            </Expr>
            <MVColumn MV='MV1' ref='C4'>coll1</MVColumn>
            <MVColumn MV='MV1' ref='C5'>coll2</MVColumn>
          </JoinPred>
        </JoinPredList>
        <GroupBy>
            <Column id="C1" TableId="T1" SqlType="varchar(20)">cat.sch.tbl1.col1</Column>
            <Expr>
              x + y * z
              <BinaryOper>
                <Column id="C2" TableId="T1" SqlType="int">cat.sch.tbl1.col2</Column>
                <Function id='S2' op='2044'>
                  <UnaryOper id='S3' op='2030'>
                    <Column id="C3" TableId="T1" SqlType="int">cat.sch.tbl1.numval</Column>
                  </UnaryOper>
                  <Column id="C4" TableId="T1" SqlType="int">cat.sch.tbl1.anotherval</Column>
                </Function>
              </BinaryOper>
              <Input>
                <Column id="C2" TableId="T1" SqlType="int">cat.sch.tbl1.col2</Column>
                <Column id="C2" TableId="T1" SqlType="int">cat.sch.tbl1.col2</Column>
                <Column id="C2" TableId="T1" SqlType="int">cat.sch.tbl1.col2</Column>
              </Input>
            </Expr>
            <MVColumn>mv col 1</MVColumn>
        </GroupBy>
      </ExtraHub>
      <OutputList>
        <Output name="mvcol1" ref="S13" result="NotProvided">
          <Expr ref="S13">
            @A1 + @A2
            <BinaryOper op="2040">
              <MVColumn MV="MV1">FH</MVColumn>
              <MVColumn MV="MV1">G</MVColumn>
            </BinaryOper>
            <Input>
              <MVColumn MV="MV1">FH</MVColumn>
              <MVColumn MV="MV1">G</MVColumn>
            </Input>
          </Expr>
        </Output>
        <Output ref="C9" result="NotProvided">
          <Column TableId="T3">I</Column>
        </Output>
      </OutputList>
    </JBB>
    <Misc IsolationLevel="STABLE"></Misc>
</MV>

