File: mysqlx_prepare.proto

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (138 lines) | stat: -rw-r--r-- 3,850 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
 * Copyright (c) 2015, 2025, Oracle and/or its affiliates.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License, version 2.0,
 * as published by the Free Software Foundation.
 *
 * This program is designed to work with certain software (including
 * but not limited to OpenSSL) that is licensed under separate terms,
 * as designated in a particular file or component or in included license
 * documentation.  The authors of MySQL hereby grant you an additional
 * permission to link the program and your derivative works with the
 * separately licensed software that they have either included with
 * the program or referenced in the documentation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License, version 2.0, for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
 */
syntax = "proto2";


// ifdef PROTOBUF_LITE: option optimize_for = LITE_RUNTIME;

/**
@namespace Mysqlx::Prepare
@brief Handling of prepared statments
*/
package Mysqlx.Prepare;
option java_package = "com.mysql.cj.x.protobuf";

import "mysqlx.proto"; // comment_out_if PROTOBUF_LITE
import "mysqlx_sql.proto";
import "mysqlx_crud.proto";
import "mysqlx_datatypes.proto";


/**
Prepare a new statement

@startuml
  client -> server: Prepare
  alt Success
  client <- server: Ok
  else Failure
  client <- server: Error
  end
@enduml

@returns @ref Mysqlx::Ok or @ref Mysqlx::Error
*/
message Prepare {
  /** client-side assigned statement ID, which is going to identify
      the result of preparation */
  required uint32 stmt_id = 1;

  message OneOfMessage {
    // Determine which of optional fields was set by the client
    // (Workaround for missing "oneof" keyword in pb2.5)
    enum Type {
      FIND = 0;
      INSERT = 1;
      UPDATE = 2;
      DELETE = 4;
      STMT = 5;
    }
    required Type type = 1;

    optional Mysqlx.Crud.Find find = 2;
    optional Mysqlx.Crud.Insert insert = 3;
    optional Mysqlx.Crud.Update update = 4;
    optional Mysqlx.Crud.Delete delete = 5;
    optional Mysqlx.Sql.StmtExecute stmt_execute = 6;
  }

  /** defines one of following messages to be prepared:
      Crud::Find, Crud::Insert, Crud::Delete, Crud::Upsert, Sql::StmtExecute */
  required OneOfMessage stmt = 2;

  option (client_message_id) = PREPARE_PREPARE; // comment_out_if PROTOBUF_LITE
}


/**
Execute already-prepared statement

@startuml

 client -> server: Execute
 alt Success
   ... Resultsets...
   client <- server: StmtExecuteOk
else Failure
   client <- server: Error
end
@enduml
@returns @ref Mysqlx::Ok
*/
message Execute {
  /** client-side assigned statement ID, must be already prepared */
  required uint32 stmt_id = 1;

  /** Arguments to bind to the prepared statement */
  repeated Mysqlx.Datatypes.Any args = 2;

  /** send only type information for
      @ref Mysqlx::Resultset::ColumnMetaData, skipping names and others */
  optional bool compact_metadata = 3 [ default = false ];

  option (client_message_id) = PREPARE_EXECUTE; // comment_out_if PROTOBUF_LITE
}


/**
Deallocate already-prepared statement

@startuml
  client -> server: Deallocate
  alt Success
    client <- server: Ok
  else Failure
    client <- server: Error
  end
@enduml

@returns @ref Mysqlx::Ok or @ref Mysqlx::Error
*/
message Deallocate {
  /** client-side assigned statement ID, must be already prepared */
  required uint32 stmt_id = 1;

  option (client_message_id) = PREPARE_DEALLOCATE; // comment_out_if PROTOBUF_LITE
}