Ejemplo n.º 1
0
        public void Exception_thrown_for_function_with_direct_reference_to_itself_in_definition()
        {
            var query = "ProductModel.F_D()";
            var expectedExceptionMessage = Strings.Cqt_UDF_FunctionDefinitionWithCircularReference("ProductModel.F_D");

            QueryTestHelpers.VerifyThrows <EntityCommandCompilationException>(query, workspace, expectedExceptionMessage);
        }
Ejemplo n.º 2
0
        public void Overload_resolution_for_function_taking_two_integers_as_arguments_negative()
        {
            var query1 = "ProductModel.F_In_ST_1(CAST(1 as Int16), CAST(1 AS Int32))";
            var expectedExceptionMessage1 = Strings.AmbiguousFunctionArguments
                                            + " Near function 'ProductModel.F_In_ST_1()', line 1, column 14.";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(query1, workspace, expectedExceptionMessage1);

            var query2 = "ProductModel.F_In_ST_1(CAST(1 as Int16), CAST(1 AS Int16))";
            var expectedExceptionMessage2 = Strings.AmbiguousFunctionArguments
                                            + " Near function 'ProductModel.F_In_ST_1()', line 1, column 14.";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(query2, workspace, expectedExceptionMessage2);

            var query3 = "ProductModel.F_In_ST_1(CAST(1 as Int64), CAST(1 AS Int16))";
            var expectedExceptionMessage3 = Strings.AmbiguousFunctionArguments
                                            + " Near function 'ProductModel.F_In_ST_1()', line 1, column 14.";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(query3, workspace, expectedExceptionMessage3);

            var query4 = "ProductModel.F_In_ST_1(CAST(1 as Double), CAST(1 AS Double))";
            var expectedExceptionMessage4 = Strings.NoFunctionOverloadMatch(
                "ProductModel", "F_In_ST_1", "F_In_ST_1(Edm.Double, Edm.Double)") + " Near function 'F_In_ST_1()', line 1, column 14.";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(query4, workspace, expectedExceptionMessage4);
        }
Ejemplo n.º 3
0
        public void Exception_thrown_for_function_with_no_body()
        {
            var query = "ProductModel.F_NoBody()";
            var expectedExceptionMessage = Strings.Cqt_UDF_FunctionHasNoDefinition("ProductModel.F_NoBody()");

            QueryTestHelpers.VerifyThrows <InvalidOperationException>(query, workspace, expectedExceptionMessage);
        }
Ejemplo n.º 4
0
        public void Exception_thrown_if_invalid_parameter_passed_to_function()
        {
            var query = "ProductModel.F_I(10)";
            var expectedExceptionMessage = Strings.Cqt_UDF_FunctionDefinitionResultTypeMismatch(
                "Edm.Int32", "ProductModel.F_I", "Edm.Int16");

            QueryTestHelpers.VerifyThrows <InvalidOperationException>(query, workspace, expectedExceptionMessage);
        }
Ejemplo n.º 5
0
        public void Exception_thrown_for_function_with_indirect_reference_to_itself_in_definition()
        {
            var query1 = "ProductModel.F_E()";

            QueryTestHelpers.VerifyThrows <EntityCommandCompilationException>(query1, workspace, "Cqt_UDF_FunctionDefinitionWithCircularReference", "ProductModel.F_E");

            var query2 = "ProductModel.F_F()";

            QueryTestHelpers.VerifyThrows <EntityCommandCompilationException>(query2, workspace, "Cqt_UDF_FunctionDefinitionWithCircularReference", "ProductModel.F_F");
        }
Ejemplo n.º 6
0
        public void Exception_thrown_for_function_that_references_inline_function_in_its_body()
        {
            var query =
                @"using ProductModel;
function F_H() as (1)
F_G()";
            var expectedExceptionMessage = Strings.CannotResolveNameToTypeOrFunction("F_H") + " Near simple identifier, line 3, column 7.";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(query, workspace, expectedExceptionMessage);
        }
Ejemplo n.º 7
0
        public void Exception_thrown_for_function_that_references_inline_function_in_its_body()
        {
            var query =
                @"using ProductModel;
function F_H() as (1)
F_G()";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query,
                workspace,
                "CannotResolveNameToTypeOrFunction",
                s => s.Replace(" Near simple identifier, line 3, column 7.", ""),
                "F_H");
        }
        public void Exception_thrown_for_function_that_references_inline_function_in_its_body()
        {
            var query =
                @"using ProductModel;
function F_H() as (1)
F_G()";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query,
                workspace,
                "CannotResolveNameToTypeOrFunction",
                /*isExactMatch*/ false,
                "F_H");
        }
Ejemplo n.º 9
0
        public void Overload_resolution_for_functions_with_nulls_as_arguments_negative()
        {
            var query1 = "ProductModel.F_In_Number(null)";
            var expectedExceptionMessage1 = Strings.AmbiguousFunctionArguments
                                            + " Near function 'ProductModel.F_In_Number()', line 1, column 14.";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(query1, workspace, expectedExceptionMessage1);

            var query2 = "ProductModel.F_In_ColRow2(CAST(1 as Int16), null, CAST(1 as Int64))";
            var expectedExceptionMessage2 = Strings.NoFunctionOverloadMatch(
                "ProductModel", "F_In_ColRow2", "F_In_ColRow2(Edm.Int16, NULL, Edm.Int64)")
                                            + " Near function 'F_In_ColRow2()', line 1, column 14.";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(query2, workspace, expectedExceptionMessage2);
        }
Ejemplo n.º 10
0
        public void Overload_resolution_for_function_taking_entity_and_integer_as_arguments_negative()
        {
            var query1 =
                "ProductModel.F_In_ProdNumber2(anyelement(select value treat(p as ProductModel.DiscontinuedProduct) from ProductContainer.Products as p), CAST(1 as Int32))";
            var expectedExceptionMessage1 = Strings.AmbiguousFunctionArguments
                                            + " Near function 'ProductModel.F_In_ProdNumber2()', line 1, column 14.";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(query1, workspace, expectedExceptionMessage1);

            var query2 = "ProductModel.F_In_ProdNumber2(anyelement(ProductContainer.Products), CAST(1 as Decimal))";
            var expectedExceptionMessage2 = Strings.NoFunctionOverloadMatch(
                "ProductModel", "F_In_ProdNumber2", "F_In_ProdNumber2(ProductModel.Product, Edm.Decimal)")
                                            + " Near function 'F_In_ProdNumber2()', line 1, column 14.";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(query2, workspace, expectedExceptionMessage2);
        }
Ejemplo n.º 11
0
        public void Overload_resolution_for_function_taking_collection_of_rows_as_argument_negative()
        {
            var query1 =
                "ProductModel.F_In_ColRow({Row(anyelement(select value treat(p as ProductModel.DiscontinuedProduct) from ProductContainer.Products as p) as x, CAST(1 as Int32) as y)})";
            var expectedExceptionMessage1 = Strings.AmbiguousFunctionArguments
                                            + " Near function 'ProductModel.F_In_ColRow()', line 1, column 14.";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(query1, workspace, expectedExceptionMessage1);

            var query2 = "ProductModel.F_In_ColRow({Row(anyelement(ProductContainer.Products) as x, CAST(1 as Decimal) as y)})";
            var expectedExceptionMessage2 = Strings.NoFunctionOverloadMatch(
                "ProductModel", "F_In_ColRow",
                "F_In_ColRow(Transient.collection[Transient.rowtype[(x,ProductModel.Product(Nullable=True,DefaultValue=)),(y,Edm.Decimal(Nullable=True,DefaultValue=,Precision=,Scale=))](Nullable=True,DefaultValue=)])")
                                            + " Near function 'F_In_ColRow()', line 1, column 14.";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(query2, workspace, expectedExceptionMessage2);
        }
Ejemplo n.º 12
0
        public void Overload_resolution_for_functions_with_nulls_as_arguments_negative()
        {
            var query1 = "ProductModel.F_In_Number(null)";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query1,
                workspace,
                "AmbiguousFunctionArguments",
                s => s.Replace(" Near function 'ProductModel.F_In_Number()', line 1, column 14.", ""));

            var query2 = "ProductModel.F_In_ColRow2(CAST(1 as Int16), null, CAST(1 as Int64))";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query2,
                workspace,
                "NoFunctionOverloadMatch",
                s => s.Replace(" Near function 'F_In_ColRow2()', line 1, column 14.", ""),
                "ProductModel",
                "F_In_ColRow2",
                "F_In_ColRow2(Edm.Int16, NULL, Edm.Int64)");
        }
        public void Overload_resolution_for_functions_with_nulls_as_arguments_negative()
        {
            var query1 = "ProductModel.F_In_Number(null)";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query1,
                workspace,
                "AmbiguousFunctionArguments",
                /*isExactMatch*/ false);

            var query2 = "ProductModel.F_In_ColRow2(CAST(1 as Int16), null, CAST(1 as Int64))";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query2,
                workspace,
                "NoFunctionOverloadMatch",
                /*isExactMatch*/ false,
                "ProductModel",
                "F_In_ColRow2",
                "F_In_ColRow2(Edm.Int16, NULL, Edm.Int64)");
        }
        public void Overload_resolution_for_function_taking_entity_and_integer_as_arguments_negative()
        {
            var query1 = "ProductModel.F_In_ProdNumber2(anyelement(select value treat(p as ProductModel.DiscontinuedProduct) from ProductContainer.Products as p), CAST(1 as Int32))";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query1,
                workspace,
                "AmbiguousFunctionArguments",
                /*isExactMatch*/ false);

            var query2 = "ProductModel.F_In_ProdNumber2(anyelement(ProductContainer.Products), CAST(1 as Decimal))";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query2,
                workspace,
                "NoFunctionOverloadMatch",
                /*isExactMatch*/ false,
                "ProductModel",
                "F_In_ProdNumber2",
                "F_In_ProdNumber2(ProductModel.Product, Edm.Decimal)");
        }
        public void Overload_resolution_for_function_taking_collection_of_rows_as_argument_negative()
        {
            var query1 =
                "ProductModel.F_In_ColRow({Row(anyelement(select value treat(p as ProductModel.DiscontinuedProduct) from ProductContainer.Products as p) as x, CAST(1 as Int32) as y)})";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query1,
                workspace,
                "AmbiguousFunctionArguments",
                /*isExactMatch*/ false);

            var query2 = "ProductModel.F_In_ColRow({Row(anyelement(ProductContainer.Products) as x, CAST(1 as Decimal) as y)})";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query2,
                workspace,
                "NoFunctionOverloadMatch",
                /*isExactMatch*/ false,
                "ProductModel",
                "F_In_ColRow",
                "F_In_ColRow(Transient.collection[Transient.rowtype[(x,ProductModel.Product(Nullable=True,DefaultValue=)),(y,Edm.Decimal(Nullable=True,DefaultValue=,Precision=,Scale=))](Nullable=True,DefaultValue=)])");
        }
Ejemplo n.º 16
0
        public void Overload_resolution_for_function_taking_row_as_argument_negative()
        {
            var query1 =
                "ProductModel.F_In_Row(Row(anyelement(select value treat(p as ProductModel.DiscontinuedProduct) from ProductContainer.Products as p) as x, CAST(1 as Int32) as y))";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query1,
                workspace,
                "AmbiguousFunctionArguments",
                s => s.Replace(" Near function 'ProductModel.F_In_Row()', line 1, column 14.", ""));

            var query2 = "ProductModel.F_In_Row(Row(anyelement(ProductContainer.Products) as x, CAST(1 as Decimal) as y))";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query2,
                workspace,
                "NoFunctionOverloadMatch",
                s => s.Replace(
                    " Near function 'F_In_Row()', line 1, column 14.", ""),
                "ProductModel",
                "F_In_Row",
                "F_In_Row(Transient.rowtype[(x,ProductModel.Product(Nullable=True,DefaultValue=)),(y,Edm.Decimal(Nullable=True,DefaultValue=,Precision=,Scale=))])");
        }
Ejemplo n.º 17
0
        public void Overload_resolution_for_function_taking_two_integers_as_arguments_negative()
        {
            var query1 = "ProductModel.F_In_ST_1(CAST(1 as Int16), CAST(1 AS Int32))";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query1,
                workspace,
                "AmbiguousFunctionArguments",
                s => s.Replace(" Near function 'ProductModel.F_In_ST_1()', line 1, column 14.", ""));

            var query2 = "ProductModel.F_In_ST_1(CAST(1 as Int16), CAST(1 AS Int16))";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query2,
                workspace,
                "AmbiguousFunctionArguments",
                s => s.Replace(" Near function 'ProductModel.F_In_ST_1()', line 1, column 14.", ""));

            var query3 = "ProductModel.F_In_ST_1(CAST(1 as Int64), CAST(1 AS Int16))";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query3,
                workspace,
                "AmbiguousFunctionArguments",
                s => s.Replace(" Near function 'ProductModel.F_In_ST_1()', line 1, column 14.", ""));

            var query4 = "ProductModel.F_In_ST_1(CAST(1 as Double), CAST(1 AS Double))";

            QueryTestHelpers.VerifyThrows <EntitySqlException>(
                query4,
                workspace,
                "NoFunctionOverloadMatch",
                s => s.Replace(" Near function 'F_In_ST_1()', line 1, column 14.", ""),
                "ProductModel",
                "F_In_ST_1",
                "F_In_ST_1(Edm.Double, Edm.Double)");
        }
Ejemplo n.º 18
0
        public void Exception_thrown_for_function_with_no_body()
        {
            var query = "ProductModel.F_NoBody()";

            QueryTestHelpers.VerifyThrows <InvalidOperationException>(query, workspace, "Cqt_UDF_FunctionHasNoDefinition", "ProductModel.F_NoBody()");
        }