/*
 * Licensed to Crate under one or more contributor license agreements.
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.  Crate licenses this file
 * to you under the Apache License, Version 2.0 (the "License"); you may
 * not use this file except in compliance with the License.  You may
 * obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied.  See the License for the specific language governing
 * permissions and limitations under the License.
 *
 * However, if you have executed another commercial license agreement
 * with Crate these terms will supersede the license and you may use the
 * software solely pursuant to the terms of the relevant commercial
 * agreement.
 */

/**
 * Package with data structures for the execution engine / data processing.
 *
 * The main components are:
 *
 *  - {@link io.crate.data.BatchIterator} which provides access to data
 *  - {@link io.crate.data.BatchConsumer} consumes data from a BatchIterator
 *
 * BatchIterators come in different forms:
 *
 *  - "Source" BatchIterators: These expose data from either in-memory, disk or network
 *    (Examples are LuceneBatchIterator, {@link io.crate.data.RowsBatchIterator} (Iterable backed))
 *
 *  - "Projecting" BatchIterators: These wrap another BatchIterator and transform their data.
 *    There are multiple sub-types:
 *
 *      - "Synchronous/Forwarding": transformation is mostly done on a row per row basis.
 *      Examples include Filtering-, Limiting-, SkippingBatchIterator.
 *
 *      - "Collecting": BatchIterators which need to consume all of the source BatchIterator
 *      in order to produce a new result.
 *      Examples include aggregation, sorting, grouping. See {@link io.crate.data.CollectingBatchIterator}
 *
 *      - Batch/Bulk collecting with async operations:
 *          Similar to the {@link io.crate.data.CollectingBatchIterator}, but instead of consuming the whole source
 *          in one pass, these consume it in batches - after each batch it invokes an async operation, after which
 *          it will continue with the consumption.
 *      Examples include the fetch-operation.
 *      See {@link io.crate.data.AsyncOperationBatchIterator}
 *
 *
 */
package io.crate.data;

Add package-info file to dex/io.crate.data