Search in sources :

Example 21 with OrderBy

use of org.teiid.query.sql.lang.OrderBy in project teiid by teiid.

the class TestStaticSymbolMappingVisitor method testVisitOrderBy.

public void testVisitOrderBy() {
    OrderBy ob = new OrderBy();
    ob.addVariable(exampleElement(true, 0));
    ob.addVariable(exampleElement(true, 1));
    // $NON-NLS-1$
    ob.addVariable(new AliasSymbol("abc", exampleElement(true, 2)));
    helpTest(ob, getSymbolMap());
}
Also used : OrderBy(org.teiid.query.sql.lang.OrderBy) AliasSymbol(org.teiid.query.sql.symbol.AliasSymbol)

Example 22 with OrderBy

use of org.teiid.query.sql.lang.OrderBy in project teiid by teiid.

the class TestEnginePerformance method helpTestLargeSort.

private void helpTestLargeSort(int iterations, int threads, final int rows) throws InterruptedException, Exception {
    final List<ElementSymbol> elems = new ArrayList<ElementSymbol>();
    final int cols = 50;
    for (int i = 0; i < cols; i++) {
        ElementSymbol elem1 = new ElementSymbol("e" + i);
        elem1.setType(DataTypeManager.DefaultDataClasses.STRING);
        elems.add(elem1);
    }
    final List<ElementSymbol> sortElements = Arrays.asList(elems.get(0));
    final Task task = new Task() {

        @Override
        public Void call() throws Exception {
            // $NON-NLS-1$ //$NON-NLS-2$
            CommandContext context = new CommandContext("pid", "test", null, null, 1);
            SortNode sortNode = new SortNode(1);
            sortNode.setSortElements(new OrderBy(sortElements).getOrderByItems());
            sortNode.setMode(Mode.SORT);
            sortNode.setElements(elems);
            RelationalNode rn = new RelationalNode(2) {

                int blockingPeriod = 3;

                int count = 0;

                int batches = 0;

                @Override
                protected TupleBatch nextBatchDirect() throws BlockedException, TeiidComponentException, TeiidProcessingException {
                    if (count++ % blockingPeriod == 0) {
                        throw BlockedException.INSTANCE;
                    }
                    int batchSize = this.getBatchSize();
                    int batchRows = batchSize;
                    boolean done = false;
                    int start = batches++ * batchSize;
                    if (start + batchSize >= rows) {
                        done = true;
                        batchRows = rows - start;
                    }
                    ArrayList<List<?>> batch = new ArrayList<List<?>>(batchRows);
                    for (int i = 0; i < batchRows; i++) {
                        ArrayList<Object> row = new ArrayList<Object>();
                        for (int j = 0; j < cols; j++) {
                            if (j == 0) {
                                row.add(String.valueOf((i * 279470273) % 4294967291l));
                            } else {
                                row.add(i + "abcdefghijklmnop" + j);
                            }
                        }
                        batch.add(row);
                    }
                    TupleBatch result = new TupleBatch(start + 1, batch);
                    if (done) {
                        result.setTerminationFlag(true);
                    }
                    return result;
                }

                @Override
                public Object clone() {
                    return null;
                }
            };
            rn.setElements(elems);
            sortNode.addChild(rn);
            sortNode.initialize(context, bm, null);
            rn.initialize(context, bm, null);
            process(sortNode, rows);
            return null;
        }
    };
    runTask(iterations, threads, task);
}
Also used : ElementSymbol(org.teiid.query.sql.symbol.ElementSymbol) OrderBy(org.teiid.query.sql.lang.OrderBy) CommandContext(org.teiid.query.util.CommandContext) SortNode(org.teiid.query.processor.relational.SortNode) ArrayList(java.util.ArrayList) BlockingFakeRelationalNode(org.teiid.query.processor.relational.BlockingFakeRelationalNode) FakeRelationalNode(org.teiid.query.processor.relational.FakeRelationalNode) RelationalNode(org.teiid.query.processor.relational.RelationalNode) List(java.util.List) ArrayList(java.util.ArrayList) TupleBatch(org.teiid.common.buffer.TupleBatch)

Example 23 with OrderBy

use of org.teiid.query.sql.lang.OrderBy in project teiid by teiid.

the class TestEnginePerformance method helpTestSort.

public void helpTestSort(Mode mode, int expectedRowCount, List<? extends Expression> sortElements, List<?>[] data, List<? extends Expression> elems, BufferManager bufferManager) throws TeiidComponentException, TeiidProcessingException {
    // $NON-NLS-1$ //$NON-NLS-2$
    CommandContext context = new CommandContext("pid", "test", null, null, 1);
    BlockingFakeRelationalNode dataNode = new BlockingFakeRelationalNode(0, data);
    dataNode.setReturnPeriod(3);
    dataNode.setElements(elems);
    dataNode.initialize(context, bufferManager, null);
    SortNode sortNode = new SortNode(1);
    sortNode.setSortElements(new OrderBy(sortElements).getOrderByItems());
    sortNode.setMode(mode);
    sortNode.setElements(dataNode.getElements());
    sortNode.addChild(dataNode);
    sortNode.initialize(context, bufferManager, null);
    process(sortNode, expectedRowCount);
}
Also used : OrderBy(org.teiid.query.sql.lang.OrderBy) BlockingFakeRelationalNode(org.teiid.query.processor.relational.BlockingFakeRelationalNode) CommandContext(org.teiid.query.util.CommandContext) SortNode(org.teiid.query.processor.relational.SortNode)

Aggregations

OrderBy (org.teiid.query.sql.lang.OrderBy)23 ElementSymbol (org.teiid.query.sql.symbol.ElementSymbol)15 List (java.util.List)13 ArrayList (java.util.ArrayList)12 Expression (org.teiid.query.sql.symbol.Expression)12 PlanNode (org.teiid.query.optimizer.relational.plantree.PlanNode)10 AggregateSymbol (org.teiid.query.sql.symbol.AggregateSymbol)9 OrderByItem (org.teiid.query.sql.lang.OrderByItem)7 CommandContext (org.teiid.query.util.CommandContext)7 SymbolMap (org.teiid.query.sql.util.SymbolMap)6 AliasSymbol (org.teiid.query.sql.symbol.AliasSymbol)4 ExpressionSymbol (org.teiid.query.sql.symbol.ExpressionSymbol)4 LinkedHashSet (java.util.LinkedHashSet)3 LinkedList (java.util.LinkedList)3 BufferManager (org.teiid.common.buffer.BufferManager)3 Criteria (org.teiid.query.sql.lang.Criteria)3 GroupSymbol (org.teiid.query.sql.symbol.GroupSymbol)3 BigDecimal (java.math.BigDecimal)2 HashMap (java.util.HashMap)2 HashSet (java.util.HashSet)2