session.h 1.3 KB
Newer Older
羽飞's avatar
羽飞 已提交
1
/* Copyright (c) 2021 OceanBase and/or its affiliates. All rights reserved.
羽飞's avatar
羽飞 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14
miniob is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
         http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details. */

//
// Created by Wangyunlai on 2021/5/12.
//

W
wangyunlai.wyl 已提交
15
#pragma once
羽飞's avatar
羽飞 已提交
16 17 18 19

#include <string>

class Trx;
W
wangyunlai.wyl 已提交
20
class Db;
羽飞's avatar
羽飞 已提交
21

羽飞's avatar
羽飞 已提交
22 23
class Session 
{
羽飞's avatar
羽飞 已提交
24 25 26 27 28 29 30 31
public:
  // static Session &current();
  static Session &default_session();

public:
  Session() = default;
  ~Session();

32 33
  Session(const Session &other);
  void operator=(Session &) = delete;
羽飞's avatar
羽飞 已提交
34

W
wangyunlai.wyl 已提交
35 36 37
  const char *get_current_db_name() const;
  Db *get_current_db() const;

羽飞's avatar
羽飞 已提交
38 39 40 41 42
  void set_current_db(const std::string &dbname);

  void set_trx_multi_operation_mode(bool multi_operation_mode);
  bool is_trx_multi_operation_mode() const;

43
  Trx *current_trx();
羽飞's avatar
羽飞 已提交
44

45 46 47
  static void set_current_session(Session *session);
  static Session *current_session();
  
羽飞's avatar
羽飞 已提交
48
private:
W
wangyunlai.wyl 已提交
49
  Db *db_ = nullptr;
50 51
  Trx *trx_ = nullptr;
  bool trx_multi_operation_mode_ = false;  // 当前事务的模式,是否多语句模式. 单语句模式自动提交
羽飞's avatar
羽飞 已提交
52
};