Search in sources :

Example 1 with DBCollection

use of com.sequoiadb.base.DBCollection in project Mycat-Server by MyCATApache.

the class SequoiaSQLParser method UpData.

private int UpData(SQLUpdateStatement state) {
    SQLTableSource table = state.getTableSource();
    DBCollection coll = this._db.getCollection(table.toString());
    SQLExpr expr = state.getWhere();
    BSONObject query = parserWhere(expr);
    BasicBSONObject set = new BasicBSONObject();
    for (SQLUpdateSetItem col : state.getItems()) {
        set.put(getFieldName2(col.getColumn()), getExpValue(col.getValue()));
    }
    BSONObject mod = new BasicBSONObject("$set", set);
    //coll.updateMulti(query, mod);
    coll.update(query, mod, null);
    //System.out.println("changs count:"+coll.getStats().size());
    return 1;
}
Also used : DBCollection(com.sequoiadb.base.DBCollection) BasicBSONObject(org.bson.BasicBSONObject) BasicBSONObject(org.bson.BasicBSONObject) BSONObject(org.bson.BSONObject) SQLExpr(com.alibaba.druid.sql.ast.SQLExpr)

Example 2 with DBCollection

use of com.sequoiadb.base.DBCollection in project Mycat-Server by MyCATApache.

the class SequoiaSQLParser method DeleteDate.

private int DeleteDate(SQLDeleteStatement state) {
    SQLTableSource table = state.getTableSource();
    DBCollection coll = this._db.getCollection(table.toString());
    SQLExpr expr = state.getWhere();
    if (expr == null) {
        throw new RuntimeException("not where of sql");
    }
    BSONObject query = parserWhere(expr);
    //coll.remove(query);
    coll.delete(query);
    return 1;
}
Also used : DBCollection(com.sequoiadb.base.DBCollection) BasicBSONObject(org.bson.BasicBSONObject) BSONObject(org.bson.BSONObject) SQLExpr(com.alibaba.druid.sql.ast.SQLExpr)

Example 3 with DBCollection

use of com.sequoiadb.base.DBCollection in project Mycat-Server by MyCATApache.

the class SequoiaSQLParser method query.

public SequoiaData query() throws SequoiaSQLException {
    if (!(statement instanceof SQLSelectStatement)) {
        //return null;
        throw new IllegalArgumentException("not a query sql statement");
    }
    SequoiaData mongo = new SequoiaData();
    DBCursor c = null;
    SQLSelectStatement selectStmt = (SQLSelectStatement) statement;
    SQLSelectQuery sqlSelectQuery = selectStmt.getSelect().getQuery();
    int icount = 0;
    if (sqlSelectQuery instanceof MySqlSelectQueryBlock) {
        MySqlSelectQueryBlock mysqlSelectQuery = (MySqlSelectQueryBlock) selectStmt.getSelect().getQuery();
        BasicBSONObject fields = new BasicBSONObject();
        //显示的字段
        for (SQLSelectItem item : mysqlSelectQuery.getSelectList()) {
            //System.out.println(item.toString());
            if (!(item.getExpr() instanceof SQLAllColumnExpr)) {
                if (item.getExpr() instanceof SQLAggregateExpr) {
                    SQLAggregateExpr expr = (SQLAggregateExpr) item.getExpr();
                    if (expr.getMethodName().equals("COUNT")) {
                        icount = 1;
                        mongo.setField(getExprFieldName(expr), Types.BIGINT);
                    }
                    fields.put(getExprFieldName(expr), Integer.valueOf(1));
                } else {
                    fields.put(getFieldName(item), Integer.valueOf(1));
                }
            }
        }
        //表名
        SQLTableSource table = mysqlSelectQuery.getFrom();
        DBCollection coll = this._db.getCollection(table.toString());
        mongo.setTable(table.toString());
        SQLExpr expr = mysqlSelectQuery.getWhere();
        BSONObject query = parserWhere(expr);
        //System.out.println(query);
        SQLSelectGroupByClause groupby = mysqlSelectQuery.getGroupBy();
        BasicBSONObject gbkey = new BasicBSONObject();
        if (groupby != null) {
            for (SQLExpr gbexpr : groupby.getItems()) {
                if (gbexpr instanceof SQLIdentifierExpr) {
                    String name = ((SQLIdentifierExpr) gbexpr).getName();
                    gbkey.put(name, Integer.valueOf(1));
                }
            }
            icount = 2;
        }
        int limitoff = 0;
        int limitnum = 0;
        if (mysqlSelectQuery.getLimit() != null) {
            limitoff = getSQLExprToInt(mysqlSelectQuery.getLimit().getOffset());
            limitnum = getSQLExprToInt(mysqlSelectQuery.getLimit().getRowCount());
        }
        SQLOrderBy orderby = mysqlSelectQuery.getOrderBy();
        BasicBSONObject order = new BasicBSONObject();
        if (orderby != null) {
            for (int i = 0; i < orderby.getItems().size(); i++) {
                SQLSelectOrderByItem orderitem = orderby.getItems().get(i);
                order.put(orderitem.getExpr().toString(), Integer.valueOf(getSQLExprToAsc(orderitem.getType())));
            }
        //  c.sort(order); 
        // System.out.println(order);
        }
        if (icount == 1) {
            mongo.setCount(coll.getCount(query));
        } else if (icount == 2) {
            BasicBSONObject initial = new BasicBSONObject();
            initial.put("num", 0);
            String reduce = "function (obj, prev) { " + "  prev.num++}";
        //mongo.setGrouyBy(coll.group(gbkey, query, initial, reduce));			
        } else {
            if ((limitoff > 0) || (limitnum > 0)) {
                //.skip(limitoff).limit(limitnum);
                c = coll.query(query, fields, order, null, limitoff, limitnum);
            } else {
                c = coll.query(query, fields, order, null, 0, -1);
            }
        }
        mongo.setCursor(c);
    }
    return mongo;
}
Also used : BasicBSONObject(org.bson.BasicBSONObject) BSONObject(org.bson.BSONObject) MySqlSelectQueryBlock(com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock) SQLExpr(com.alibaba.druid.sql.ast.SQLExpr) BasicBSONObject(org.bson.BasicBSONObject) DBCollection(com.sequoiadb.base.DBCollection) DBCursor(com.sequoiadb.base.DBCursor)

Example 4 with DBCollection

use of com.sequoiadb.base.DBCollection in project Mycat-Server by MyCATApache.

the class SequoiaSQLParser method InsertData.

private int InsertData(SQLInsertStatement state) {
    if (state.getValues().getValues().size() == 0) {
        throw new RuntimeException("number of  columns error");
    }
    if (state.getValues().getValues().size() != state.getColumns().size()) {
        throw new RuntimeException("number of values and columns have to match");
    }
    SQLTableSource table = state.getTableSource();
    BSONObject o = new BasicBSONObject();
    int i = 0;
    for (SQLExpr col : state.getColumns()) {
        o.put(getFieldName2(col), getExpValue(state.getValues().getValues().get(i)));
        i++;
    }
    DBCollection coll = this._db.getCollection(table.toString());
    //coll.insert(new DBObject[] { o });
    coll.insert(o);
    return 1;
}
Also used : BasicBSONObject(org.bson.BasicBSONObject) DBCollection(com.sequoiadb.base.DBCollection) BasicBSONObject(org.bson.BasicBSONObject) BSONObject(org.bson.BSONObject) SQLExpr(com.alibaba.druid.sql.ast.SQLExpr)

Aggregations

SQLExpr (com.alibaba.druid.sql.ast.SQLExpr)4 DBCollection (com.sequoiadb.base.DBCollection)4 BSONObject (org.bson.BSONObject)4 BasicBSONObject (org.bson.BasicBSONObject)4 MySqlSelectQueryBlock (com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock)1 DBCursor (com.sequoiadb.base.DBCursor)1