public void OnTableCompositeCreate(IQuery systemQuery)
        {
            // SYSTEM.SEQUENCE_INFO
            var tableInfo = new TableInfo(SequenceManager.SequenceInfoTableName);

            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("schema", PrimitiveTypes.String());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("type", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            systemQuery.Access().CreateTable(tableInfo);

            // SYSTEM.SEQUENCE
            tableInfo = new TableInfo(SequenceManager.SequenceTableName);
            tableInfo.AddColumn("seq_id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("last_value", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("increment", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("minvalue", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("maxvalue", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("start", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("cache", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("cycle", PrimitiveTypes.Boolean());
            tableInfo = tableInfo.AsReadOnly();
            systemQuery.Access().CreateTable(tableInfo);
        }
        static SessionTableContainer()
        {
            // SYSTEM.OPEN_SESSIONS
            OpenSessionsTableInfo = new TableInfo(SystemSchema.OpenSessionsTableName);
            OpenSessionsTableInfo.AddColumn("username", PrimitiveTypes.String());
            OpenSessionsTableInfo.AddColumn("host_string", PrimitiveTypes.String());
            OpenSessionsTableInfo.AddColumn("last_command", PrimitiveTypes.DateTime());
            OpenSessionsTableInfo.AddColumn("time_connected", PrimitiveTypes.DateTime());
            OpenSessionsTableInfo = OpenSessionsTableInfo.AsReadOnly();

            // SYSTEM.SESSION_INFO
            SessionInfoTableInfo = new TableInfo(SystemSchema.SessionInfoTableName);
            SessionInfoTableInfo.AddColumn("var", PrimitiveTypes.String());
            SessionInfoTableInfo.AddColumn("value", PrimitiveTypes.String());
            SessionInfoTableInfo = SessionInfoTableInfo.AsReadOnly();

            // SYSTEM.STATS
            StatisticsTableInfo = new TableInfo(SystemSchema.StatisticsTableName);
            StatisticsTableInfo.AddColumn("stat_name", PrimitiveTypes.String());
            StatisticsTableInfo.AddColumn("value", PrimitiveTypes.String());
            StatisticsTableInfo = StatisticsTableInfo.AsReadOnly();

            IntTableInfo    = new TableInfo[3];
            IntTableInfo[0] = StatisticsTableInfo;
            IntTableInfo[1] = SessionInfoTableInfo;
            IntTableInfo[2] = OpenSessionsTableInfo;
        }
        public SubsetTable(ITable table, int[] columns, ObjectName[] aliases)
            : base(table)
        {
            if (columns.Length != aliases.Length)
            {
                throw new ArgumentException("The number of column offsets and the number of aliases do not match");
            }

            this.columns = columns;
            this.aliases = aliases;

            var parentInfo = Parent.TableInfo;

            tableInfo = new TableInfo(parentInfo.TableName);

            for (int i = 0; i < columns.Length; ++i)
            {
                int mapTo = columns[i];

                var origColumnInfo = Parent.TableInfo.Columns[mapTo];
                var columnInfo     = new ColumnInfo(aliases[i].Name, origColumnInfo.ColumnType)
                {
                    DefaultValue = origColumnInfo.DefaultValue
                };

                tableInfo.Columns.Add(columnInfo);
            }

            tableInfo = tableInfo.AsReadOnly();
        }
Example #4
0
        public void Create()
        {
            // SYSTEM.SEQUENCE_INFO
            var tableInfo = new TableInfo(SystemSchema.SequenceInfoTableName);

            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("schema", PrimitiveTypes.String());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("type", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            Transaction.CreateTable(tableInfo);

            // SYSTEM.SEQUENCE
            tableInfo = new TableInfo(SystemSchema.SequenceTableName);
            tableInfo.AddColumn("seq_id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("last_value", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("increment", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("minvalue", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("maxvalue", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("start", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("cache", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("cycle", PrimitiveTypes.Boolean());
            tableInfo = tableInfo.AsReadOnly();
            Transaction.CreateTable(tableInfo);
        }
Example #5
0
        static SessionTableContainer()
        {
            // SYSTEM.OPEN_SESSIONS
            OpenSessionsTableInfo = new TableInfo(SystemSchema.OpenSessionsTableName);
            OpenSessionsTableInfo.AddColumn("username", PrimitiveTypes.String());
            OpenSessionsTableInfo.AddColumn("host_string", PrimitiveTypes.String());
            OpenSessionsTableInfo.AddColumn("last_command", PrimitiveTypes.DateTime());
            OpenSessionsTableInfo.AddColumn("time_connected", PrimitiveTypes.DateTime());
            OpenSessionsTableInfo = OpenSessionsTableInfo.AsReadOnly();

            // SYSTEM.SESSION_INFO
            SessionInfoTableInfo = new TableInfo(SystemSchema.SessionInfoTableName);
            SessionInfoTableInfo.AddColumn("var", PrimitiveTypes.String());
            SessionInfoTableInfo.AddColumn("value", PrimitiveTypes.String());
            SessionInfoTableInfo = SessionInfoTableInfo.AsReadOnly();

            // SYSTEM.STATS
            StatisticsTableInfo = new TableInfo(SystemSchema.StatisticsTableName);
            StatisticsTableInfo.AddColumn("stat_name", PrimitiveTypes.String());
            StatisticsTableInfo.AddColumn("value", PrimitiveTypes.String());
            StatisticsTableInfo = StatisticsTableInfo.AsReadOnly();

            IntTableInfo = new TableInfo[3];
            IntTableInfo[0] = StatisticsTableInfo;
            IntTableInfo[1] = SessionInfoTableInfo;
            IntTableInfo[2] = OpenSessionsTableInfo;
        }
Example #6
0
            private static TableInfo CreateTableInfo(string schema, string name)
            {
                var tableInfo = new TableInfo(new ObjectName(new ObjectName(schema), name));

                tableInfo.AddColumn("type", PrimitiveTypes.Numeric());
                tableInfo.AddColumn("on_object", PrimitiveTypes.String());
                tableInfo.AddColumn("routine_name", PrimitiveTypes.String());
                tableInfo.AddColumn("param_args", PrimitiveTypes.String());
                tableInfo.AddColumn("owner", PrimitiveTypes.String());

                return(tableInfo.AsReadOnly());
            }
Example #7
0
 public void Create()
 {
     // SYSTEM.SCHEMA_INFO
     var tableInfo = new TableInfo(SystemSchema.SchemaInfoTableName);
     tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
     tableInfo.AddColumn("name", PrimitiveTypes.String());
     tableInfo.AddColumn("type", PrimitiveTypes.String());
     tableInfo.AddColumn("culture", PrimitiveTypes.String());
     tableInfo.AddColumn("other", PrimitiveTypes.String());
     tableInfo = tableInfo.AsReadOnly();
     Transaction.CreateTable(tableInfo);
 }
Example #8
0
 public void OnTableCompositeSetup(IQuery systemQuery)
 {
     var tableInfo = new TableInfo(SystemSchema.GrantsTableName);
     tableInfo.AddColumn("priv_bit", PrimitiveTypes.Numeric());
     tableInfo.AddColumn("object", PrimitiveTypes.Numeric());
     tableInfo.AddColumn("name", PrimitiveTypes.String());
     tableInfo.AddColumn("grantee", PrimitiveTypes.String());
     tableInfo.AddColumn("grant_option", PrimitiveTypes.Boolean());
     tableInfo.AddColumn("granter", PrimitiveTypes.String());
     tableInfo = tableInfo.AsReadOnly();
     systemQuery.Access().CreateSystemTable(tableInfo);
 }
Example #9
0
        private static void OnTableCompositeSetup(IQuery systemQuery)
        {
            var tableInfo = new TableInfo(SystemSchema.GrantsTableName);

            tableInfo.AddColumn("priv_bit", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("object", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("grantee", PrimitiveTypes.String());
            tableInfo.AddColumn("grant_option", PrimitiveTypes.Boolean());
            tableInfo.AddColumn("granter", PrimitiveTypes.String());
            tableInfo = tableInfo.AsReadOnly();
            systemQuery.Access().CreateTable(tableInfo);
        }
Example #10
0
        public void Create()
        {
            // SYSTEM.SCHEMA_INFO
            var tableInfo = new TableInfo(SystemSchema.SchemaInfoTableName);

            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("type", PrimitiveTypes.String());
            tableInfo.AddColumn("culture", PrimitiveTypes.String());
            tableInfo.AddColumn("other", PrimitiveTypes.String());
            tableInfo = tableInfo.AsReadOnly();
            Transaction.CreateTable(tableInfo);
        }
Example #11
0
            private static TableInfo CreateTableInfo(string schema, string name)
            {
                // Create the TableInfo that describes this entry
                var info = new TableInfo(new ObjectName(new ObjectName(schema), name));

                // Add column definitions
                info.AddColumn("type", PrimitiveTypes.String());
                info.AddColumn("location", PrimitiveTypes.String());
                info.AddColumn("return_type", PrimitiveTypes.String());
                info.AddColumn("param_args", PrimitiveTypes.String());
                info.AddColumn("owner", PrimitiveTypes.String());

                return(info.AsReadOnly());
            }
Example #12
0
        private static TableInfo CreateTableInfo(ObjectName schema, string name)
        {
            var info = new TableInfo(new ObjectName(schema, name));

            info.AddColumn("last_value", PrimitiveTypes.Numeric());
            info.AddColumn("current_value", PrimitiveTypes.Numeric());
            info.AddColumn("top_value", PrimitiveTypes.Numeric());
            info.AddColumn("increment_by", PrimitiveTypes.Numeric());
            info.AddColumn("min_value", PrimitiveTypes.Numeric());
            info.AddColumn("max_value", PrimitiveTypes.Numeric());
            info.AddColumn("start", PrimitiveTypes.Numeric());
            info.AddColumn("cache", PrimitiveTypes.Numeric());
            info.AddColumn("cycle", PrimitiveTypes.Boolean());
            info = info.AsReadOnly();
            return(info);
        }
Example #13
0
        private static void CreateTables(IQuery context)
        {
            var tableInfo = new TableInfo(UserManager.UserTableName);

            tableInfo.AddColumn("name", PrimitiveTypes.String());
            // TODO: User table must be completed ...
            tableInfo = tableInfo.AsReadOnly();
            context.Access().CreateTable(tableInfo);

            context.Access().AddPrimaryKey(UserManager.UserTableName, new[] { "name" }, "SYSTEM_USER_PK");

            tableInfo = new TableInfo(UserManager.PasswordTableName);
            tableInfo.AddColumn("user", PrimitiveTypes.String());
            tableInfo.AddColumn("method", PrimitiveTypes.String());
            tableInfo.AddColumn("method_args", PrimitiveTypes.Binary());
            tableInfo.AddColumn("identifier", PrimitiveTypes.String());
            tableInfo = tableInfo.AsReadOnly();
            context.Access().CreateTable(tableInfo);

            tableInfo = new TableInfo(UserManager.UserRoleTableName);
            tableInfo.AddColumn("user", PrimitiveTypes.String());
            tableInfo.AddColumn("role", PrimitiveTypes.String());
            tableInfo.AddColumn("admin", PrimitiveTypes.Boolean());
            tableInfo = tableInfo.AsReadOnly();
            context.Access().CreateTable(tableInfo);

            tableInfo = new TableInfo(UserManager.RoleTableName);
            tableInfo.AddColumn("name", PrimitiveTypes.String(), true);
            tableInfo = tableInfo.AsReadOnly();
            context.Access().CreateTable(tableInfo);

            context.Access().AddPrimaryKey(UserManager.RoleTableName, new[] { "name" }, "SYSTEM_ROLE_PK");

            var fkCol  = new[] { "user" };
            var rfkCol = new[] { "role" };
            var refCol = new[] { "name" };
            const ForeignKeyAction onUpdate = ForeignKeyAction.NoAction;
            const ForeignKeyAction onDelete = ForeignKeyAction.Cascade;

            context.Access().AddForeignKey(UserManager.PasswordTableName, fkCol, UserManager.UserTableName, refCol, onDelete,
                                           onUpdate, "USER_PASSWORD_FK");
            context.Access().AddForeignKey(UserManager.UserRoleTableName, fkCol, UserManager.UserTableName, refCol, onDelete,
                                           onUpdate, "USER_PRIV_FK");
            context.Access().AddForeignKey(UserManager.UserRoleTableName, rfkCol, UserManager.RoleTableName, refCol, onDelete,
                                           onUpdate, "USER_ROLE_FK");
        }
        private static void CreateTables(IQuery context)
        {
            var tableInfo = new TableInfo(UserManager.UserTableName);
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            // TODO: User table must be completed ...
            tableInfo = tableInfo.AsReadOnly();
            context.Access().CreateTable(tableInfo);

            context.Access().AddPrimaryKey(UserManager.UserTableName, new[] { "name" }, "SYSTEM_USER_PK");

            tableInfo = new TableInfo(UserManager.PasswordTableName);
            tableInfo.AddColumn("user", PrimitiveTypes.String());
            tableInfo.AddColumn("method", PrimitiveTypes.String());
            tableInfo.AddColumn("method_args", PrimitiveTypes.Binary());
            tableInfo.AddColumn("identifier", PrimitiveTypes.String());
            tableInfo = tableInfo.AsReadOnly();
            context.Access().CreateTable(tableInfo);

            tableInfo = new TableInfo(UserManager.UserRoleTableName);
            tableInfo.AddColumn("user", PrimitiveTypes.String());
            tableInfo.AddColumn("role", PrimitiveTypes.String());
            tableInfo.AddColumn("admin", PrimitiveTypes.Boolean());
            tableInfo = tableInfo.AsReadOnly();
            context.Access().CreateTable(tableInfo);

            tableInfo = new TableInfo(UserManager.RoleTableName);
            tableInfo.AddColumn("name", PrimitiveTypes.String(), true);
            tableInfo = tableInfo.AsReadOnly();
            context.Access().CreateTable(tableInfo);

            context.Access().AddPrimaryKey(UserManager.RoleTableName, new[] { "name" }, "SYSTEM_ROLE_PK");

            var fkCol = new[] { "user" };
            var rfkCol = new[] { "role" };
            var refCol = new[] { "name" };
            const ForeignKeyAction onUpdate = ForeignKeyAction.NoAction;
            const ForeignKeyAction onDelete = ForeignKeyAction.Cascade;
            context.Access().AddForeignKey(UserManager.PasswordTableName, fkCol, UserManager.UserTableName, refCol, onDelete,
                onUpdate, "USER_PASSWORD_FK");
            context.Access().AddForeignKey(UserManager.UserRoleTableName, fkCol, UserManager.UserTableName, refCol, onDelete,
                onUpdate, "USER_PRIV_FK");
            context.Access().AddForeignKey(UserManager.UserRoleTableName, rfkCol, UserManager.RoleTableName, refCol, onDelete,
                onUpdate, "USER_ROLE_FK");
        }
Example #15
0
        public void OnTableCompositeCreate(IQuery systemQuery)
        {
            // SYSTEM.SEQUENCE_INFO
            var tableInfo = new TableInfo(SequenceManager.SequenceInfoTableName);
            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("schema", PrimitiveTypes.String());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("type", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            systemQuery.Access().CreateTable(tableInfo);

            // SYSTEM.SEQUENCE
            tableInfo = new TableInfo(SequenceManager.SequenceTableName);
            tableInfo.AddColumn("seq_id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("last_value", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("increment", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("minvalue", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("maxvalue", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("start", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("cache", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("cycle", PrimitiveTypes.Boolean());
            tableInfo = tableInfo.AsReadOnly();
            systemQuery.Access().CreateTable(tableInfo);
        }
Example #16
0
        public void CreateTable(TableInfo tableInfo, bool temporary)
        {
            var tableName = tableInfo.TableName;
            if (visibleTables.ContainsKey(tableName))
                throw new InvalidOperationException(String.Format("Table '{0}' already exists.", tableName));

            tableInfo = tableInfo.AsReadOnly();

            var source = Composite.CreateTableSource(tableInfo, temporary);

            // Add this table (and an index set) for this table.
            AddVisibleTable(source, source.CreateIndexSet());

            int tableId = source.TableId;
            Transaction.OnTableCreated(tableId, tableName);

            Transaction.CreateNativeSequence(tableName);
        }
Example #17
0
        static SystemSchema()
        {
            // SYSTEM.TABLE_INFO
            TableInfoTableInfo = new TableInfo(TableInfoTableName);
            TableInfoTableInfo.AddColumn("catalog", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("schema", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("name", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("type", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("other", PrimitiveTypes.String());
            TableInfoTableInfo = TableInfoTableInfo.AsReadOnly();

            // SYSTEM.TABLE_COLUMNS
            TableColumnsTableInfo = new TableInfo(TableColumnsTableName);
            TableColumnsTableInfo.AddColumn("schema", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("table", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("column", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("sql_type", PrimitiveTypes.Numeric());
            TableColumnsTableInfo.AddColumn("type_desc", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("size", PrimitiveTypes.Numeric());
            TableColumnsTableInfo.AddColumn("scale", PrimitiveTypes.Numeric());
            TableColumnsTableInfo.AddColumn("not_null", PrimitiveTypes.Boolean());
            TableColumnsTableInfo.AddColumn("default", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("index_str", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("seq_no", PrimitiveTypes.Numeric());
            TableColumnsTableInfo = TableColumnsTableInfo.AsReadOnly();

            // SYSTEM.VARIABLES
            VariablesTableInfo = new TableInfo(VariablesTableName);
            VariablesTableInfo.AddColumn("var", PrimitiveTypes.String());
            VariablesTableInfo.AddColumn("type", PrimitiveTypes.String());
            VariablesTableInfo.AddColumn("value", PrimitiveTypes.String());
            VariablesTableInfo.AddColumn("constant", PrimitiveTypes.Boolean());
            VariablesTableInfo.AddColumn("not_null", PrimitiveTypes.Boolean());
            VariablesTableInfo.AddColumn("is_set", PrimitiveTypes.Boolean());
            VariablesTableInfo = VariablesTableInfo.AsReadOnly();

            // SYSTEM.PRODUCT_INFO
            ProductInfoTableInfo = new TableInfo(ProductInfoTableName);
            ProductInfoTableInfo.AddColumn("var", PrimitiveTypes.String());
            ProductInfoTableInfo.AddColumn("value", PrimitiveTypes.String());
            ProductInfoTableInfo = ProductInfoTableInfo.AsReadOnly();

            // SYSTEM.STATS
            StatisticsTableInfo = new TableInfo(StatisticsTableName);
            StatisticsTableInfo.AddColumn("stat_name", PrimitiveTypes.String());
            StatisticsTableInfo.AddColumn("value", PrimitiveTypes.String());
            StatisticsTableInfo = StatisticsTableInfo.AsReadOnly();

            // SYSTEM.SQL_TYPES
            SqlTypesTableInfo = new TableInfo(SqlTypesTableName);
            SqlTypesTableInfo.AddColumn("TYPE_NAME", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("DATA_TYPE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("PRECISION", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("LITERAL_PREFIX", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("LITERAL_SUFFIX", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("CREATE_PARAMS", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("NULLABLE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("CASE_SENSITIVE", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("SEARCHABLE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("UNSIGNED_ATTRIBUTE", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("FIXED_PREC_SCALE", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("AUTO_INCREMENT", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("LOCAL_TYPE_NAME", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("MINIMUM_SCALE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("MAXIMUM_SCALE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("SQL_DATA_TYPE", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("SQL_DATETIME_SUB", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("NUM_PREC_RADIX", PrimitiveTypes.Numeric());
            SqlTypesTableInfo = SqlTypesTableInfo.AsReadOnly();

            // SYSTEM.OPEN_SESSIONS
            OpenSessionsTableInfo = new TableInfo(OpenSessionsTableName);
            OpenSessionsTableInfo.AddColumn("username", PrimitiveTypes.String());
            OpenSessionsTableInfo.AddColumn("host_string", PrimitiveTypes.String());
            OpenSessionsTableInfo.AddColumn("last_command", PrimitiveTypes.DateTime());
            OpenSessionsTableInfo.AddColumn("time_connected", PrimitiveTypes.DateTime());
            OpenSessionsTableInfo = OpenSessionsTableInfo.AsReadOnly();

            // CONNECTION_INFO
            SessionInfoTableInfo = new TableInfo(SessionInfoTableName);
            SessionInfoTableInfo.AddColumn("var", PrimitiveTypes.String());
            SessionInfoTableInfo.AddColumn("value", PrimitiveTypes.String());
            SessionInfoTableInfo = SessionInfoTableInfo.AsReadOnly();

            // SYSTEM.PRIVS
            PrivilegesTableInfo = new TableInfo(PrivilegesTableName);
            PrivilegesTableInfo.AddColumn("priv_bit", PrimitiveTypes.Numeric());
            PrivilegesTableInfo.AddColumn("description", PrimitiveTypes.String());
            PrivilegesTableInfo = PrivilegesTableInfo.AsReadOnly();
        }
Example #18
0
        public FunctionTable(ITable table, SqlExpression[] functionList, string[] columnNames, IRequest queryContext)
            : base(queryContext.Context)
        {
            // Make sure we are synchronized over the class.
            lock (typeof(FunctionTable)) {
                uniqueId = uniqueKeySeq;
                ++uniqueKeySeq;
            }

            uniqueId = (uniqueId & 0x0FFFFFFF) | 0x010000000;

            context = queryContext;

            ReferenceTable = table;
            varResolver = table.GetVariableResolver();
            varResolver = varResolver.ForRow(0);

            // Create a DataTableInfo object for this function table.
            funTableInfo = new TableInfo(FunctionTableName);

            expList = new SqlExpression[functionList.Length];
            expInfo = new byte[functionList.Length];

            // Create a new DataColumnInfo for each expression, and work out if the
            // expression is simple or not.
            for (int i = 0; i < functionList.Length; ++i) {
                var expr = functionList[i];
                // Examine the expression and determine if it is simple or not
                if (expr.IsConstant() && !expr.HasAggregate(context)) {
                    // If expression is a constant, solve it
                    var result = expr.Evaluate(context, null);
                    if (result.ExpressionType != SqlExpressionType.Constant)
                        throw new InvalidOperationException();

                    expr = result;
                    expList[i] = expr;
                    expInfo[i] = 1;
                } else {
                    // Otherwise must be dynamic
                    expList[i] = expr;
                    expInfo[i] = 0;
                }

                // Make the column info
                funTableInfo.AddColumn(columnNames[i], expr.ReturnType(context, varResolver));
            }

            // Make sure the table info isn't changed from this point on.
            funTableInfo = funTableInfo.AsReadOnly();

            // routine tables are the size of the referring table.
            rowCount = table.RowCount;

            // Set schemes to 'blind search'.
            SetupIndexes(DefaultIndexTypes.BlindSearch);
        }
Example #19
0
        public void CreateTable(TableInfo tableInfo, bool temporary)
        {
            var tableName = tableInfo.TableName;
            var source = FindVisibleTable(tableName, false);
            if (source != null)
                throw new InvalidOperationException(String.Format("Table '{0}' already exists.", tableName));

            tableInfo = tableInfo.AsReadOnly();

            source = Composite.CreateTableSource(tableInfo, temporary);

            // Add this table (and an index set) for this table.
            AddVisibleTable(source, source.CreateIndexSet());

            int tableId = source.TableId;
            Transaction.Registry.RegisterEvent(new TableCreatedEvent(tableId, tableName));

            Transaction.CreateNativeSequence(tableName);
        }
Example #20
0
        public void Create()
        {
            // SYSTEM.SEQUENCE_INFO
            var tableInfo = new TableInfo(SystemSchema.SequenceInfoTableName);
            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("schema", PrimitiveTypes.String());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("type", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            Transaction.CreateTable(tableInfo);

            // SYSTEM.SEQUENCE
            tableInfo = new TableInfo(SystemSchema.SequenceTableName);
            tableInfo.AddColumn("seq_id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("last_value", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("increment", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("minvalue", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("maxvalue", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("start", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("cache", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("cycle", PrimitiveTypes.Boolean());
            tableInfo = tableInfo.AsReadOnly();
            Transaction.CreateTable(tableInfo);
        }
Example #21
0
            private static TableInfo CreateTableInfo(string schema, string name)
            {
                var tableInfo = new TableInfo(new ObjectName(new ObjectName(schema), name));

                tableInfo.AddColumn("type", PrimitiveTypes.Numeric());
                tableInfo.AddColumn("on_object", PrimitiveTypes.String());
                tableInfo.AddColumn("routine_name", PrimitiveTypes.String());
                tableInfo.AddColumn("param_args", PrimitiveTypes.String());
                tableInfo.AddColumn("owner", PrimitiveTypes.String());

                return tableInfo.AsReadOnly();
            }
Example #22
0
 public TemporaryTable(IContext context, TableInfo tableInfo)
     : base(context)
 {
     this.tableInfo = tableInfo.AsReadOnly();
     rows = new List<DataObject[]>();
 }
        private void SetColumnMap(int[] mapping)
        {
            reverseColumnMap = new int[Parent.ColumnCount()];
            for (int i = 0; i < reverseColumnMap.Length; ++i) {
                reverseColumnMap[i] = -1;
            }

            var parentInfo = Parent.TableInfo;
            subsetTableInfo = new TableInfo(parentInfo.TableName);

            for (int i = 0; i < mapping.Length; ++i) {
                int mapTo = mapping[i];

                var origColumnInfo = Parent.TableInfo[mapTo];
                var columnInfo = new ColumnInfo(aliases[i].Name, origColumnInfo.ColumnType) {
                    DefaultExpression = origColumnInfo.DefaultExpression,
                    IsNotNull = origColumnInfo.IsNotNull,
                    IndexType = origColumnInfo.IndexType
                };

                subsetTableInfo.AddColumnSafe(columnInfo);

                reverseColumnMap[mapTo] = i;
            }

            subsetTableInfo = subsetTableInfo.AsReadOnly();
        }
        static TransactionTableContainer()
        {
            // SYSTEM.TABLE_INFO
            TableInfoTableInfo = new TableInfo(SystemSchema.TableInfoTableName);
            TableInfoTableInfo.AddColumn("catalog", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("schema", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("name", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("type", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("other", PrimitiveTypes.String());
            TableInfoTableInfo = TableInfoTableInfo.AsReadOnly();

            // SYSTEM.TABLE_COLUMNS
            TableColumnsTableInfo = new TableInfo(SystemSchema.TableColumnsTableName);
            TableColumnsTableInfo.AddColumn("schema", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("table", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("column", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("sql_type", PrimitiveTypes.Numeric());
            TableColumnsTableInfo.AddColumn("type_desc", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("size", PrimitiveTypes.Numeric());
            TableColumnsTableInfo.AddColumn("scale", PrimitiveTypes.Numeric());
            TableColumnsTableInfo.AddColumn("not_null", PrimitiveTypes.Boolean());
            TableColumnsTableInfo.AddColumn("default", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("index_str", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("seq_no", PrimitiveTypes.Numeric());
            TableColumnsTableInfo = TableColumnsTableInfo.AsReadOnly();

            // SYSTEM.VARIABLES
            VariablesTableInfo = new TableInfo(SystemSchema.VariablesTableName);
            VariablesTableInfo.AddColumn("var", PrimitiveTypes.String());
            VariablesTableInfo.AddColumn("type", PrimitiveTypes.String());
            VariablesTableInfo.AddColumn("value", PrimitiveTypes.String());
            VariablesTableInfo.AddColumn("constant", PrimitiveTypes.Boolean());
            VariablesTableInfo.AddColumn("not_null", PrimitiveTypes.Boolean());
            VariablesTableInfo.AddColumn("is_set", PrimitiveTypes.Boolean());
            VariablesTableInfo = VariablesTableInfo.AsReadOnly();

            // SYSTEM.PRODUCT_INFO
            ProductInfoTableInfo = new TableInfo(SystemSchema.ProductInfoTableName);
            ProductInfoTableInfo.AddColumn("var", PrimitiveTypes.String());
            ProductInfoTableInfo.AddColumn("value", PrimitiveTypes.String());
            ProductInfoTableInfo = ProductInfoTableInfo.AsReadOnly();

            // SYSTEM.SQL_TYPES
            SqlTypesTableInfo = new TableInfo(SystemSchema.SqlTypesTableName);
            SqlTypesTableInfo.AddColumn("TYPE_NAME", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("DATA_TYPE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("PRECISION", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("LITERAL_PREFIX", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("LITERAL_SUFFIX", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("CREATE_PARAMS", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("NULLABLE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("CASE_SENSITIVE", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("SEARCHABLE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("UNSIGNED_ATTRIBUTE", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("FIXED_PREC_SCALE", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("AUTO_INCREMENT", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("LOCAL_TYPE_NAME", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("MINIMUM_SCALE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("MAXIMUM_SCALE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("SQL_DATA_TYPE", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("SQL_DATETIME_SUB", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("NUM_PREC_RADIX", PrimitiveTypes.Numeric());
            SqlTypesTableInfo = SqlTypesTableInfo.AsReadOnly();

            // SYSTEM.PRIVS
            PrivilegesTableInfo = new TableInfo(SystemSchema.PrivilegesTableName);
            PrivilegesTableInfo.AddColumn("priv_bit", PrimitiveTypes.Numeric());
            PrivilegesTableInfo.AddColumn("description", PrimitiveTypes.String());
            PrivilegesTableInfo = PrivilegesTableInfo.AsReadOnly();

            IntTableInfo = new TableInfo[6];
            IntTableInfo[0] = TableInfoTableInfo;
            IntTableInfo[1] = TableColumnsTableInfo;
            IntTableInfo[2] = ProductInfoTableInfo;
            IntTableInfo[3] = VariablesTableInfo;
            IntTableInfo[4] = SqlTypesTableInfo;
            IntTableInfo[5] = PrivilegesTableInfo;
        }
        static TransactionTableContainer()
        {
            // SYSTEM.TABLE_INFO
            TableInfoTableInfo = new TableInfo(SystemSchema.TableInfoTableName);
            TableInfoTableInfo.AddColumn("catalog", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("schema", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("name", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("type", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("other", PrimitiveTypes.String());
            TableInfoTableInfo = TableInfoTableInfo.AsReadOnly();

            // SYSTEM.TABLE_COLUMNS
            TableColumnsTableInfo = new TableInfo(SystemSchema.TableColumnsTableName);
            TableColumnsTableInfo.AddColumn("schema", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("table", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("column", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("sql_type", PrimitiveTypes.Numeric());
            TableColumnsTableInfo.AddColumn("type_desc", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("size", PrimitiveTypes.Numeric());
            TableColumnsTableInfo.AddColumn("scale", PrimitiveTypes.Numeric());
            TableColumnsTableInfo.AddColumn("not_null", PrimitiveTypes.Boolean());
            TableColumnsTableInfo.AddColumn("default", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("index_str", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("seq_no", PrimitiveTypes.Numeric());
            TableColumnsTableInfo = TableColumnsTableInfo.AsReadOnly();

            // SYSTEM.VARIABLES
            VariablesTableInfo = new TableInfo(SystemSchema.VariablesTableName);
            VariablesTableInfo.AddColumn("var", PrimitiveTypes.String());
            VariablesTableInfo.AddColumn("type", PrimitiveTypes.String());
            VariablesTableInfo.AddColumn("value", PrimitiveTypes.String());
            VariablesTableInfo.AddColumn("constant", PrimitiveTypes.Boolean());
            VariablesTableInfo.AddColumn("not_null", PrimitiveTypes.Boolean());
            VariablesTableInfo.AddColumn("is_set", PrimitiveTypes.Boolean());
            VariablesTableInfo = VariablesTableInfo.AsReadOnly();

            // SYSTEM.PRODUCT_INFO
            ProductInfoTableInfo = new TableInfo(SystemSchema.ProductInfoTableName);
            ProductInfoTableInfo.AddColumn("var", PrimitiveTypes.String());
            ProductInfoTableInfo.AddColumn("value", PrimitiveTypes.String());
            ProductInfoTableInfo = ProductInfoTableInfo.AsReadOnly();

            // SYSTEM.SQL_TYPES
            SqlTypesTableInfo = new TableInfo(SystemSchema.SqlTypesTableName);
            SqlTypesTableInfo.AddColumn("TYPE_NAME", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("DATA_TYPE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("PRECISION", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("LITERAL_PREFIX", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("LITERAL_SUFFIX", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("CREATE_PARAMS", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("NULLABLE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("CASE_SENSITIVE", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("SEARCHABLE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("UNSIGNED_ATTRIBUTE", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("FIXED_PREC_SCALE", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("AUTO_INCREMENT", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("LOCAL_TYPE_NAME", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("MINIMUM_SCALE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("MAXIMUM_SCALE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("SQL_DATA_TYPE", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("SQL_DATETIME_SUB", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("NUM_PREC_RADIX", PrimitiveTypes.Numeric());
            SqlTypesTableInfo = SqlTypesTableInfo.AsReadOnly();

            // SYSTEM.PRIVS
            PrivilegesTableInfo = new TableInfo(SystemSchema.PrivilegesTableName);
            PrivilegesTableInfo.AddColumn("priv_bit", PrimitiveTypes.Numeric());
            PrivilegesTableInfo.AddColumn("description", PrimitiveTypes.String());
            PrivilegesTableInfo = PrivilegesTableInfo.AsReadOnly();

            IntTableInfo    = new TableInfo[6];
            IntTableInfo[0] = TableInfoTableInfo;
            IntTableInfo[1] = TableColumnsTableInfo;
            IntTableInfo[2] = ProductInfoTableInfo;
            IntTableInfo[3] = VariablesTableInfo;
            IntTableInfo[4] = SqlTypesTableInfo;
            IntTableInfo[5] = PrivilegesTableInfo;
        }
Example #26
0
        public bool AlterTable(TableInfo tableInfo)
        {
            tableInfo = tableInfo.AsReadOnly();

            var tableName = tableInfo.TableName;

            // The current schema context is the schema of the table name
            string currentSchema = tableName.Parent.Name;
            using (var session = new SystemSession(Transaction, currentSchema)) {
                using (var context = session.CreateQuery()) {

                    // Get the next unique id of the unaltered table.
                    var nextId = NextUniqueId(tableName);

                    // Drop the current table
                    var cTable = GetTable(tableName);
                    var droppedTableId = cTable.TableInfo.Id;

                    DropTable(tableName);

                    // And create the table table
                    CreateTable(tableInfo);

                    var alteredTable = GetMutableTable(tableName);
                    var source = FindVisibleTable(tableName, false);
                    int alteredTableId = source.TableId;

                    // Set the sequence id of the table
                    source.SetUniqueId(nextId.ToInt64());

                    // Work out which columns we have to copy to where
                    int[] colMap = new int[tableInfo.ColumnCount];
                    var origTd = cTable.TableInfo;
                    for (int i = 0; i < colMap.Length; ++i) {
                        string colName = tableInfo[i].ColumnName;
                        colMap[i] = origTd.IndexOfColumn(colName);
                    }

                    // First move all the rows from the old table to the new table,
                    // This does NOT update the indexes.
                    var e = cTable.GetEnumerator();
                    while (e.MoveNext()) {
                        int rowIndex = e.Current.RowId.RowNumber;
                        var dataRow = alteredTable.NewRow();
                        for (int i = 0; i < colMap.Length; ++i) {
                            int col = colMap[i];
                            if (col != -1) {
                                dataRow.SetValue(i, cTable.GetValue(rowIndex, col));
                            }
                        }

                        dataRow.SetDefault(context);

                        // Note we use a low level 'AddRow' method on the master table
                        // here.  This does not touch the table indexes.  The indexes are
                        // built later.
                        int newRowNumber = source.AddRow(dataRow);

                        // Set the record as committed added
                        source.WriteRecordState(newRowNumber, RecordState.CommittedAdded);
                    }

                    // TODO: We need to copy any existing index definitions that might
                    //   have been set on the table being altered.

                    // Rebuild the indexes in the new master table,
                    source.BuildIndexes();

                    // Get the snapshot index set on the new table and set it here
                    SetIndexSetForTable(source, source.CreateIndexSet());

                    // Flush this out of the table cache
                    FlushTableCache(tableName);

                    // Ensure the native sequence generator exists...
                    Transaction.RemoveNativeSequence(tableName);
                    Transaction.CreateNativeSequence(tableName);

                    // Notify that this database object has been successfully dropped and
                    // created.
                    Transaction.Registry.RegisterEvent(new TableDroppedEvent(droppedTableId, tableName));
                    Transaction.Registry.RegisterEvent(new TableCreatedEvent(alteredTableId, tableName));

                    return true;
                }
            }
        }
Example #27
0
        protected virtual void Init(IEnumerable<ITable> tables)
        {
            var tablesArray = tables.ToArray();
            referenceList = tablesArray;

            int colCount = ColumnCount;
            indexes = new ColumnIndex[colCount];

            vtTableInfo = new TableInfo(new ObjectName("#VIRTUAL TABLE#"));

            // Generate look up tables for column_table and column_filter information

            columnTable = new int[colCount];
            columnFilter = new int[colCount];

            int index = 0;
            for (int i = 0; i < referenceList.Length; ++i) {
                var curTable = referenceList[i];
                var curTableInfo = curTable.TableInfo;
                int refColCount = curTable.ColumnCount();

                // For each column
                for (int n = 0; n < refColCount; ++n) {
                    columnFilter[index] = n;
                    columnTable[index] = i;
                    ++index;

                    // Add this column to the data table info of this table.
                    var columnInfo = curTableInfo[n];
                    var newColumnInfo = new ColumnInfo(columnInfo.ColumnName, columnInfo.ColumnType) {
                        DefaultExpression = columnInfo.DefaultExpression,
                        IsNotNull = columnInfo.IsNotNull,
                        IndexType = columnInfo.IndexType
                    };

                    vtTableInfo.AddColumnSafe(newColumnInfo);
                }
            }

            vtTableInfo = vtTableInfo.AsReadOnly();
        }
Example #28
0
 public static TemporaryTable SingleColumnTable(IContext database, string columnName, SqlType columnType)
 {
     var tableInfo = new TableInfo(new ObjectName("single"));
     tableInfo.AddColumn(columnName, columnType);
     tableInfo = tableInfo.AsReadOnly();
     return new TemporaryTable(database, tableInfo);
 }
Example #29
0
        static SystemSchema()
        {
            // SYSTEM.TABLE_INFO
            TableInfoTableInfo = new TableInfo(TableInfoTableName);
            TableInfoTableInfo.AddColumn("catalog", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("schema", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("name", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("type", PrimitiveTypes.String());
            TableInfoTableInfo.AddColumn("other", PrimitiveTypes.String());
            TableInfoTableInfo = TableInfoTableInfo.AsReadOnly();

            // SYSTEM.TABLE_COLUMNS
            TableColumnsTableInfo = new TableInfo(TableColumnsTableName);
            TableColumnsTableInfo.AddColumn("schema", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("table", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("column", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("sql_type", PrimitiveTypes.Numeric());
            TableColumnsTableInfo.AddColumn("type_desc", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("size", PrimitiveTypes.Numeric());
            TableColumnsTableInfo.AddColumn("scale", PrimitiveTypes.Numeric());
            TableColumnsTableInfo.AddColumn("not_null", PrimitiveTypes.Boolean());
            TableColumnsTableInfo.AddColumn("default", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("index_str", PrimitiveTypes.String());
            TableColumnsTableInfo.AddColumn("seq_no", PrimitiveTypes.Numeric());
            TableColumnsTableInfo = TableColumnsTableInfo.AsReadOnly();

            // SYSTEM.VARIABLES
            VariablesTableInfo = new TableInfo(VariablesTableName);
            VariablesTableInfo.AddColumn("var", PrimitiveTypes.String());
            VariablesTableInfo.AddColumn("type", PrimitiveTypes.String());
            VariablesTableInfo.AddColumn("value", PrimitiveTypes.String());
            VariablesTableInfo.AddColumn("constant", PrimitiveTypes.Boolean());
            VariablesTableInfo.AddColumn("not_null", PrimitiveTypes.Boolean());
            VariablesTableInfo.AddColumn("is_set", PrimitiveTypes.Boolean());
            VariablesTableInfo = VariablesTableInfo.AsReadOnly();

            // SYSTEM.PRODUCT_INFO
            ProductInfoTableInfo = new TableInfo(ProductInfoTableName);
            ProductInfoTableInfo.AddColumn("var", PrimitiveTypes.String());
            ProductInfoTableInfo.AddColumn("value", PrimitiveTypes.String());
            ProductInfoTableInfo = ProductInfoTableInfo.AsReadOnly();

            // SYSTEM.STATS
            StatisticsTableInfo = new TableInfo(StatisticsTableName);
            StatisticsTableInfo.AddColumn("stat_name", PrimitiveTypes.String());
            StatisticsTableInfo.AddColumn("value", PrimitiveTypes.String());
            StatisticsTableInfo = StatisticsTableInfo.AsReadOnly();

            // SYSTEM.SQL_TYPES
            SqlTypesTableInfo = new TableInfo(SqlTypesTableName);
            SqlTypesTableInfo.AddColumn("TYPE_NAME", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("DATA_TYPE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("PRECISION", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("LITERAL_PREFIX", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("LITERAL_SUFFIX", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("CREATE_PARAMS", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("NULLABLE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("CASE_SENSITIVE", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("SEARCHABLE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("UNSIGNED_ATTRIBUTE", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("FIXED_PREC_SCALE", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("AUTO_INCREMENT", PrimitiveTypes.Boolean());
            SqlTypesTableInfo.AddColumn("LOCAL_TYPE_NAME", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("MINIMUM_SCALE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("MAXIMUM_SCALE", PrimitiveTypes.Numeric());
            SqlTypesTableInfo.AddColumn("SQL_DATA_TYPE", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("SQL_DATETIME_SUB", PrimitiveTypes.String());
            SqlTypesTableInfo.AddColumn("NUM_PREC_RADIX", PrimitiveTypes.Numeric());
            SqlTypesTableInfo = SqlTypesTableInfo.AsReadOnly();

            // SYSTEM.OPEN_SESSIONS
            OpenSessionsTableInfo = new TableInfo(OpenSessionsTableName);
            OpenSessionsTableInfo.AddColumn("username", PrimitiveTypes.String());
            OpenSessionsTableInfo.AddColumn("host_string", PrimitiveTypes.String());
            OpenSessionsTableInfo.AddColumn("last_command", PrimitiveTypes.DateTime());
            OpenSessionsTableInfo.AddColumn("time_connected", PrimitiveTypes.DateTime());
            OpenSessionsTableInfo = OpenSessionsTableInfo.AsReadOnly();

            // SYSTEM.SESSION_INFO
            SessionInfoTableInfo = new TableInfo(SessionInfoTableName);
            SessionInfoTableInfo.AddColumn("var", PrimitiveTypes.String());
            SessionInfoTableInfo.AddColumn("value", PrimitiveTypes.String());
            SessionInfoTableInfo = SessionInfoTableInfo.AsReadOnly();

            // SYSTEM.PRIVS
            PrivilegesTableInfo = new TableInfo(PrivilegesTableName);
            PrivilegesTableInfo.AddColumn("priv_bit", PrimitiveTypes.Numeric());
            PrivilegesTableInfo.AddColumn("description", PrimitiveTypes.String());
            PrivilegesTableInfo = PrivilegesTableInfo.AsReadOnly();
        }
Example #30
0
            private static TableInfo CreateTableInfo(string schema, string name)
            {
                // Create the TableInfo that describes this entry
                var info = new TableInfo(new ObjectName(new ObjectName(schema), name));

                // Add column definitions
                info.AddColumn("type", PrimitiveTypes.String());
                info.AddColumn("location", PrimitiveTypes.String());
                info.AddColumn("return_type", PrimitiveTypes.String());
                info.AddColumn("param_args", PrimitiveTypes.String());
                info.AddColumn("owner", PrimitiveTypes.String());

                return info.AsReadOnly();
            }
Example #31
0
        private static void CreateSecurityTables(IQuery context)
        {
            var tableInfo = new TableInfo(UserTableName);

            tableInfo.AddColumn("name", PrimitiveTypes.String());
            // TODO: User table must be completed ...
            tableInfo = tableInfo.AsReadOnly();
            context.CreateSystemTable(tableInfo);

            context.AddPrimaryKey(UserTableName, new [] { "name" }, "SYSTEM_USER_PK");

            tableInfo = new TableInfo(PasswordTableName);
            tableInfo.AddColumn("user", PrimitiveTypes.String());
            tableInfo.AddColumn("method", PrimitiveTypes.String());
            tableInfo.AddColumn("method_args", PrimitiveTypes.Binary());
            tableInfo.AddColumn("identifier", PrimitiveTypes.String());
            tableInfo = tableInfo.AsReadOnly();
            context.CreateSystemTable(tableInfo);

            tableInfo = new TableInfo(UserGroupTableName);
            tableInfo.AddColumn("user", PrimitiveTypes.String());
            tableInfo.AddColumn("group", PrimitiveTypes.String());
            tableInfo.AddColumn("admin", PrimitiveTypes.Boolean());
            tableInfo = tableInfo.AsReadOnly();
            context.CreateSystemTable(tableInfo);

            tableInfo = new TableInfo(GroupsTableName);
            tableInfo.AddColumn("name", PrimitiveTypes.String(), true);
            tableInfo = tableInfo.AsReadOnly();
            context.CreateSystemTable(tableInfo);

            context.AddPrimaryKey(GroupsTableName, new[] { "name" }, "SYSTEM_GROUP_PK");

            tableInfo = new TableInfo(UserGrantsTableName);
            tableInfo.AddColumn("priv_bit", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("object", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("user", PrimitiveTypes.String());
            tableInfo.AddColumn("grant_option", PrimitiveTypes.Boolean());
            tableInfo.AddColumn("granter", PrimitiveTypes.String());
            tableInfo = tableInfo.AsReadOnly();
            context.CreateSystemTable(tableInfo);

            tableInfo = new TableInfo(GroupGrantsTable);
            tableInfo.AddColumn("priv_bit", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("object", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("group", PrimitiveTypes.String());
            tableInfo.AddColumn("grant_option", PrimitiveTypes.Boolean());
            tableInfo.AddColumn("granter", PrimitiveTypes.String());

            var fkCol  = new[] { "user" };
            var gfkCol = new[] { "group" };
            var refCol = new[] { "name" };
            const ForeignKeyAction onUpdate = ForeignKeyAction.NoAction;
            const ForeignKeyAction onDelete = ForeignKeyAction.Cascade;

            context.AddForeignKey(PasswordTableName, fkCol, UserTableName, refCol, onDelete, onUpdate, "USER_PASSWORD_FK");
            context.AddForeignKey(UserGroupTableName, fkCol, UserTableName, refCol, onDelete, onUpdate, "USER_PRIV_FK");
            context.AddForeignKey(UserGroupTableName, gfkCol, GroupsTableName, refCol, onDelete, onUpdate, "USER_GROUP_FK");
            context.AddForeignKey(UserGrantsTableName, fkCol, UserTableName, refCol, onDelete, onUpdate, "USER_GRANTS_FK");
            context.AddForeignKey(GroupGrantsTable, gfkCol, GroupsTableName, refCol, onDelete, onUpdate, "GROUP_GRANTS_FK");
        }
Example #32
0
        private static void CreateSecurityTables(IQueryContext context)
        {
            var tableInfo = new TableInfo(UserTableName);
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            // TODO: User table must be completed ...
            tableInfo = tableInfo.AsReadOnly();
            context.CreateTable(tableInfo);

            context.AddPrimaryKey(UserTableName, new []{"name"}, "SYSTEM_USER_PK");

            tableInfo = new TableInfo(PasswordTableName);
            tableInfo.AddColumn("user", PrimitiveTypes.String());
            tableInfo.AddColumn("type", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("hash", PrimitiveTypes.String());
            tableInfo.AddColumn("salt", PrimitiveTypes.String());
            tableInfo.AddColumn("hash_algorithm", PrimitiveTypes.String());
            tableInfo = tableInfo.AsReadOnly();
            context.CreateTable(tableInfo);

            tableInfo = new TableInfo(UserPrivilegesTableName);
            tableInfo.AddColumn("user", PrimitiveTypes.String());
            tableInfo.AddColumn("group", PrimitiveTypes.String());
            tableInfo = tableInfo.AsReadOnly();
            context.CreateTable(tableInfo);

            tableInfo = new TableInfo(UserConnectPrivilegesTableName);
            tableInfo.AddColumn("user", PrimitiveTypes.String());
            tableInfo.AddColumn("protocol", PrimitiveTypes.String());
            tableInfo.AddColumn("host", PrimitiveTypes.String());
            tableInfo.AddColumn("access", PrimitiveTypes.Boolean());
            tableInfo = tableInfo.AsReadOnly();
            context.CreateTable(tableInfo);

            tableInfo = new TableInfo(UserGrantsTableName);
            tableInfo.AddColumn("priv_bit", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("object", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("user", PrimitiveTypes.String());
            tableInfo.AddColumn("grant_option", PrimitiveTypes.Boolean());
            tableInfo.AddColumn("granter", PrimitiveTypes.String());
            tableInfo = tableInfo.AsReadOnly();
            context.CreateTable(tableInfo);

            var fkCol = new[] {"user"};
            var refCol = new[] {"name"};
            const ForeignKeyAction onUpdate = ForeignKeyAction.NoAction;
            const ForeignKeyAction onDelete = ForeignKeyAction.Cascade;
            context.AddForeignKey(PasswordTableName, fkCol, UserTableName, refCol, onDelete, onUpdate, "USER_PASSWORD_FK");
            context.AddForeignKey(UserPrivilegesTableName, fkCol, UserTableName, refCol, onDelete, onUpdate, "USER_PRIV_FK");
            context.AddForeignKey(UserConnectPrivilegesTableName, fkCol, UserTableName, refCol, onDelete, onUpdate, "USER_CONNPRIV_FK");
            context.AddForeignKey(UserGrantsTableName, fkCol, UserTableName, refCol, onDelete, onUpdate, "USER_GRANTS_FK");
        }
Example #33
0
 private static TableInfo CreateTableInfo(ObjectName schema, string name)
 {
     var info = new TableInfo(new ObjectName(schema, name));
     info.AddColumn("last_value", PrimitiveTypes.Numeric());
     info.AddColumn("current_value", PrimitiveTypes.Numeric());
     info.AddColumn("top_value", PrimitiveTypes.Numeric());
     info.AddColumn("increment_by", PrimitiveTypes.Numeric());
     info.AddColumn("min_value", PrimitiveTypes.Numeric());
     info.AddColumn("max_value", PrimitiveTypes.Numeric());
     info.AddColumn("start", PrimitiveTypes.Numeric());
     info.AddColumn("cache", PrimitiveTypes.Numeric());
     info.AddColumn("cycle", PrimitiveTypes.Boolean());
     info = info.AsReadOnly();
     return info;
 }
Example #34
0
        public void Create()
        {
            // SYSTEM.PKEY_INFO
            var tableInfo = new TableInfo(SystemSchema.PrimaryKeyInfoTableName);
            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("schema", PrimitiveTypes.String());
            tableInfo.AddColumn("table", PrimitiveTypes.String());
            tableInfo.AddColumn("deferred", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            Transaction.CreateTable(tableInfo);

            // SYSTEM.PKEY_COLS
            tableInfo = new TableInfo(SystemSchema.PrimaryKeyColumnsTableName);
            tableInfo.AddColumn("pk_id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("column", PrimitiveTypes.String());
            tableInfo.AddColumn("seq_no", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            Transaction.CreateTable(tableInfo);

            // SYSTEM.FKEY_INFO
            tableInfo = new TableInfo(SystemSchema.ForeignKeyInfoTableName);
            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("schema", PrimitiveTypes.String());
            tableInfo.AddColumn("table", PrimitiveTypes.String());
            tableInfo.AddColumn("ref_schema", PrimitiveTypes.String());
            tableInfo.AddColumn("ref_table", PrimitiveTypes.String());
            tableInfo.AddColumn("update_rule", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("delete_rule", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("deferred", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            Transaction.CreateTable(tableInfo);

            // SYSTEM.FKEY_COLS
            tableInfo = new TableInfo(SystemSchema.ForeignKeyColumnsTableName);
            tableInfo.AddColumn("fk_id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("fcolumn", PrimitiveTypes.String());
            tableInfo.AddColumn("pcolumn", PrimitiveTypes.String());
            tableInfo.AddColumn("seq_no", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            Transaction.CreateTable(tableInfo);

            // SYSTEM.UNIQUE_INFO
            tableInfo = new TableInfo(SystemSchema.UniqueKeyInfoTableName);
            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("schema", PrimitiveTypes.String());
            tableInfo.AddColumn("table", PrimitiveTypes.String());
            tableInfo.AddColumn("deferred", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            Transaction.CreateTable(tableInfo);

            // SYSTEM.UNIQUE_COLS
            tableInfo = new TableInfo(SystemSchema.UniqueKeyColumnsTableName);
            tableInfo.AddColumn("un_id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("column", PrimitiveTypes.String());
            tableInfo.AddColumn("seq_no", PrimitiveTypes.Numeric());
            tableInfo = tableInfo.AsReadOnly();
            Transaction.CreateTable(tableInfo);

            // SYSTEM.CHECK_INFO
            tableInfo = new TableInfo(SystemSchema.CheckInfoTableName);
            tableInfo.AddColumn("id", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("name", PrimitiveTypes.String());
            tableInfo.AddColumn("schema", PrimitiveTypes.String());
            tableInfo.AddColumn("table", PrimitiveTypes.String());
            tableInfo.AddColumn("expression", PrimitiveTypes.String());
            tableInfo.AddColumn("deferred", PrimitiveTypes.Numeric());
            tableInfo.AddColumn("serialized_expression", PrimitiveTypes.Binary());
            tableInfo = tableInfo.AsReadOnly();
            Transaction.CreateTable(tableInfo);
        }