// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF 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.

syntax = "proto2";

package quickstep.serialization;

import "relational_operators/SortMergeRunOperator.proto";

// Next tag: 25.
enum WorkOrderType {
  AGGREGATION = 1;
  BUILD_AGGREGATION_EXISTENCE_MAP = 23;
  BUILD_HASH = 2;
  BUILD_LIP_FILTER = 3;
  CREATE_INDEX = 4;  // Placeholder.
  CREATE_TABLE = 5;  // Placeholder.
  DELETE = 6;
  DESTROY_AGGREGATION_STATE = 22;
  DESTROY_HASH = 7;
  DROP_TABLE = 8;
  FINALIZE_AGGREGATION = 9;
  HASH_JOIN = 10;
  INSERT = 11;
  NESTED_LOOP_JOIN = 12;
  SAMPLE = 13;
  SAVE_BLOCKS = 14;
  SELECT = 15;
  SORT_MERGE_RUN = 16;
  SORT_RUN_GENERATION = 17;
  TABLE_GENERATOR = 18;
  TEXT_SCAN = 19;
  UNION_ALL = 24;
  UPDATE = 20;
  WINDOW_AGGREGATION = 21;
}

message WorkOrder {
  required WorkOrderType work_order_type = 1;
  required uint64 query_id = 2;

  // The convention for extension numbering is that extensions for a particular
  // WorkOrderID should begin from (operator_type * 16).
  extensions 16 to max;
}

message AggregationWorkOrder {
  extend WorkOrder {
    // All required.
    optional uint32 aggr_state_index = 16;
    optional fixed64 block_id = 17;
    optional int32 lip_deployment_index = 18;
  }
}

message BuildAggregationExistenceMapWorkOrder {
  extend WorkOrder {
    optional int32 relation_id = 368;
    optional fixed64 build_block_id = 369;
    optional int32 build_attribute = 370;
    optional uint32 aggr_state_index = 371;
  }
}

// Next tag: 39.
message BuildHashWorkOrder {
  extend WorkOrder {
    // All required.
    optional int32 relation_id = 32;
    repeated int32 join_key_attributes = 33;
    optional bool any_join_key_attributes_nullable = 34;
    optional uint32 join_hash_table_index = 35;
    optional uint64 partition_id = 38;
    optional fixed64 block_id = 36;
    optional int32 lip_deployment_index = 37;
  }
}

message BuildLIPFilterWorkOrder {
  extend WorkOrder {
    // All required.
    optional int32 relation_id = 48;
    optional fixed64 build_block_id = 49;
    optional int32 build_side_predicate_index = 50;
    optional int32 lip_deployment_index = 51;
  }
}

message DeleteWorkOrder {
  extend WorkOrder {
    // All required.
    optional uint64 operator_index = 96;
    optional int32 relation_id = 97;
    optional int32 predicate_index = 98;
    optional fixed64 block_id = 99;
  }
}

message DestroyAggregationStateWorkOrder {
  extend WorkOrder {
    optional uint32 aggr_state_index = 352;
  }
}

message DestroyHashWorkOrder {
  extend WorkOrder {
    // All required.
    optional uint32 join_hash_table_index = 112;
    optional uint64 partition_id = 113;
  }
}

message DropTableWorkOrder {
  extend WorkOrder {
    // If set, CatalogDatabaseCache will drop the relation.
    optional int32 relation_id = 128;
    // Optional, and maybe empty.
    repeated fixed64 block_ids = 129;
  }
}

message FinalizeAggregationWorkOrder {
  extend WorkOrder {
    // All required.
    optional uint32 aggr_state_index = 144;
    optional int32 insert_destination_index = 145;
  }
}

// Next tag: 173.
message HashJoinWorkOrder {
  enum HashJoinWorkOrderType {
    HASH_ANTI_JOIN = 0;
    HASH_INNER_JOIN = 1;
    HASH_OUTER_JOIN = 2;
    HASH_SEMI_JOIN = 3;
  }

  extend WorkOrder {
    // All required.
    optional HashJoinWorkOrderType hash_join_work_order_type = 160;
    optional int32 build_relation_id = 161;
    optional int32 probe_relation_id = 162;
    repeated int32 join_key_attributes = 163;
    optional bool any_join_key_attributes_nullable = 164;
    optional int32 insert_destination_index = 165;
    optional uint32 join_hash_table_index = 166;
    optional uint64 partition_id = 172;
    optional int32 selection_index = 167;
    optional fixed64 block_id = 168;

    // Used by all but HashOuterJoinWorkOrder.
    optional int32 residual_predicate_index = 169;
    // Used by HashOuterJoinWorkOrder only.
    repeated bool is_selection_on_build = 170;

    optional int32 lip_deployment_index = 171;
  }
}

message InsertWorkOrder {
  extend WorkOrder {
    // All required.
    optional int32 insert_destination_index = 176;
    optional uint32 tuple_index = 177;
  }
}

message NestedLoopsJoinWorkOrder {
  extend WorkOrder {
    // All required.
    optional int32 left_relation_id = 192;
    optional int32 right_relation_id = 193;
    optional fixed64 left_block_id = 194;
    optional fixed64 right_block_id = 195;
    optional int32 insert_destination_index = 196;
    optional int32 join_predicate_index = 197;
    optional int32 selection_index = 198;
  }
}

message SampleWorkOrder {
  extend WorkOrder {
    // All required.
    optional int32 relation_id = 208;
    optional fixed64 block_id = 209;
    optional bool is_block_sample = 210;
    optional int32 percentage = 211;
    optional int32 insert_destination_index = 212;
  }
}

message SaveBlocksWorkOrder {
  extend WorkOrder {
    // All required.
    optional fixed64 block_id = 224;
    optional bool force = 225;
  }
}

message SelectWorkOrder {
  extend WorkOrder {
    // All required.
    optional int32 relation_id = 240;
    optional int32 insert_destination_index = 241;
    optional int32 predicate_index = 242;
    optional fixed64 block_id = 243;
    optional bool simple_projection = 244;

    // When 'simple_projection' is true.
    repeated int32 simple_selection = 245;
    // Otherwise.
    optional int32 selection_index = 246;

    optional int32 lip_deployment_index = 247;
  }
}

message SortMergeRunWorkOrder {
  extend WorkOrder {
    // All required.
    optional uint64 operator_index = 256;
    optional uint64 sort_config_index = 257;
    repeated Run runs = 258;
    optional uint64 top_k = 259;
    optional uint64 merge_level = 260;
    optional int32 relation_id = 261;
    optional int32 insert_destination_index = 262;
  }
}

message SortRunGenerationWorkOrder {
  extend WorkOrder {
    // All required.
    optional uint64 sort_config_index = 272;
    optional int32 relation_id = 273;
    optional int32 insert_destination_index = 274;
    optional fixed64 block_id = 275;
  }
}

message TableGeneratorWorkOrder {
  extend WorkOrder {
    // All required.
    optional int32 generator_function_index = 288;
    optional int32 insert_destination_index = 289;
  }
}

message TextScanWorkOrder {
  extend WorkOrder {
    // All required.
    optional string filename = 304;
    optional uint64 text_offset = 305;
    optional uint64 text_segment_size = 306;
    optional uint32 field_terminator = 307;  // For one-byte char.
    optional bool process_escape_sequences = 308;
    optional int32 insert_destination_index = 309;
  }
}

message UnionAllWorkOrder {
  extend WorkOrder {
    optional int32 relation_id = 384;
    optional int32 insert_destination_index = 385;
    optional fixed64 block_id = 386;
    repeated int32 select_attribute_id = 387;
  }
}

message UpdateWorkOrder {
  extend WorkOrder {
    // All required.
    optional uint64 operator_index = 320;
    optional int32 relation_id = 321;
    optional int32 insert_destination_index = 322;
    optional int32 predicate_index = 323;
    optional uint32 update_group_index = 324;
    optional fixed64 block_id = 325;
  }
}

message WindowAggregationWorkOrder {
  extend WorkOrder {
    // All required
    optional uint32 window_aggr_state_index = 336;
    repeated fixed64 block_ids = 337;
    optional int32 insert_destination_index = 338;
  }
}
