public void CreateExternalProcedure()
        {
            var procName   = ObjectName.Parse("APP.proc1");
            var parameters = new RoutineParameter[] {
                new RoutineParameter("a", PrimitiveTypes.Integer()),
                new RoutineParameter("b", PrimitiveTypes.Integer()),
            };

            var externRef = ExternalRef.MakeRef(typeof(Test), "Procedure(int, int)");

            AdminQuery.CreateExternProcedure(procName, parameters, externRef.ToString());

            var exists = AdminQuery.Access().RoutineExists(procName);

            Assert.IsTrue(exists);

            var procedure = AdminQuery.Access().GetObject(DbObjectType.Routine, procName);

            Assert.IsNotNull(procedure);
            Assert.IsInstanceOf <ExternalProcedure>(procedure);

            var externFunction = (ExternalProcedure)procedure;

            Assert.IsNotNull(externFunction.ExternalRef);
            Assert.AreEqual(typeof(Test), externFunction.ExternalRef.Type);
        }
Example #2
0
        public void ShowSchema()
        {
            var result = AdminQuery.ShowSchema();

            Assert.IsNotNull(result);

            Row row = null;

            Assert.DoesNotThrow(() => row = result.ElementAt(0));
            Assert.IsNotNull(row);

            var schemaName = row.GetValue(0).Value.ToString();
            var schemaType = row.GetValue(1).Value.ToString();

            Assert.AreEqual("APP", schemaName);
            Assert.AreEqual("DEFAULT", schemaType);

            Assert.DoesNotThrow(() => row = result.ElementAt(1));
            Assert.IsNotNull(row);

            schemaName = row.GetValue(0).Value.ToString();
            schemaType = row.GetValue(1).Value.ToString();

            Assert.AreEqual("INFORMATION_SCHEMA", schemaName);
            Assert.AreEqual("SYSTEM", schemaType);
        }
Example #3
0
        public void Callback()
        {
            var tableName = ObjectName.Parse("APP.test_table");

            AdminQuery.Access().CreateCallbackTrigger("callback1", tableName, TriggerEventTime.After, TriggerEventType.Insert);

            var reset = new AutoResetEvent(false);

            TriggerEvent firedEvent = null;

            AdminQuery.Context.RouteImmediate <TriggerEvent>(e => {
                firedEvent = e;
                reset.Set();
            }, e => e.TriggerType == TriggerType.Callback &&
                                                             e.TriggerName.Name.Equals("callback1"));

            AdminQuery.Insert(tableName, new[] { "id", "name" },
                              new SqlExpression[] { SqlExpression.Constant(2), SqlExpression.Constant("The Name") });

            reset.WaitOne(300);

            Assert.IsNotNull(firedEvent);
            Assert.AreEqual(TriggerEventTime.After, firedEvent.EventTime);
            Assert.AreEqual(TriggerEventType.Insert, firedEvent.EventType);
        }
Example #4
0
        public void SelectBio()
        {
            var exp    = (SqlQueryExpression)SqlExpression.Parse("SELECT * FROM test_table");
            var result = AdminQuery.Select(exp);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Any());

            var row = result.FirstOrDefault();

            Assert.IsNotNull(row);

            var bio = row["bio"];

            Assert.IsFalse(Field.IsNullField(bio));
            Assert.IsInstanceOf <StringType>(bio.Type);
            Assert.AreEqual(SqlTypeCode.Clob, bio.Type.TypeCode);
            Assert.IsInstanceOf <SqlLongString>(bio.Value);

            var    textReader = ((SqlLongString)bio.Value).GetInput(Encoding.ASCII);
            string text       = null;

            Assert.DoesNotThrow(() => text = textReader.ReadToEnd());

            Assert.IsNotNullOrEmpty(text);
            Assert.AreEqual(testBio, text);
        }
Example #5
0
        public void SelectSingleVariable()
        {
            const string sql = "SELECT * FROM system.vars WHERE var = 'a'";

            var query = (SqlQueryExpression)SqlExpression.Parse(sql);

            var result = AdminQuery.Select(query);

            Assert.IsNotNull(result);

            Row row = null;

            Assert.DoesNotThrow(() => row = result.Fetch(FetchDirection.Next, -1));
            Assert.IsNotNull(row);

            var name     = row.GetValue("var");
            var type     = row.GetValue("type");
            var value    = row.GetValue("value");
            var constant = row.GetValue("constant");

            Assert.IsFalse(Field.IsNullField(name));
            Assert.IsFalse(Field.IsNullField(type));
            Assert.IsTrue(value.IsNull);
            Assert.IsFalse(Field.IsNullField(constant));
        }
        public void UnderNotExistingType()
        {
            var typeName       = ObjectName.Parse("APP.type1");
            var parentTypeName = ObjectName.Parse("APP.parentType");

            Assert.Throws <StatementException>(() => AdminQuery.CreateType(typeName, parentTypeName, new UserTypeMember("age", PrimitiveTypes.Integer())));
        }
        public void FormMessageAndReadMeta()
        {
            var reset = new AutoResetEvent(false);

            Event info = null;

            System.Context.RouteImmediate <InformationEvent>(e => {
                info = e;
                reset.Set();
            }, e => e.Level == InformationLevel.Verbose);

            AdminQuery.OnVerbose("Testing Messages");

            reset.WaitOne(300);

            Assert.IsNotNull(info);
            Assert.IsInstanceOf <InformationEvent>(info);

            var message = info.AsMessage();

            Assert.IsNotNull(message);

            var databaseName = message.DatabaseName();

            Assert.IsNotNullOrEmpty(databaseName);
            Assert.AreEqual(DatabaseName, databaseName);
        }
        public void RouteOnlyOnce()
        {
            var reset1 = new AutoResetEvent(false);
            var reset2 = new AutoResetEvent(false);

            IEvent systemFired = null;

            System.Context.Route <InformationEvent>(e => {
                systemFired = e;
                reset1.Set();
            });

            IEvent sessionFired = null;

            AdminSession.Context.Route <ErrorEvent>(e => {
                sessionFired = e;
                reset2.Set();
            });

            AdminQuery.OnVerbose("Test Message");

            reset1.WaitOne(300);
            reset2.WaitOne(300);

            Assert.IsNotNull(systemFired);
            Assert.IsNull(sessionFired);
        }
        public void RouteOneRegisteredMany()
        {
            var reset = new AutoResetEvent(false);

            QueryEvent a = null, b = null;

            System.Context.Route <QueryEvent>(e => a = e);
            System.Context.Route <QueryEvent>(e => b = e);

            IEvent fired = null;

            System.Context.Route <InformationEvent>(e => {
                fired = e;
                reset.Set();
            });

            AdminQuery.OnVerbose("Test Message");

            reset.WaitOne(300);

            Assert.IsNotNull(fired);
            Assert.IsInstanceOf <InformationEvent>(fired);

            Assert.IsNull(a);
            Assert.IsNull(b);

            var infoEvent = (InformationEvent)fired;

            Assert.AreEqual(InformationLevel.Verbose, infoEvent.Level);
            Assert.AreEqual("Test Message", infoEvent.Message);
        }
Example #10
0
        public void SimpleCursorForLoop()
        {
            var query = (SqlQueryExpression)SqlExpression.Parse("SELECT * FROM table1");

            var block = new PlSqlBlockStatement();

            block.Declarations.Add(new DeclareCursorStatement("c1", query));

            var loop = new CursorForLoopStatement("i", "c1");

            loop.Statements.Add(new DeclareVariableStatement("a", PrimitiveTypes.String()));
            loop.Statements.Add(new AssignVariableStatement(SqlExpression.VariableReference("a"),
                                                            SqlExpression.FunctionCall("cast",
                                                                                       new SqlExpression[] { SqlExpression.VariableReference("i"), SqlExpression.Constant("varchar") })));
            loop.Statements.Add(
                new ConditionStatement(SqlExpression.Equal(SqlExpression.VariableReference("i"), SqlExpression.Constant(50)),
                                       new SqlStatement[] { new ReturnStatement(SqlExpression.VariableReference("a")) }));
            block.Statements.Add(new OpenStatement("c1"));
            block.Statements.Add(loop);
            var result = AdminQuery.ExecuteStatement(block);

            Assert.IsNotNull(result);
            Assert.AreEqual(StatementResultType.Result, result.Type);

            var value = result.Result.GetValue(0, 0);

            Assert.IsNotNull(value);
            Assert.IsFalse(Field.IsNullField(value));
        }
        public void SelectData()
        {
            var exp    = (SqlQueryExpression)SqlExpression.Parse("SELECT * FROM test_table");
            var result = AdminQuery.Select(exp);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Any());

            var row = result.FirstOrDefault();

            Assert.IsNotNull(row);

            var data = row["data"];

            Assert.IsFalse(Field.IsNullField(data));
            Assert.IsInstanceOf <BinaryType>(data.Type);
            Assert.AreEqual(SqlTypeCode.Blob, data.Type.TypeCode);
            Assert.IsInstanceOf <SqlLongBinary>(data.Value);

            var stream  = ((SqlLongBinary)data.Value).GetInput();
            var content = new byte[2048];

            Assert.DoesNotThrow(() => stream.Read(content, 0, content.Length));

            Assert.IsNotEmpty(content);
            Assert.AreEqual(testData, content);
        }
        protected override bool OnTearDown(string testName, IQuery query)
        {
            var functionName = ObjectName.Parse("APP.func1");

            AdminQuery.Access().DropObject(DbObjectType.Routine, functionName);
            return(true);
        }
Example #13
0
        public void WithNamedArgument()
        {
            var procName = ObjectName.Parse("APP.proc1");
            var arg      = new InvokeArgument("a", SqlExpression.Constant("Hello!"));

            AdminQuery.Call(procName, arg);
        }
Example #14
0
        public void CreateExternalFunction()
        {
            var funName    = ObjectName.Parse("APP.fun1");
            var parameters = new RoutineParameter[] {
                new RoutineParameter("a", PrimitiveTypes.Integer()),
                new RoutineParameter("b", PrimitiveTypes.Integer()),
            };

            var externRef = ExternalRef.MakeRef(typeof(Test), "Function(int, int)");

            AdminQuery.CreateExternFunction(funName, PrimitiveTypes.Integer(), parameters, externRef.ToString());

            var exists = AdminQuery.Access().RoutineExists(funName);

            Assert.IsTrue(exists);

            var function = AdminQuery.Access().GetObject(DbObjectType.Routine, funName);

            Assert.IsNotNull(function);
            Assert.IsInstanceOf <ExternalFunction>(function);

            var externFunction = (ExternalFunction)function;

            Assert.IsNotNull(externFunction.ExternalRef);
            Assert.AreEqual(typeof(Test), externFunction.ExternalRef.Type);
        }
 protected override void OnAfterSetup(string testName)
 {
     AdminQuery.Access().CreateTable(table => table
                                     .Named("APP.test_table")
                                     .WithColumn("a", PrimitiveTypes.Integer())
                                     .WithColumn("b", PrimitiveTypes.String()));
 }
Example #16
0
        public void OneValueWithLob()
        {
            const string testBio = "A simple test string that can span several characters, " +
                                   "that is trying to be the longest possible, just to prove" +
                                   "the capacity of a LONG VARCHAR to handle very long strings. " +
                                   "Anyway it is virtually impossible to reach the maximum size " +
                                   "of a long object, that is organized in 64k byte pages and " +
                                   "spans within the local system without any constraint of size. " +
                                   "For sake of memory anyway, the maximum size of the test object " +
                                   "is set to just 2048 bytes.";

            var tableName = ObjectName.Parse("APP.test_table");
            var columns   = new[] { "first_name", "last_name", "active", "bio" };
            var bio       = CreateBio(testBio);

            var values = new List <SqlExpression[]> {
                new[] {
                    SqlExpression.Constant("Antonello"),
                    SqlExpression.Constant("Provenzano"),
                    SqlExpression.Constant(true),
                    SqlExpression.Constant(bio)
                },
            };

            var count = AdminQuery.Insert(tableName, columns, values.ToArray());

            Assert.AreEqual(1, count);

            var table = AdminQuery.Access().GetTable(tableName);

            Assert.IsNotNull(table);
            Assert.AreEqual(1, table.RowCount);
        }
Example #17
0
        public void InsertWithUserType()
        {
            var tableName = ObjectName.Parse("APP.test_table");
            var columns   = new[] { "first_name", "last_name", "active", "user_obj" };
            var values    = new List <SqlExpression[]> {
                new SqlExpression[] {
                    SqlExpression.Constant("Antonello"),
                    SqlExpression.Constant("Provenzano"),
                    SqlExpression.Constant(true),
                    SqlExpression.FunctionCall("type1", new SqlExpression[] {
                        SqlExpression.Constant("test1"),
                        SqlExpression.Constant(1),
                    })
                },
                new SqlExpression[] {
                    SqlExpression.Constant("Mart"),
                    SqlExpression.Constant("Roosmaa"),
                    SqlExpression.Constant(false),
                    SqlExpression.FunctionCall("type1", new SqlExpression[] {
                        SqlExpression.Constant("test2"),
                        SqlExpression.Constant(3),
                    })
                }
            };

            var count = AdminQuery.Insert(tableName, columns, values.ToArray());


            Assert.AreEqual(2, count);

            var table = AdminQuery.Access().GetTable(tableName);

            Assert.IsNotNull(table);
            Assert.AreEqual(2, table.RowCount);
        }
Example #18
0
        public void TwoValues_NoColumnes()
        {
            var tableName = ObjectName.Parse("APP.test_table");
            var values    = new List <SqlExpression[]> {
                new SqlExpression[] {
                    SqlExpression.Constant("Antonello"),
                    SqlExpression.Constant("Provenzano"),
                    SqlExpression.Constant(true)
                },
                new SqlExpression[] {
                    SqlExpression.Constant("Mart"),
                    SqlExpression.Constant("Roosmaa"),
                    SqlExpression.Constant(false)
                }
            };

            var count = AdminQuery.Insert(tableName, values.ToArray());


            Assert.AreEqual(2, count);

            var table = AdminQuery.Access().GetTable(tableName);

            Assert.IsNotNull(table);
            Assert.AreEqual(2, table.RowCount);
        }
Example #19
0
        public void RoleFromUser()
        {
            AdminQuery.RevokeRole("test_user", "test_role");

            var inRole = AdminQuery.Access().UserIsInRole("test_user", "test_role");

            Assert.IsFalse(inRole);
        }
Example #20
0
        public void WithNamedArguments()
        {
            var procName = ObjectName.Parse("APP.proc2");
            var arg1     = new InvokeArgument("a", SqlExpression.Constant("Hello"));
            var arg2     = new InvokeArgument("b", SqlExpression.Constant("World!"));

            AdminQuery.Call(procName, arg1, arg2);
        }
        public void Disable()
        {
            AdminQuery.DisableTrigger(triggerName);

            var trigger = (Trigger)AdminQuery.Access().GetObject(DbObjectType.Trigger, triggerName);

            Assert.AreEqual(TriggerStatus.Disabled, trigger.TriggerInfo.Status);
        }
        public void NewRole()
        {
            AdminQuery.CreateRole("db_admin");

            var exists = AdminQuery.Access().RoleExists("db_admin");

            Assert.IsTrue(exists);
        }
Example #23
0
        public void TypicalClode()
        {
            AdminQuery.Close("c1");

            var cursor = (Cursor)AdminQuery.Access().FindObject(new ObjectName("c1"));

            Assert.AreEqual(CursorStatus.Closed, cursor.Status);
        }
Example #24
0
        public void GrantRoleToUser()
        {
            AdminQuery.GrantRole("test_user", "test_role");

            var inRole = AdminQuery.Access().UserIsInRole("test_user", "test_role");

            Assert.IsTrue(inRole);
        }
        private ITable Execute(string s)
        {
            var query  = (SqlQueryExpression)SqlExpression.Parse(s);
            var result = AdminQuery.Select(query);

            result.GetEnumerator().MoveNext();
            return(result.Source);
        }
        public void Existing()
        {
            AdminQuery.DropCallbackTrigger(triggerName);

            var exists = AdminQuery.Access().TriggerExists(new ObjectName(triggerName));

            Assert.IsFalse(exists);
        }
        public void SystemRole()
        {
            Assert.Throws <SecurityException>(() => AdminQuery.DropRole(SystemRoles.SecureAccessRole));

            var exists = AdminQuery.Access().RoleExists(SystemRoles.SecureAccessRole);

            Assert.IsTrue(exists);
        }
Example #28
0
 protected override void OnAfterSetup(string testName)
 {
     AdminQuery.Access().CreateObject(new VariableInfo("a", PrimitiveTypes.Integer(), false));
     AdminQuery.Access().CreateObject(new VariableInfo("b", PrimitiveTypes.Integer(), true)
     {
         DefaultExpression = SqlExpression.Constant(56)
     });
 }
        public void ExistingRole()
        {
            AdminQuery.DropRole("test_role");

            var exists = AdminQuery.Access().RoleExists("test_role");

            Assert.IsFalse(exists);
        }
Example #30
0
        public void DropEmptySchema()
        {
            AdminQuery.DropSchema("test");

            var exists = AdminQuery.Session.Access().SchemaExists("test");

            Assert.IsFalse(exists);
        }