Search in sources :

Example 21 with Ty

use of catdata.aql.exp.TyExpRaw.Ty in project fql by CategoricalData.

the class SqlTypeSide method jps.

private static Map<Ty, String> jps() {
    Map<Ty, String> m = new HashMap<>();
    // TODO AQL
    m.put(new Ty("Longvarbinary"), "return input[0]");
    // TODO AQL
    m.put(new Ty("Varbinary"), "return input[0]");
    // TODO AQL
    m.put(new Ty("Binary"), "return input[0]");
    /*
		m.put("Date", "return input[0]");
		m.put("Time", "return input[0]");
		m.put("Timestamp", "return input[0]");
		*/
    m.put(new Ty("Clob"), "return input[0]");
    // java.sql.Date.valueOf(input[0])");
    m.put(new Ty("Date"), "return input[0]");
    m.put(new Ty("Time"), "return java.sql.Time.valueOf(input[0])");
    m.put(new Ty("Timestamp"), "return java.sql.Timestamp.valueOf(input[0])");
    m.put(new Ty("Bigint"), "return new java.lang.Long(input[0])");
    m.put(new Ty("Boolean"), "return new java.lang.Boolean(input[0])");
    m.put(new Ty("Bool"), "return new java.lang.Boolean(input[0])");
    // TODO aql
    m.put(new Ty("Char"), "return input[0]");
    m.put(new Ty("Bit"), "return new java.lang.Boolean(input[0])");
    m.put(new Ty("Double"), "return new java.lang.Double(input[0])");
    m.put(new Ty("Doubleprecision"), "return new java.lang.Double(input[0])");
    m.put(new Ty("Numeric"), "return new java.math.BigDecimal(input[0])");
    m.put(new Ty("Decimal"), "return new java.math.BigDecimal(input[0])");
    m.put(new Ty("Real"), "return new java.lang.Float(input[0])");
    m.put(new Ty("Float"), "return new java.lang.Float(input[0])");
    m.put(new Ty("Integer"), "return new java.lang.Integer(input[0])");
    m.put(new Ty("Int"), "return new java.lang.Integer(input[0])");
    m.put(new Ty("Tinyint"), "return new java.lang.Integer(input[0])");
    m.put(new Ty("Smallint"), "return new java.lang.Integer(input[0])");
    m.put(new Ty("Text"), "return input[0]");
    m.put(new Ty("String"), "return input[0]");
    m.put(new Ty("Nvarchar"), "return input[0]");
    m.put(new Ty("Varchar"), "return input[0]");
    m.put(new Ty("Longvarchar"), "return input[0]");
    m.put(new Ty("Custom"), "return input[0]");
    m.put(new Ty("Dom"), "return input[0]");
    m.put(new Ty("Other"), "return input[0]");
    m.put(new Ty("Blob"), "return input[0]");
    return m;
}
Also used : Ty(catdata.aql.exp.TyExpRaw.Ty) HashMap(java.util.HashMap)

Example 22 with Ty

use of catdata.aql.exp.TyExpRaw.Ty in project fql by CategoricalData.

the class SqlTypeSide method jts.

private static Map<Ty, String> jts() {
    Map<Ty, String> m = new HashMap<>();
    // TODO aql
    m.put(new Ty("Longvarbinary"), "[B");
    // TODO aql
    m.put(new Ty("Varbinary"), "[B");
    // TODO aql
    m.put(new Ty("Binary"), "[B");
    m.put(new Ty("Bigint"), "java.lang.Long");
    m.put(new Ty("Boolean"), "java.lang.Boolean");
    m.put(new Ty("Bit"), "java.lang.Boolean");
    m.put(new Ty("Bool"), "java.lang.Boolean");
    // TODO aql
    m.put(new Ty("Char"), "java.lang.String");
    m.put(new Ty("Double"), "java.lang.Double");
    m.put(new Ty("Doubleprecision"), "java.lang.Double");
    m.put(new Ty("Decimal"), "java.math.BigDecimal");
    m.put(new Ty("Numeric"), "java.math.BigDecimal");
    m.put(new Ty("Float"), "java.lang.Float");
    m.put(new Ty("Real"), "java.lang.Float");
    m.put(new Ty("Integer"), "java.lang.Integer");
    m.put(new Ty("Int"), "java.lang.Integer");
    m.put(new Ty("Smallint"), "java.lang.Integer");
    m.put(new Ty("Tinyint"), "java.lang.Integer");
    m.put(new Ty("Text"), "java.lang.String");
    m.put(new Ty("Nvarchar"), "java.lang.String");
    m.put(new Ty("Varchar"), "java.lang.String");
    m.put(new Ty("Longvarchar"), "java.lang.String");
    m.put(new Ty("String"), "java.lang.String");
    m.put(new Ty("Custom"), "java.lang.Object");
    m.put(new Ty("Dom"), "java.lang.Object");
    m.put(new Ty("Blob"), "java.lang.Object");
    m.put(new Ty("Clob"), "java.lang.Object");
    m.put(new Ty("Other"), "java.lang.Object");
    /*
		m.put("Date", "java.lang.Object"); //TODO aql
		m.put("Time", "java.lang.Object"); //TODO aql
		m.put("Timestamp", "java.lang.Object"); //TODO aql
		*/
    m.put(new Ty("Date"), "java.lang.Object");
    m.put(new Ty("Time"), "java.sql.Time");
    m.put(new Ty("Timestamp"), "java.sql.Timestamp");
    return m;
}
Also used : Ty(catdata.aql.exp.TyExpRaw.Ty) HashMap(java.util.HashMap)

Example 23 with Ty

use of catdata.aql.exp.TyExpRaw.Ty in project fql by CategoricalData.

the class ColimitSchema method makeCoprodSchema.

private void makeCoprodSchema(Collage<Ty, Set<Pair<N, En>>, Sym, Pair<N, Fk>, Pair<N, Att>, Void, Void> col, Set<Triple<Pair<Var, Set<Pair<N, En>>>, Term<Ty, Set<Pair<N, En>>, Sym, Pair<N, Fk>, Pair<N, Att>, Void, Void>, Term<Ty, Set<Pair<N, En>>, Sym, Pair<N, Fk>, Pair<N, Att>, Void, Void>>> eqs, Ctx<Pair<N, En>, Set<Pair<N, En>>> eqcs) {
    for (N n : nodes.keySet()) {
        Schema<Ty, En, Sym, Fk, Att> s = nodes.get(n);
        for (Att att : s.atts.keySet()) {
            col.atts.put(new Pair<>(n, att), new Pair<>(eqcs.get(new Pair<>(n, s.atts.get(att).first)), s.atts.get(att).second));
        }
        for (Fk fk : s.fks.keySet()) {
            col.fks.put(new Pair<>(n, fk), new Pair<>(eqcs.get(new Pair<>(n, s.fks.get(fk).first)), eqcs.get(new Pair<>(n, s.fks.get(fk).second))));
        }
        for (Triple<Pair<Var, En>, Term<Ty, En, Sym, Fk, Att, Void, Void>, Term<Ty, En, Sym, Fk, Att, Void, Void>> eq : s.eqs) {
            Term<Ty, Set<Pair<N, En>>, Sym, Pair<N, Fk>, Pair<N, Att>, Void, Void> lhs = eq.second.map(Function.identity(), Function.identity(), z -> new Pair<>(n, z), z -> new Pair<>(n, z), Function.identity(), Function.identity());
            Term<Ty, Set<Pair<N, En>>, Sym, Pair<N, Fk>, Pair<N, Att>, Void, Void> rhs = eq.third.map(Function.identity(), Function.identity(), z -> new Pair<>(n, z), z -> new Pair<>(n, z), Function.identity(), Function.identity());
            Pair<Var, Set<Pair<N, En>>> x = new Pair<>(eq.first.first, eqcs.get(new Pair<>(n, eq.first.second)));
            eqs.add(new Triple<>(x, lhs, rhs));
            col.eqs.add(new Eq<>(new Ctx<>(x).inRight(), lhs, rhs));
        }
    }
}
Also used : Att(catdata.aql.exp.SchExpRaw.Att) HashSet(java.util.HashSet) Set(java.util.Set) Ty(catdata.aql.exp.TyExpRaw.Ty) Fk(catdata.aql.exp.SchExpRaw.Fk) Sym(catdata.aql.exp.TyExpRaw.Sym) En(catdata.aql.exp.SchExpRaw.En) Pair(catdata.Pair)

Example 24 with Ty

use of catdata.aql.exp.TyExpRaw.Ty in project fql by CategoricalData.

the class ColimitSchema method renameFk.

public ColimitSchema<N> renameFk(Fk src, Fk dst, boolean checkJava) {
    if (!schemaStr.fks.containsKey(src)) {
        throw new RuntimeException(src.en + "." + src.str + " is not a foreign_key in \n" + schemaStr);
    }
    if (schemaStr.fks.containsKey(dst)) {
        throw new RuntimeException(dst + " is already a foreign_key in \n" + schemaStr);
    }
    Mapping<Ty, En, Sym, Fk, Att, En, Fk, Att> isoToUser = Mapping.id(schemaStr);
    Mapping<Ty, En, Sym, Fk, Att, En, Fk, Att> isoFromUser = Mapping.id(schemaStr);
    Function<Fk, Fk> fun = x -> x.equals(src) ? dst : x;
    Function<Fk, Fk> fun2 = x -> x.equals(dst) ? src : x;
    Map<Fk, Pair<En, En>> fks = new HashMap<>();
    for (Fk k : schemaStr.fks.keySet()) {
        fks.put(fun.apply(k), schemaStr.fks.get(k));
    }
    Set<Triple<Pair<Var, En>, Term<Ty, En, Sym, Fk, Att, Void, Void>, Term<Ty, En, Sym, Fk, Att, Void, Void>>> eqs = new HashSet<>();
    for (Triple<Pair<Var, En>, Term<Ty, En, Sym, Fk, Att, Void, Void>, Term<Ty, En, Sym, Fk, Att, Void, Void>> eq : schemaStr.eqs) {
        eqs.add(new Triple<>(eq.first, eq.second.mapFk(fun), eq.third.mapFk(fun)));
    }
    DP<Ty, En, Sym, Fk, Att, Void, Void> dp = new DP<Ty, En, Sym, Fk, Att, Void, Void>() {

        @Override
        public String toStringProver() {
            return "rename foreign key of " + schemaStr.dp.toStringProver();
        }

        @Override
        public boolean eq(Ctx<Var, Chc<Ty, En>> ctx, Term<Ty, En, Sym, Fk, Att, Void, Void> lhs, Term<Ty, En, Sym, Fk, Att, Void, Void> rhs) {
            return schemaStr.dp.eq(ctx, lhs.mapFk(fun2), rhs.mapFk(fun2));
        }
    };
    Schema<Ty, En, Sym, Fk, Att> schemaStr2 = // TODO aql java
    new Schema<>(ty, schemaStr.ens, schemaStr.atts.map, fks, eqs, dp, checkJava);
    Map<Fk, Pair<En, List<Fk>>> fksM = new HashMap<>();
    for (Fk k : schemaStr.fks.keySet()) {
        fksM.put(k, new Pair<>(schemaStr.fks.get(k).first, k.equals(src) ? Util.singList(dst) : Util.singList(k)));
    }
    isoToUser = new Mapping<>(isoToUser.ens.map, isoToUser.atts.map, fksM, schemaStr, schemaStr2, checkJava);
    Map<Fk, Pair<En, List<Fk>>> fksM2 = new HashMap<>();
    for (Fk k : schemaStr2.fks.keySet()) {
        fksM2.put(k, new Pair<>(schemaStr2.fks.get(k).first, k.equals(dst) ? Util.singList(src) : Util.singList(k)));
    }
    isoFromUser = new Mapping<>(isoFromUser.ens.map, isoFromUser.atts.map, fksM2, schemaStr2, schemaStr, checkJava);
    return wrap(isoToUser, isoFromUser);
}
Also used : Att(catdata.aql.exp.SchExpRaw.Att) Ctx(catdata.Ctx) En(catdata.aql.exp.SchExpRaw.En) Sym(catdata.aql.exp.TyExpRaw.Sym) Chc(catdata.Chc) HashMap(java.util.HashMap) Gen(catdata.aql.exp.InstExpRaw.Gen) AqlOption(catdata.aql.AqlOptions.AqlOption) Function(java.util.function.Function) HashSet(java.util.HashSet) Map(java.util.Map) UnionFind(catdata.graph.UnionFind) Pair(catdata.Pair) Quad(catdata.Quad) Fk(catdata.aql.exp.SchExpRaw.Fk) TyExpRaw(catdata.aql.exp.TyExpRaw) Util(catdata.Util) Set(java.util.Set) Att(catdata.aql.exp.SchExpRaw.Att) DMG(catdata.graph.DMG) Collectors(java.util.stream.Collectors) List(java.util.List) Sk(catdata.aql.exp.InstExpRaw.Sk) SchExpRaw(catdata.aql.exp.SchExpRaw) Triple(catdata.Triple) Ty(catdata.aql.exp.TyExpRaw.Ty) HashMap(java.util.HashMap) Ctx(catdata.Ctx) En(catdata.aql.exp.SchExpRaw.En) Pair(catdata.Pair) HashSet(java.util.HashSet) Ty(catdata.aql.exp.TyExpRaw.Ty) Fk(catdata.aql.exp.SchExpRaw.Fk) Sym(catdata.aql.exp.TyExpRaw.Sym) Triple(catdata.Triple)

Example 25 with Ty

use of catdata.aql.exp.TyExpRaw.Ty in project fql by CategoricalData.

the class ColimitSchema method isoOneWay.

private void isoOneWay(Mapping<Ty, En, Sym, Fk, Att, En, Fk, Att> F, Mapping<Ty, En, Sym, Fk, Att, En, Fk, Att> G, String str) {
    if (!F.dst.equals(G.src)) {
        throw new RuntimeException("Target of " + F + " \n, namely " + F.dst + "\ndoes not match source of " + G + ", namely " + F.src + "\n" + str);
    }
    Mapping<Ty, En, Sym, Fk, Att, En, Fk, Att> f = Mapping.compose(F, G);
    for (En en : f.src.ens) {
        En en2 = f.ens.get(en);
        if (!en.equals(en2)) {
            throw new RuntimeException(en + " taken to " + en2 + ", rather than itself, " + str);
        }
    }
    for (Fk fk : f.src.fks.keySet()) {
        Pair<En, List<Fk>> fk2 = f.fks.get(fk);
        Var v = new Var("v");
        Term<Ty, En, Sym, Fk, Att, Void, Void> t = Term.Fks(fk2.second, Term.Var(v));
        Term<Ty, En, Sym, Fk, Att, Void, Void> s = Term.Fk(fk, Term.Var(v));
        boolean eq = F.src.dp.eq(new Ctx<>(new Pair<>(v, Chc.inRight(fk2.first))), s, t);
        if (!eq) {
            throw new RuntimeException(fk + " taken to " + t + ", which is not provably equal to itself, " + str);
        }
    }
    for (Att att : f.src.atts.keySet()) {
        Triple<Var, En, Term<Ty, En, Sym, Fk, Att, Void, Void>> att2 = f.atts.get(att);
        Var v = att2.first;
        // Term.Fks(att2.second, Term.Var(v));
        Term<Ty, En, Sym, Fk, Att, Void, Void> t = att2.third;
        Term<Ty, En, Sym, Fk, Att, Void, Void> s = Term.Att(att, Term.Var(v));
        boolean eq = F.src.dp.eq(new Ctx<>(new Pair<>(v, Chc.inRight(att2.second))), s, t);
        if (!eq) {
            throw new RuntimeException(att + " taken to " + t + ", which is not provably equal to itself, " + str);
        }
    }
}
Also used : Att(catdata.aql.exp.SchExpRaw.Att) Ty(catdata.aql.exp.TyExpRaw.Ty) Fk(catdata.aql.exp.SchExpRaw.Fk) Sym(catdata.aql.exp.TyExpRaw.Sym) En(catdata.aql.exp.SchExpRaw.En) List(java.util.List) Pair(catdata.Pair)

Aggregations

Ty (catdata.aql.exp.TyExpRaw.Ty)43 En (catdata.aql.exp.SchExpRaw.En)36 Sym (catdata.aql.exp.TyExpRaw.Sym)35 Att (catdata.aql.exp.SchExpRaw.Att)33 Fk (catdata.aql.exp.SchExpRaw.Fk)33 Ctx (catdata.Ctx)29 Pair (catdata.Pair)27 HashSet (java.util.HashSet)21 Gen (catdata.aql.exp.InstExpRaw.Gen)20 Chc (catdata.Chc)19 List (java.util.List)19 Triple (catdata.Triple)18 AqlOptions (catdata.aql.AqlOptions)18 HashMap (java.util.HashMap)17 Term (catdata.aql.Term)15 Sk (catdata.aql.exp.InstExpRaw.Sk)15 LinkedList (java.util.LinkedList)15 Collage (catdata.aql.Collage)14 RawTerm (catdata.aql.RawTerm)14 Set (java.util.Set)12