/********************************************************
*                                                       *
*   Copyright (C) Microsoft. All rights reserved.       *
*                                                       *
********************************************************/


//-----------------------------------------------------------------------------
// File:			cmdtree.idl
//
// Contents: 		OLE DB Command Tree
//
// Comments: 		
//
//-----------------------------------------------------------------------------

cpp_quote("//+---------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("//  Microsoft OLE DB")
cpp_quote("//  Copyright (C) Microsoft Corporation, 1994 - 1999.")
cpp_quote("//")
cpp_quote("//----------------------------------------------------------------------------")
cpp_quote("")
cpp_quote("#include <winapifamily.h>")

#pragma region Desktop Family
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")

cpp_quote("#if defined(_WIN64) || defined(_ARM_)")
cpp_quote("#include <pshpack8.h>	// 8-byte structure packing")
cpp_quote("#else")
cpp_quote("#include <pshpack2.h>	// 2-byte structure packing")
cpp_quote("#endif")
cpp_quote("")

import "oledb.idl";

[
    uuid(0c733aac-2a1c-11ce-ade5-00aa0044773d),
    pointer_default(unique)
]

interface CommandTreeStructureDefinitions {

    //
    //  DBCOMMANDTREE related definitions
    //

typedef WORD DBCOMMANDOP;

enum DBCOMMANDOPENUM {
    DBOP_scalar_constant,

    DBOP_DEFAULT,
    DBOP_NULL,

    DBOP_bookmark_name,

    DBOP_catalog_name,
    DBOP_column_name,

    DBOP_schema_name,

    DBOP_outall_name,

    DBOP_qualifier_name,

    DBOP_qualified_column_name,

    DBOP_table_name,

    DBOP_nested_table_name,

    DBOP_nested_column_name,

    DBOP_row,

    DBOP_table,

    DBOP_sort,

    DBOP_distinct,
    DBOP_distinct_order_preserving,

    DBOP_alias,

    DBOP_cross_join,

    DBOP_union_join,

    DBOP_inner_join,
    DBOP_left_semi_join,
    DBOP_right_semi_join,
    DBOP_left_anti_semi_join,
    DBOP_right_anti_semi_join,
    DBOP_left_outer_join,
    DBOP_right_outer_join,
    DBOP_full_outer_join,

    DBOP_natural_join,
    DBOP_natural_left_outer_join,
    DBOP_natural_right_outer_join,
    DBOP_natural_full_outer_join,

    DBOP_set_intersection,
    DBOP_set_union,
    DBOP_set_left_difference,
    DBOP_set_right_difference,
    DBOP_set_anti_difference,

    DBOP_bag_intersection,
    DBOP_bag_union,
    DBOP_bag_left_difference,
    DBOP_bag_right_difference,
    DBOP_bag_anti_difference,

    DBOP_division,

    DBOP_relative_sampling,

    DBOP_absolute_sampling,

    DBOP_transitive_closure,

    DBOP_recursive_union,

    DBOP_aggregate,

    DBOP_remote_table,

    DBOP_select,
    DBOP_order_preserving_select,

    DBOP_project,
    DBOP_project_order_preserving,

    DBOP_top,
    DBOP_top_percent,
    DBOP_top_plus_ties,
    DBOP_top_percent_plus_ties,
    
    DBOP_rank,
    DBOP_rank_ties_equally,
    DBOP_rank_ties_equally_and_skip,

    DBOP_navigate,

    DBOP_nesting,

    DBOP_unnesting,

    DBOP_nested_apply,

    DBOP_cross_tab,

    DBOP_is_NULL,
    DBOP_is_NOT_NULL,

    DBOP_equal,
    DBOP_not_equal,
    DBOP_less,
    DBOP_less_equal,
    DBOP_greater,
    DBOP_greater_equal,
    DBOP_equal_all,
    DBOP_not_equal_all,
    DBOP_less_all,
    DBOP_less_equal_all,
    DBOP_greater_all,
    DBOP_greater_equal_all,
    DBOP_equal_any,
    DBOP_not_equal_any,
    DBOP_less_any,
    DBOP_less_equal_any,
    DBOP_greater_any,
    DBOP_greater_equal_any,

    DBOP_anybits,
    DBOP_allbits,
    DBOP_anybits_any,
    DBOP_allbits_any,
    DBOP_anybits_all,
    DBOP_allbits_all,

    DBOP_between,
    DBOP_between_unordered,

    DBOP_match,
    DBOP_match_unique,
    DBOP_match_partial,
    DBOP_match_partial_unique,
    DBOP_match_full,
    DBOP_match_full_unique,

    DBOP_scalar_parameter,

    DBOP_scalar_function,

    DBOP_plus,
    DBOP_minus,
    DBOP_times,
    DBOP_over,
    DBOP_div,
    DBOP_modulo,
    DBOP_power,

    DBOP_like,
    DBOP_sounds_like,

    DBOP_like_any,
    DBOP_like_all,

    DBOP_is_INVALID,
    DBOP_is_TRUE,
    DBOP_is_FALSE,

    DBOP_and,
    DBOP_or,
    DBOP_xor,
    DBOP_equivalent,

    DBOP_not,

    DBOP_implies,

    DBOP_overlaps,
    DBOP_case_condition,
    DBOP_case_value,
    DBOP_nullif,
    DBOP_cast,
    DBOP_coalesce,
    DBOP_position,
    DBOP_extract,
    DBOP_char_length,
    DBOP_octet_length,
    DBOP_bit_length,
    DBOP_substring,
    DBOP_upper,
    DBOP_lower,
    DBOP_trim,
    DBOP_translate,
    DBOP_convert,
    DBOP_string_concat,
    DBOP_current_date,
    DBOP_current_time,
    DBOP_current_timestamp,

    DBOP_content_select,

    DBOP_content,
    DBOP_content_freetext,

    DBOP_content_proximity,

    DBOP_content_vector_or,

    DBOP_delete,
    DBOP_update,
    DBOP_insert,

    DBOP_min,
    DBOP_max,
    DBOP_count,
    DBOP_sum,
    DBOP_avg,
    DBOP_any_sample,
    DBOP_stddev,
    DBOP_stddev_pop,
    DBOP_var,
    DBOP_var_pop,
    DBOP_first,
    DBOP_last,

    DBOP_in,

    DBOP_exists,
    DBOP_unique,

    DBOP_subset,
    DBOP_proper_subset,
    DBOP_superset,
    DBOP_proper_superset,
    DBOP_disjoint,

    DBOP_pass_through,

    DBOP_defined_by_GUID,

    DBOP_text_command,

    DBOP_SQL_select,

    DBOP_prior_command_tree,

    DBOP_add_columns,

    DBOP_column_list_anchor,
    DBOP_column_list_element,

    DBOP_command_list_anchor,
    DBOP_command_list_element,

    DBOP_from_list_anchor,
    DBOP_from_list_element,

    DBOP_project_list_anchor,
    DBOP_project_list_element,

    DBOP_row_list_anchor,
    DBOP_row_list_element,

    DBOP_scalar_list_anchor,
    DBOP_scalar_list_element,

    DBOP_set_list_anchor,
    DBOP_set_list_element,

    DBOP_sort_list_anchor,
    DBOP_sort_list_element,

    DBOP_alter_character_set,

    DBOP_alter_collation,

    DBOP_alter_domain,

    DBOP_alter_index,

    DBOP_alter_procedure,

    DBOP_alter_schema,

    DBOP_alter_table,

    DBOP_alter_trigger,

    DBOP_alter_view,

    DBOP_coldef_list_anchor,

    DBOP_coldef_list_element,

    DBOP_create_assertion,

    DBOP_create_character_set,

    DBOP_create_collation,

    DBOP_create_domain,

    DBOP_create_index,

    DBOP_create_procedure,

    DBOP_create_schema,

    DBOP_create_synonym,

    DBOP_create_table,

    DBOP_create_temporary_table,

    DBOP_create_translation,

    DBOP_create_trigger,

    DBOP_create_view,

    DBOP_drop_assertion,

    DBOP_drop_character_set,

    DBOP_drop_collation,

    DBOP_drop_domain,

    DBOP_drop_index,

    DBOP_drop_procedure,

    DBOP_drop_schema,

    DBOP_drop_synonym,

    DBOP_drop_table,

    DBOP_drop_translation,

    DBOP_drop_trigger,

    DBOP_drop_view,

    DBOP_foreign_key,

    DBOP_grant_privileges,

    DBOP_index_list_anchor,

    DBOP_index_list_element,

    DBOP_primary_key,

    DBOP_property_list_anchor,

    DBOP_property_list_element,

    DBOP_referenced_table,

    DBOP_rename_object,

    DBOP_revoke_privileges,

    DBOP_schema_authorization,

// PPP -- nice duplicate here
//  DBOP_schema_name,

    DBOP_unique_key,

    DBOP_scope_list_anchor,

    DBOP_scope_list_element,

    DBOP_content_table,
};

cpp_quote("#ifdef DBINITCONSTANTS")

cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_LIKE_SQL                        = {0xc8b521f6,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_LIKE_DOS                        = {0xc8b521f7,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_LIKE_OFS                        = {0xc8b521f8,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")
cpp_quote("extern const OLEDBDECLSPEC GUID DBGUID_LIKE_MAPI                       = {0xc8b521f9,0x5cf3,0x11ce,{0xad,0xe5,0x00,0xaa,0x00,0x44,0x77,0x3d}};")

cpp_quote("#else // !DBINITCONSTANTS")

cpp_quote("extern const GUID DBGUID_LIKE_SQL;")
cpp_quote("extern const GUID DBGUID_LIKE_DOS;")
cpp_quote("extern const GUID DBGUID_LIKE_OFS;")
cpp_quote("extern const GUID DBGUID_LIKE_MAPI;")

cpp_quote("#endif // DBINITCONSTANTS")


} // ComandTreeStructureDefinitions

#include "cmdtre.idl"   // ICommandTree             : IUnknown
#include "qrybas.idl"   // IQuery                   : ICommandTree

cpp_quote("#include <poppack.h>     // restore original structure packing")

cpp_quote("#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */")
#pragma endregion

