xref: /aosp_15_r20/external/federated-compute/fcp/protos/selection_criteria.proto (revision 14675a029014e728ec732f129a32e299b2da0601)
1*14675a02SAndroid Build Coastguard Workersyntax = "proto3";
2*14675a02SAndroid Build Coastguard Worker
3*14675a02SAndroid Build Coastguard Workerpackage google.internal.federated.plan;
4*14675a02SAndroid Build Coastguard Worker
5*14675a02SAndroid Build Coastguard Workerimport "fcp/protos/plan.proto";
6*14675a02SAndroid Build Coastguard Worker
7*14675a02SAndroid Build Coastguard Workeroption java_package = "com.google.internal.federated.plan";
8*14675a02SAndroid Build Coastguard Workeroption java_outer_classname = "SelectionCriteriaProto";
9*14675a02SAndroid Build Coastguard Worker
10*14675a02SAndroid Build Coastguard Worker// Schema information describing a column in the client execution context.
11*14675a02SAndroid Build Coastguard Workermessage ColumnSchema {
12*14675a02SAndroid Build Coastguard Worker  // The column name.
13*14675a02SAndroid Build Coastguard Worker  string name = 1;
14*14675a02SAndroid Build Coastguard Worker
15*14675a02SAndroid Build Coastguard Worker  // ExampleQuery output vector data type. When generating results for
16*14675a02SAndroid Build Coastguard Worker  // the Lightweight client, client query results will be encoded using
17*14675a02SAndroid Build Coastguard Worker  // this type.
18*14675a02SAndroid Build Coastguard Worker  // These types are only populated for the SQL query output columns.
19*14675a02SAndroid Build Coastguard Worker  google.internal.federated.plan.ExampleQuerySpec.OutputVectorSpec.DataType
20*14675a02SAndroid Build Coastguard Worker      type = 2;
21*14675a02SAndroid Build Coastguard Worker}
22*14675a02SAndroid Build Coastguard Worker
23*14675a02SAndroid Build Coastguard Workermessage SqlQuery {
24*14675a02SAndroid Build Coastguard Worker  // Supported SQL dialects.
25*14675a02SAndroid Build Coastguard Worker  enum SqlDialect {
26*14675a02SAndroid Build Coastguard Worker    UNKNOWN = 0;
27*14675a02SAndroid Build Coastguard Worker    SQLITE = 1;
28*14675a02SAndroid Build Coastguard Worker    // TODO(b/178190670) Currently only SQLite is supported, as Android clients
29*14675a02SAndroid Build Coastguard Worker    // can only execute via SQLite.
30*14675a02SAndroid Build Coastguard Worker  }
31*14675a02SAndroid Build Coastguard Worker
32*14675a02SAndroid Build Coastguard Worker  // The SQL dialect the query is expressed in.
33*14675a02SAndroid Build Coastguard Worker  SqlDialect sql_dialect = 1;
34*14675a02SAndroid Build Coastguard Worker
35*14675a02SAndroid Build Coastguard Worker  // The raw SQL query string.
36*14675a02SAndroid Build Coastguard Worker  string raw_sql = 2;
37*14675a02SAndroid Build Coastguard Worker
38*14675a02SAndroid Build Coastguard Worker  // Schema information for the client SQL query output columns.
39*14675a02SAndroid Build Coastguard Worker  repeated ColumnSchema output_columns = 3;
40*14675a02SAndroid Build Coastguard Worker}
41*14675a02SAndroid Build Coastguard Worker
42*14675a02SAndroid Build Coastguard Worker// A set of SQL queries that run on the client with the same inputs. They share
43*14675a02SAndroid Build Coastguard Worker// a database schema.
44*14675a02SAndroid Build Coastguard Workermessage SqlQuerySet {
45*14675a02SAndroid Build Coastguard Worker  // Map of query names to SQL queries.
46*14675a02SAndroid Build Coastguard Worker  map<string, SqlQuery> sql_queries = 1;
47*14675a02SAndroid Build Coastguard Worker}
48*14675a02SAndroid Build Coastguard Worker
49*14675a02SAndroid Build Coastguard Worker// Selection criteria sent to Brella clients for SQL tasks. Contains the
50*14675a02SAndroid Build Coastguard Worker// query that the FedSqlExampleStore should execute before handing results
51*14675a02SAndroid Build Coastguard Worker// off to TensorFlow.
52*14675a02SAndroid Build Coastguard Workermessage SelectionCriteria {
53*14675a02SAndroid Build Coastguard Worker  // The SQL queries executed by each client. The result columns will be
54*14675a02SAndroid Build Coastguard Worker  // serialized into `fcp.client.ExampleQueryResult` protos.
55*14675a02SAndroid Build Coastguard Worker  // This field should only be used by tasks using the lightweight client.
56*14675a02SAndroid Build Coastguard Worker  SqlQuerySet client_queries = 1;
57*14675a02SAndroid Build Coastguard Worker}