# 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.

{
types: [
    {inputType: "Bit", outputType: "Bit", runningType: "Bit", major: "Numeric"},
    {inputType: "Int", outputType: "BigInt", runningType: "BigInt", major: "Numeric"},
    {inputType: "BigInt", outputType: "BigInt", runningType: "BigInt", major: "Numeric"},
    {inputType: "NullableBit", outputType: "Bit", runningType: "Bit", major: "Numeric"},
    {inputType: "NullableInt", outputType: "BigInt", runningType: "BigInt", major: "Numeric"},
    {inputType: "NullableBigInt", outputType: "BigInt", runningType: "BigInt", major: "Numeric"},
    {inputType: "Float4", outputType: "Float8", runningType: "Float8", major: "Numeric"},
    {inputType: "Float8", outputType: "Float8", runningType: "Float8", major: "Numeric"},
    {inputType: "NullableFloat4", outputType: "Float8", runningType: "Float8", major: "Numeric"},
    {inputType: "NullableFloat8", outputType: "Float8", runningType: "Float8", major: "Numeric"}
   ]
}  
 