Skip to content

File method_struct_schema_info.hpp

File List > cubrid > src > method > method_struct_schema_info.hpp

Go to the documentation of this file

/*
 *
 * Copyright 2016 CUBRID Corporation
 *
 *  Licensed 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.
 *
 */

#ifndef _METHOD_STRUCT_SCHEMA_INFO_HPP_
#define _METHOD_STRUCT_SCHEMA_INFO_HPP_

#ident "$Id$"

#include "method_struct_query.hpp"
#include "packer.hpp"
#include "packable_object.hpp"

namespace cubmethod
{
  // forward declarations
  struct column_info;

  /* SCH_TYPE are ported from cas_cci.h */
  enum SCH_TYPE
  {
    SCH_FIRST = 1,
    SCH_CLASS = 1,
    SCH_VCLASS,
    SCH_QUERY_SPEC,
    SCH_ATTRIBUTE,
    SCH_CLASS_ATTRIBUTE,
    SCH_METHOD,
    SCH_CLASS_METHOD,
    SCH_METHOD_FILE,
    SCH_SUPERCLASS,
    SCH_SUBCLASS,
    SCH_CONSTRAINT,
    SCH_TRIGGER,
    SCH_CLASS_PRIVILEGE,
    SCH_ATTR_PRIVILEGE,
    SCH_DIRECT_SUPER_CLASS,
    SCH_PRIMARY_KEY,
    SCH_IMPORTED_KEYS,
    SCH_EXPORTED_KEYS,
    SCH_CROSS_REFERENCE,
    SCH_LAST = SCH_CROSS_REFERENCE
  };

  struct schema_info_request : public cubpacking::packable_object
  {
    int type;
    std::string arg1;
    std::string arg2;
    int flag;

    schema_info_request ();

    void pack (cubpacking::packer &serializator) const override;
    void unpack (cubpacking::unpacker &deserializator) override;
    size_t get_packed_size (cubpacking::packer &serializator, std::size_t start_offset) const override;
  };

  struct schema_info : public cubpacking::packable_object
  {
    int schema_type;
    int handle_id;
    int num_result;
    std::vector<column_info> column_infos;

    schema_info () : schema_type (-1), handle_id (-1), num_result (0)
    {}

    void pack (cubpacking::packer &serializator) const override;
    void unpack (cubpacking::unpacker &deserializator) override;
    size_t get_packed_size (cubpacking::packer &serializator, std::size_t start_offset) const override;

    void set_schema_info (int schema_type);
  };
}

#endif // _METHOD_STRUCT_QUERY_HPP_