Exemplo n.º 1
0
        // get the type of a relation from some persistence store
        // Used during compilation or startup -- if successful, variable will be created with flags
        // Then use AddRelvar to import the value
        public DataType GetRelvarType(string source, string what)
        {
            var islinked = (source == DefaultDatabaseSource);

            if (islinked)
            {
                if (SqlFlag)
                {
                    var heading = SqlTarget.Current.GetTableHeading(what);
                    return((heading == null) ? null : DataTypeRelation.Get(heading));
                }
                else
                {
                    var type = Persist.Create(DatabasePath, false).Peek(what);
                    return(type);
                }
            }
            else
            {
                var heading = DataSourceStream.Create(source, SourcePath).Peek(what);
                if (heading != null)
                {
                    return(DataTypeRelation.Get(heading));
                }
            }
            return(null);
        }
Exemplo n.º 2
0
        // Get the value of a relation by importing some other format
        // Entry previously created by peeking
        public bool ImportRelvar(string source, string name, string what, string locator)
        {
            var entry = GlobalVars.FindEntry(name);

            Logger.Assert(entry != null, name);
            var heading = entry.DataType.Heading;
            var stream  = DataSourceStream.Create(source, locator);
            var table   = stream.Read(what, heading);

            if (table == null || !heading.Equals(table.Heading))
            {
                throw ProgramError.Fatal("Catalog", "{0} table not found: '{1}'", source, stream.GetPath(what));
            }
            GlobalVars.SetValue(entry, RelationValue.Create(table));
            return(true);
        }