github.com/cockroachdb/cockroachdb-parser@v0.23.3-0.20240213214944-911057d40c9a/pkg/sql/types/types.pb.go (about)

     1  // Code generated by protoc-gen-gogo. DO NOT EDIT.
     2  // source: sql/types/types.proto
     3  
     4  package types
     5  
     6  import (
     7  	fmt "fmt"
     8  	geopb "github.com/cockroachdb/cockroachdb-parser/pkg/geo/geopb"
     9  	github_com_cockroachdb_cockroach_pkg_geo_geopb "github.com/cockroachdb/cockroachdb-parser/pkg/geo/geopb"
    10  	_ "github.com/gogo/protobuf/gogoproto"
    11  	proto "github.com/gogo/protobuf/proto"
    12  	github_com_lib_pq_oid "github.com/lib/pq/oid"
    13  	io "io"
    14  	math "math"
    15  	math_bits "math/bits"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var _ = proto.Marshal
    20  var _ = fmt.Errorf
    21  var _ = math.Inf
    22  
    23  // This is a compile-time assertion to ensure that this generated file
    24  // is compatible with the proto package it is being compiled against.
    25  // A compilation error at this line likely means your copy of the
    26  // proto package needs to be updated.
    27  const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
    28  
    29  // See the comment header for the T.Family method for more details.
    30  type Family int32
    31  
    32  const (
    33  	// BoolFamily is the family of boolean true/false types.
    34  	//
    35  	//   Canonical: types.Bool
    36  	//   Oid      : T_bool
    37  	//
    38  	// Examples:
    39  	//   BOOL
    40  	//
    41  	BoolFamily Family = 0
    42  	// IntFamily is the family of signed integer types.
    43  	//
    44  	//   Canonical: types.Int
    45  	//   Oid      : T_int8, T_int4, T_int2
    46  	//   Width    : 64, 32, 16
    47  	//
    48  	// Examples:
    49  	//   INT
    50  	//   INT8
    51  	//   INT4
    52  	//
    53  	IntFamily Family = 1
    54  	// FloatFamily is the family of base-2 floating-point types (IEEE 754).
    55  	//
    56  	//   Canonical: types.Float
    57  	//   Oid      : T_float8, T_float4
    58  	//   Width    : 64, 32
    59  	//
    60  	// Examples:
    61  	//   FLOAT8
    62  	//   FLOAT4
    63  	//
    64  	FloatFamily Family = 2
    65  	// DecimalFamily is the family of base-10 floating and fixed point types.
    66  	//
    67  	//   Canonical    : types.Decimal
    68  	//   Oid          : T_numeric
    69  	//   Precision    : max # decimal digits (0 = no specified limit)
    70  	//   Width (Scale): # digits after decimal point (0 = no specified limit)
    71  	//
    72  	// Examples:
    73  	//   DECIMAL
    74  	//   DECIMAL(10)
    75  	//   DECIMAL(10,3)
    76  	//
    77  	DecimalFamily Family = 3
    78  	// DateFamily is the family of date types that store only year/month/day with
    79  	// no time component.
    80  	//
    81  	//   Canonical: types.Date
    82  	//   Oid      : T_date
    83  	//
    84  	// Examples:
    85  	//   DATE
    86  	//
    87  	DateFamily Family = 4
    88  	// TimestampFamily is the family of date types that store a year/month/day
    89  	// date component, as well as an hour/minute/second time component. There is
    90  	// no timezone component (see TIMESTAMPTZ). Seconds can have varying precision
    91  	// (defaults to microsecond precision). Currently, only microsecond precision
    92  	// is supported.
    93  	//
    94  	//   Canonical: types.Timestamp
    95  	//   Oid      : T_timestamp
    96  	//   Precision: fractional seconds (3 = ms, 0,6 = us, 9 = ns, etc.)
    97  	//
    98  	// Examples:
    99  	//   TIMESTAMP
   100  	//   TIMESTAMP(6)
   101  	//
   102  	TimestampFamily Family = 5
   103  	// IntervalFamily is the family of types describing a duration of time.
   104  	// Currently, only microsecond precision is supported.
   105  	//
   106  	//   Canonical: types.Interval
   107  	//   Oid      : T_interval
   108  	//
   109  	// Examples:
   110  	//   INTERVAL
   111  	//
   112  	IntervalFamily Family = 6
   113  	// StringFamily is the family of types containing Unicode textual strings.
   114  	// This family includes types constructed by STRING, VARCHAR, CHAR, and "char"
   115  	// column type definitions (CHAR and "char" are distinct PG types). Note
   116  	// that while STRING and VARCHAR have no default width limit, CHAR has a
   117  	// default width of 1.
   118  	// TODO(andyk): "char" should have default width of 1 as well, but doesn't.
   119  	//
   120  	//   Canonical: types.String
   121  	//   Oid      : T_text, T_varchar, T_bpchar, T_char
   122  	//   Width    : max # characters (0 = no specified limit)
   123  	//
   124  	// Examples:
   125  	//   STRING
   126  	//   TEXT
   127  	//   VARCHAR(10)
   128  	//   CHAR
   129  	//
   130  	StringFamily Family = 7
   131  	// BytesFamily is the family of types containing a list of raw byte values.
   132  	//
   133  	//   Canonical: types.BYTES
   134  	//   Oid      : T_bytea
   135  	//
   136  	// Examples:
   137  	//   BYTES
   138  	//
   139  	BytesFamily Family = 8
   140  	// TimestampTZFamily is the family of date types that store a year/month/day
   141  	// date component, as well as an hour/minute/second time component, along with
   142  	// a timezone. Seconds can have varying precision (defaults to microsecond
   143  	// precision). Currently, only microsecond precision is supported.
   144  	//
   145  	//   Canonical: types.TimestampTZ
   146  	//   Oid      : T_timestamptz
   147  	//   Precision: fractional seconds (3 = ms, 0,6 = us, 9 = ns, etc.)
   148  	//
   149  	// Examples:
   150  	//   TIMESTAMPTZ
   151  	//   TIMESTAMPTZ(6)
   152  	//
   153  	TimestampTZFamily Family = 9
   154  	// CollatedStringFamily is the family of types containing Unicode textual
   155  	// strings with an associated COLLATE value that specifies the locale used
   156  	// for various character-based operations such as sorting, pattern matching,
   157  	// and builtin functions like lower and upper.
   158  	//
   159  	//   Oid      : T_text, T_varchar, T_bpchar, T_char
   160  	//   Width    : max # characters (0 = no specified limit)
   161  	//   Locale   : name of locale (e.g. EN or DE)
   162  	//
   163  	// Examples:
   164  	//   STRING COLLATE en
   165  	//   VARCHAR(10) COLLATE de
   166  	//
   167  	CollatedStringFamily Family = 10
   168  	// OidFamily is the family of types containing Postgres Object ID (Oid)
   169  	// values. Oids are integer values that identify some object in the database,
   170  	// like a type, relation, or procedure.
   171  	//
   172  	//   Canonical: types.Oid
   173  	//   Oid      : T_oid, T_regclass, T_regproc, T_regprocedure, T_regtype,
   174  	//              T_regnamespace, T_regrole
   175  	//
   176  	// Examples:
   177  	//   OID
   178  	//   REGCLASS
   179  	//   REGPROC
   180  	//
   181  	// TODO(andyk): Oids should be part of the IntFamily, since they are treated
   182  	//              as equivalent to ints by PG.
   183  	OidFamily Family = 12
   184  	// UnknownFamily is a special type family that tags expressions that
   185  	// statically evaluate to NULL. An UnknownFamily expression *must* be NULL.
   186  	// But the inverse is not true, since other types allow NULL values as well.
   187  	// UnknownFamily types are not supported as a table column type, but can be
   188  	// transferred through DistSQL streams.
   189  	//
   190  	//   Canonical: types.Unknown
   191  	//   Oid      : T_unknown
   192  	//
   193  	UnknownFamily Family = 13
   194  	// UuidFamily is the family of types containing universally unique
   195  	// identifiers. A UUID is a 128-bit quantity that is very unlikely to ever be
   196  	// generated again, and so can be relied on to be distinct from all other UUID
   197  	// values.
   198  	//
   199  	//   Canonical: types.Uuid
   200  	//   Oid      : T_uuid
   201  	//
   202  	// Examples:
   203  	//   UUID
   204  	//
   205  	UuidFamily Family = 14
   206  	// ArrayFamily is a family of non-scalar types that contain an ordered list of
   207  	// elements. The elements of an array must all share the same type. Elements
   208  	// can have have any type, including ARRAY. However, while the types package
   209  	// supports nested arrays, other parts of CRDB do not currently support them.
   210  	// Also, the length of array dimension(s) are ignored by PG and CRDB (e.g.
   211  	// an array of length 11 could be inserted into a column declared as INT[11]).
   212  	//
   213  	// Array OID values are special. Rather than having a single T_array OID,
   214  	// Postgres defines a separate OID for each possible array element type.
   215  	// Here are some examples:
   216  	//
   217  	//   T__int8: array of int8 values
   218  	//   T__text: array of text values
   219  	//
   220  	// Notice that each array OID has double underscores to distinguish it from
   221  	// the OID of the scalar type it contains.
   222  	//
   223  	//   Oid          : T__int, T__text, T__numeric, etc.
   224  	//   ArrayContents: types.T of the array element type
   225  	//
   226  	// Examples:
   227  	//   INT[]
   228  	//   VARCHAR(10)[] COLLATE EN
   229  	//   DECIMAL(10,1)[]
   230  	//   TIMESTAMP[5]
   231  	//
   232  	ArrayFamily Family = 15
   233  	// INetFamily is the family of types containing IPv4 or IPv6 network address
   234  	// identifiers (e.g. 192.168.100.128/25 or FE80:CD00:0:CDE:1257:0:211E:729C).
   235  	//
   236  	//   Canonical: types.INet
   237  	//   Oid      : T_inet
   238  	//
   239  	// Examples:
   240  	//   INET
   241  	//
   242  	INetFamily Family = 16
   243  	// TimeFamily is the family of date types that store only hour/minute/second
   244  	// with no date component. There is no timezone component. Seconds can have
   245  	// varying precision (defaults to microsecond precision). Currently, only
   246  	// microsecond precision is supported.
   247  	//
   248  	//   Canonical: types.Time
   249  	//   Oid      : T_time
   250  	//   Precision: fractional seconds (3 = ms, 0,6 = us, 9 = ns, etc.)
   251  	//
   252  	// Examples:
   253  	//   TIME
   254  	//   TIME(6)
   255  	//
   256  	TimeFamily Family = 17
   257  	// JsonFamily is the family of types containing JavaScript Object Notation
   258  	// (JSON) values. Currently, CRDB only supports JSONB values, which are stored
   259  	// in a decomposed binary format.
   260  	//
   261  	//   Canonical: types.Jsonb
   262  	//   Oid      : T_jsonb
   263  	//
   264  	// Examples:
   265  	//   JSON
   266  	//   JSONB
   267  	//
   268  	JsonFamily Family = 18
   269  	// TimeTZFamily is the family of date types that store only hour/minute/second
   270  	// and timestamp components, with no date component. Seconds can have
   271  	// varying precision (defaults to microsecond precision). Currently, only
   272  	// microsecond precision is supported.
   273  	//
   274  	//   Canonical: types.TimeTZ
   275  	//   Oid      : T_timetz
   276  	//   Precision: fractional seconds (3 = ms, 0,6 = us, 9 = ns, etc.)
   277  	//
   278  	// Examples:
   279  	//   TIMETZ
   280  	//
   281  	TimeTZFamily Family = 19
   282  	// TupleFamily is a family of non-scalar structural types that describes the
   283  	// fields of a row or record. The fields can be of any type, including nested
   284  	// tuple and array types. Fields can also have optional labels. Currently,
   285  	// CRDB does not support tuple types as column types, but it is possible to
   286  	// construct tuples using the ROW function or tuple construction syntax.
   287  	//
   288  	//   Oid          : T_record
   289  	//   TupleContents: []*types.T of each tuple field
   290  	//   TupleLabels  : []string of each tuple label
   291  	//
   292  	// Examples:
   293  	//   (1, 'foo')
   294  	//   ((1, 'foo') AS num, str)
   295  	//   ROW(1, 'foo')
   296  	//   (ROW(1, 'foo') AS num, str)
   297  	//
   298  	TupleFamily Family = 20
   299  	// BitFamily is the family of types containing ordered lists of bit values
   300  	// (0 or 1). Note that while VARBIT has no default width limit, BIT has a
   301  	// default width limit of 1.
   302  	//
   303  	//   Canonical: types.VarBit
   304  	//   Oid      : T_varbit, T_bit
   305  	//   Width    : max # of bits (0 = no specified limit)
   306  	//
   307  	// Examples:
   308  	//   VARBIT
   309  	//   VARBIT(10)
   310  	//   BIT
   311  	//   BIT(10)
   312  	//
   313  	BitFamily Family = 21
   314  	// GeometryFamily is a family that supports the Geometry geospatial type,
   315  	// which is compatible with PostGIS's Geometry implementation.
   316  	//
   317  	//   Canonical: types.Geometry
   318  	//   Oid      : oidext.T_geometry
   319  	//
   320  	// Examples:
   321  	//   GEOMETRY
   322  	//   GEOMETRY(LINESTRING)
   323  	//   GEOMETRY(LINESTRING, SRID)
   324  	GeometryFamily Family = 22
   325  	// GeographyFamily is a family that supports the Geography geospatial type,
   326  	// which is compatible with PostGIS's Geography implementation.
   327  	//
   328  	//   Canonical: types.Geography
   329  	//   Oid      : oidext.T_geography
   330  	//
   331  	// Examples:
   332  	//   GEOGRAPHY
   333  	//   GEOGRAPHY(LINESTRING)
   334  	//   GEOGRAPHY(LINESTRING, SRID)
   335  	GeographyFamily Family = 23
   336  	// EnumFamily is a family that represents all ENUM types. ENUM types
   337  	// have data about the ENUM defined in a TypeDescriptor. The ID of
   338  	// the TypeDescriptor that backs this ENUM is stored in the StableTypeID
   339  	// field. It does not have a canonical form.
   340  	EnumFamily Family = 24
   341  	// Box2DFamily is a family representing the box2d type. This is compatible
   342  	// with PostGIS's box2d implementation.
   343  	//
   344  	//   Canonical: types.Box2D
   345  	//   Oid      : oidext.T_box2d
   346  	//
   347  	// Examples:
   348  	//   Box2D
   349  	Box2DFamily Family = 25
   350  	// VoidFamily is a family representing the void type.
   351  	//
   352  	//   Canonical: types.Void
   353  	//   Oid      : T_void
   354  	//
   355  	// Examples:
   356  	//   Void
   357  	VoidFamily Family = 26
   358  	// EncodedKeyFamily is a special type family used internally for inverted
   359  	// index keys, which do not fully encode an object.
   360  	EncodedKeyFamily Family = 27
   361  	// TSQueryFamily is a type family for the TSQuery type, which is the type
   362  	// of full text search queries.
   363  	//   Canonical: types.TSQuery
   364  	//   Oid      : T_tsquery
   365  	TSQueryFamily Family = 28
   366  	// TSVectorFamily is a type family for the TSVector type, which is the type
   367  	// of full text search document representations.
   368  	//   Canonical: types.TSVector
   369  	//   Oid      : T_tsvector
   370  	TSVectorFamily Family = 29
   371  	// PGLSNFamily is a type family for the pg_lsn type, which is the type
   372  	// representing PG LSN objects.
   373  	//   Canonical: types.PGLSN
   374  	//   Oid      : T_pg_lsn
   375  	PGLSNFamily Family = 30
   376  	// RefCursorFamily is a type family for the refcursor type, which is the
   377  	// type representing PLpgSQL cursors.
   378  	//   Canonical: types.RefCursor
   379  	//   Oid      : T_refcursor
   380  	RefCursorFamily Family = 31
   381  	// AnyFamily is a special type family used during static analysis as a
   382  	// wildcard type that matches any other type, including scalar, array, and
   383  	// tuple types. Execution-time values should never have this type. As an
   384  	// example of its use, many SQL builtin functions allow an input value to be
   385  	// of any type, and so use this type in their static definitions.
   386  	//
   387  	//   Canonical: types.Any
   388  	//   Oid      : T_anyelement
   389  	//
   390  	AnyFamily Family = 100
   391  )
   392  
   393  var Family_name = map[int32]string{
   394  	0:   "BoolFamily",
   395  	1:   "IntFamily",
   396  	2:   "FloatFamily",
   397  	3:   "DecimalFamily",
   398  	4:   "DateFamily",
   399  	5:   "TimestampFamily",
   400  	6:   "IntervalFamily",
   401  	7:   "StringFamily",
   402  	8:   "BytesFamily",
   403  	9:   "TimestampTZFamily",
   404  	10:  "CollatedStringFamily",
   405  	12:  "OidFamily",
   406  	13:  "UnknownFamily",
   407  	14:  "UuidFamily",
   408  	15:  "ArrayFamily",
   409  	16:  "INetFamily",
   410  	17:  "TimeFamily",
   411  	18:  "JsonFamily",
   412  	19:  "TimeTZFamily",
   413  	20:  "TupleFamily",
   414  	21:  "BitFamily",
   415  	22:  "GeometryFamily",
   416  	23:  "GeographyFamily",
   417  	24:  "EnumFamily",
   418  	25:  "Box2DFamily",
   419  	26:  "VoidFamily",
   420  	27:  "EncodedKeyFamily",
   421  	28:  "TSQueryFamily",
   422  	29:  "TSVectorFamily",
   423  	30:  "PGLSNFamily",
   424  	31:  "RefCursorFamily",
   425  	100: "AnyFamily",
   426  }
   427  
   428  var Family_value = map[string]int32{
   429  	"BoolFamily":           0,
   430  	"IntFamily":            1,
   431  	"FloatFamily":          2,
   432  	"DecimalFamily":        3,
   433  	"DateFamily":           4,
   434  	"TimestampFamily":      5,
   435  	"IntervalFamily":       6,
   436  	"StringFamily":         7,
   437  	"BytesFamily":          8,
   438  	"TimestampTZFamily":    9,
   439  	"CollatedStringFamily": 10,
   440  	"OidFamily":            12,
   441  	"UnknownFamily":        13,
   442  	"UuidFamily":           14,
   443  	"ArrayFamily":          15,
   444  	"INetFamily":           16,
   445  	"TimeFamily":           17,
   446  	"JsonFamily":           18,
   447  	"TimeTZFamily":         19,
   448  	"TupleFamily":          20,
   449  	"BitFamily":            21,
   450  	"GeometryFamily":       22,
   451  	"GeographyFamily":      23,
   452  	"EnumFamily":           24,
   453  	"Box2DFamily":          25,
   454  	"VoidFamily":           26,
   455  	"EncodedKeyFamily":     27,
   456  	"TSQueryFamily":        28,
   457  	"TSVectorFamily":       29,
   458  	"PGLSNFamily":          30,
   459  	"RefCursorFamily":      31,
   460  	"AnyFamily":            100,
   461  }
   462  
   463  func (x Family) Enum() *Family {
   464  	p := new(Family)
   465  	*p = x
   466  	return p
   467  }
   468  
   469  func (x Family) String() string {
   470  	return proto.EnumName(Family_name, int32(x))
   471  }
   472  
   473  func (x *Family) UnmarshalJSON(data []byte) error {
   474  	value, err := proto.UnmarshalJSONEnum(Family_value, data, "Family")
   475  	if err != nil {
   476  		return err
   477  	}
   478  	*x = Family(value)
   479  	return nil
   480  }
   481  
   482  func (Family) EnumDescriptor() ([]byte, []int) {
   483  	return fileDescriptor_bc7f16796a7f6725, []int{0}
   484  }
   485  
   486  // IntervalDurationType represents a duration that can be used
   487  // when defining an Interval Duration Field.
   488  // See https://www.postgresql.org/docs/current/datatype-datetime.html.
   489  type IntervalDurationType int32
   490  
   491  const (
   492  	// UNSET defaults to SECOND during evaluation.
   493  	// This indicates no typmod.
   494  	IntervalDurationType_UNSET  IntervalDurationType = 0
   495  	IntervalDurationType_YEAR   IntervalDurationType = 1
   496  	IntervalDurationType_MONTH  IntervalDurationType = 2
   497  	IntervalDurationType_DAY    IntervalDurationType = 3
   498  	IntervalDurationType_HOUR   IntervalDurationType = 4
   499  	IntervalDurationType_MINUTE IntervalDurationType = 5
   500  	// SECOND is the only unit where precision can be added.
   501  	IntervalDurationType_SECOND IntervalDurationType = 6
   502  	// MILLISECOND is not technically part of the SQL standard for intervals, but we
   503  	// provide it as a field to allow code to parse intervals with a default unit
   504  	// of milliseconds, which is useful for some internal use cases like
   505  	// statement_timeout.
   506  	IntervalDurationType_MILLISECOND IntervalDurationType = 7
   507  )
   508  
   509  var IntervalDurationType_name = map[int32]string{
   510  	0: "UNSET",
   511  	1: "YEAR",
   512  	2: "MONTH",
   513  	3: "DAY",
   514  	4: "HOUR",
   515  	5: "MINUTE",
   516  	6: "SECOND",
   517  	7: "MILLISECOND",
   518  }
   519  
   520  var IntervalDurationType_value = map[string]int32{
   521  	"UNSET":       0,
   522  	"YEAR":        1,
   523  	"MONTH":       2,
   524  	"DAY":         3,
   525  	"HOUR":        4,
   526  	"MINUTE":      5,
   527  	"SECOND":      6,
   528  	"MILLISECOND": 7,
   529  }
   530  
   531  func (x IntervalDurationType) Enum() *IntervalDurationType {
   532  	p := new(IntervalDurationType)
   533  	*p = x
   534  	return p
   535  }
   536  
   537  func (x IntervalDurationType) String() string {
   538  	return proto.EnumName(IntervalDurationType_name, int32(x))
   539  }
   540  
   541  func (x *IntervalDurationType) UnmarshalJSON(data []byte) error {
   542  	value, err := proto.UnmarshalJSONEnum(IntervalDurationType_value, data, "IntervalDurationType")
   543  	if err != nil {
   544  		return err
   545  	}
   546  	*x = IntervalDurationType(value)
   547  	return nil
   548  }
   549  
   550  func (IntervalDurationType) EnumDescriptor() ([]byte, []int) {
   551  	return fileDescriptor_bc7f16796a7f6725, []int{1}
   552  }
   553  
   554  // IntervalDurationField represents precisions in intervals which are
   555  // outside of the regular time precision syntax.
   556  // i.e. instead of INTERVAL(6), we can have INTERVAL SECOND(6), INTERVAL MONTH, etc.
   557  // This is represented as a bitmask on the first 4 bits of precision in postgres.
   558  type IntervalDurationField struct {
   559  	// DurationType is the unit of measurement in which durations
   560  	// should truncate themselves to.
   561  	// This (unlike precision) gets truncated downward.
   562  	DurationType IntervalDurationType `protobuf:"varint,1,opt,name=duration_type,json=durationType,enum=cockroach.sql.sem.types.IntervalDurationType" json:"duration_type"`
   563  	// FromDurationType is the left side of the "duration field".
   564  	// i.e. in the `DurationType_1 TO DurationType_2` syntax, this represents `DurationType_1`.
   565  	// Note this is ignored, see https://www.postgresql.org/message-id/20110510040219.GD5617%40tornado.gateway.2wire.net.
   566  	FromDurationType IntervalDurationType `protobuf:"varint,2,opt,name=from_duration_type,json=fromDurationType,enum=cockroach.sql.sem.types.IntervalDurationType" json:"from_duration_type"`
   567  }
   568  
   569  func (m *IntervalDurationField) Reset()         { *m = IntervalDurationField{} }
   570  func (m *IntervalDurationField) String() string { return proto.CompactTextString(m) }
   571  func (*IntervalDurationField) ProtoMessage()    {}
   572  func (*IntervalDurationField) Descriptor() ([]byte, []int) {
   573  	return fileDescriptor_bc7f16796a7f6725, []int{0}
   574  }
   575  func (m *IntervalDurationField) XXX_Unmarshal(b []byte) error {
   576  	return m.Unmarshal(b)
   577  }
   578  func (m *IntervalDurationField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   579  	b = b[:cap(b)]
   580  	n, err := m.MarshalToSizedBuffer(b)
   581  	if err != nil {
   582  		return nil, err
   583  	}
   584  	return b[:n], nil
   585  }
   586  func (m *IntervalDurationField) XXX_Merge(src proto.Message) {
   587  	xxx_messageInfo_IntervalDurationField.Merge(m, src)
   588  }
   589  func (m *IntervalDurationField) XXX_Size() int {
   590  	return m.Size()
   591  }
   592  func (m *IntervalDurationField) XXX_DiscardUnknown() {
   593  	xxx_messageInfo_IntervalDurationField.DiscardUnknown(m)
   594  }
   595  
   596  var xxx_messageInfo_IntervalDurationField proto.InternalMessageInfo
   597  
   598  // GeoMetadata contains metadata associated with Geospatial data types.
   599  type GeoMetadata struct {
   600  	SRID      github_com_cockroachdb_cockroach_pkg_geo_geopb.SRID `protobuf:"varint,1,opt,name=srid,casttype=github.com/cockroachdb/cockroachdb-parser/pkg/geo/geopb.SRID" json:"srid"`
   601  	ShapeType geopb.ShapeType                                     `protobuf:"varint,2,opt,name=shape_type,json=shapeType,enum=cockroach.geopb.ShapeType" json:"shape_type"`
   602  }
   603  
   604  func (m *GeoMetadata) Reset()         { *m = GeoMetadata{} }
   605  func (m *GeoMetadata) String() string { return proto.CompactTextString(m) }
   606  func (*GeoMetadata) ProtoMessage()    {}
   607  func (*GeoMetadata) Descriptor() ([]byte, []int) {
   608  	return fileDescriptor_bc7f16796a7f6725, []int{1}
   609  }
   610  func (m *GeoMetadata) XXX_Unmarshal(b []byte) error {
   611  	return m.Unmarshal(b)
   612  }
   613  func (m *GeoMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   614  	b = b[:cap(b)]
   615  	n, err := m.MarshalToSizedBuffer(b)
   616  	if err != nil {
   617  		return nil, err
   618  	}
   619  	return b[:n], nil
   620  }
   621  func (m *GeoMetadata) XXX_Merge(src proto.Message) {
   622  	xxx_messageInfo_GeoMetadata.Merge(m, src)
   623  }
   624  func (m *GeoMetadata) XXX_Size() int {
   625  	return m.Size()
   626  }
   627  func (m *GeoMetadata) XXX_DiscardUnknown() {
   628  	xxx_messageInfo_GeoMetadata.DiscardUnknown(m)
   629  }
   630  
   631  var xxx_messageInfo_GeoMetadata proto.InternalMessageInfo
   632  
   633  // PersistentUserDefinedTypeMetadata contains user defined type metadata
   634  // that will be serialized to disk, unlike other user defined type metadata
   635  // that is only stored in memory once a type is resolved.
   636  type PersistentUserDefinedTypeMetadata struct {
   637  	// ArrayTypeOID is the OID of the array type for this user defined type. It
   638  	// is only set for user defined types that aren't arrays.
   639  	ArrayTypeOID github_com_lib_pq_oid.Oid `protobuf:"varint,2,opt,name=array_type_oid,json=arrayTypeOid,customtype=github.com/lib/pq/oid.Oid" json:"array_type_oid"`
   640  }
   641  
   642  func (m *PersistentUserDefinedTypeMetadata) Reset()         { *m = PersistentUserDefinedTypeMetadata{} }
   643  func (m *PersistentUserDefinedTypeMetadata) String() string { return proto.CompactTextString(m) }
   644  func (*PersistentUserDefinedTypeMetadata) ProtoMessage()    {}
   645  func (*PersistentUserDefinedTypeMetadata) Descriptor() ([]byte, []int) {
   646  	return fileDescriptor_bc7f16796a7f6725, []int{2}
   647  }
   648  func (m *PersistentUserDefinedTypeMetadata) XXX_Unmarshal(b []byte) error {
   649  	return m.Unmarshal(b)
   650  }
   651  func (m *PersistentUserDefinedTypeMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   652  	b = b[:cap(b)]
   653  	n, err := m.MarshalToSizedBuffer(b)
   654  	if err != nil {
   655  		return nil, err
   656  	}
   657  	return b[:n], nil
   658  }
   659  func (m *PersistentUserDefinedTypeMetadata) XXX_Merge(src proto.Message) {
   660  	xxx_messageInfo_PersistentUserDefinedTypeMetadata.Merge(m, src)
   661  }
   662  func (m *PersistentUserDefinedTypeMetadata) XXX_Size() int {
   663  	return m.Size()
   664  }
   665  func (m *PersistentUserDefinedTypeMetadata) XXX_DiscardUnknown() {
   666  	xxx_messageInfo_PersistentUserDefinedTypeMetadata.DiscardUnknown(m)
   667  }
   668  
   669  var xxx_messageInfo_PersistentUserDefinedTypeMetadata proto.InternalMessageInfo
   670  
   671  func (m *T) Reset()      { *m = T{} }
   672  func (*T) ProtoMessage() {}
   673  func (*T) Descriptor() ([]byte, []int) {
   674  	return fileDescriptor_bc7f16796a7f6725, []int{3}
   675  }
   676  func (m *T) XXX_Unmarshal(b []byte) error {
   677  	return xxx_messageInfo_T.Unmarshal(m, b)
   678  }
   679  func (m *T) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   680  	return xxx_messageInfo_T.Marshal(b, m, deterministic)
   681  }
   682  func (m *T) XXX_Merge(src proto.Message) {
   683  	xxx_messageInfo_T.Merge(m, src)
   684  }
   685  func (m *T) XXX_Size() int {
   686  	return xxx_messageInfo_T.Size(m)
   687  }
   688  func (m *T) XXX_DiscardUnknown() {
   689  	xxx_messageInfo_T.DiscardUnknown(m)
   690  }
   691  
   692  var xxx_messageInfo_T proto.InternalMessageInfo
   693  
   694  // InternalType is the protobuf encoding for SQL types. It is always wrapped by
   695  // a T struct, and should never be used directly by outside packages. See the
   696  // comment header for the T struct for more details.
   697  type InternalType struct {
   698  	// Family specifies a group of types that are compatible with one another.
   699  	// See the header for the T.Family method for more details.
   700  	Family Family `protobuf:"varint,1,opt,name=family,enum=cockroach.sql.sem.types.Family" json:"family"`
   701  	// Width is the size or scale of the type, such as number of bits or
   702  	// characters. See the T.Width method for more details.
   703  	Width int32 `protobuf:"varint,2,opt,name=width" json:"width"`
   704  	// Precision is the accuracy of the data type. See the T.Precision method for
   705  	// more details. This field was also by FLOAT pre-2.1 (this was incorrect.)
   706  	Precision int32 `protobuf:"varint,3,opt,name=precision" json:"precision"`
   707  	// ArrayDimensions is deprecated in 19.2, since it was never used. It
   708  	// previously contained the length of each dimension in the array. A
   709  	// dimension of -1 meant that no bound was specified for that dimension. If
   710  	// arrayDimensions was nil, then the array had one unbounded dimension.
   711  	ArrayDimensions []int32 `protobuf:"varint,4,rep,name=array_dimensions,json=arrayDimensions" json:"array_dimensions,omitempty"`
   712  	// Locale identifies a specific geographical, political, or cultural region that
   713  	// impacts various character-based operations such as sorting, pattern matching,
   714  	// and builtin functions like lower and upper. See the T.Locale method for
   715  	// more details.
   716  	Locale *string `protobuf:"bytes,5,opt,name=locale" json:"locale,omitempty"`
   717  	// VisibleType is deprecated in 19.2, since it is now superseded by the Oid
   718  	// field. It previously contained an alias for any types where our internal
   719  	// representation is different than the user specification. Examples are INT4,
   720  	// FLOAT4, etc. Mostly for Postgres compatibility.
   721  	VisibleType int32 `protobuf:"varint,6,opt,name=visible_type,json=visibleType" json:"visible_type"`
   722  	// ArrayElemType is deprecated in 19.2, since it is now superseded by the
   723  	// ArrayContents field. It previously contained the type family of array
   724  	// elements. The other array fields (width/precision/locale/etc) were used
   725  	// to store the other attributes of the array's element type.
   726  	ArrayElemType *Family `protobuf:"varint,7,opt,name=array_elem_type,json=arrayElemType,enum=cockroach.sql.sem.types.Family" json:"array_elem_type,omitempty"`
   727  	// TupleContents returns a slice containing the type of each tuple field. This
   728  	// is nil for non-TUPLE types.
   729  	TupleContents []*T `protobuf:"bytes,8,rep,name=tuple_contents,json=tupleContents" json:"tuple_contents,omitempty"`
   730  	// TupleLabels returns a slice containing the labels of each tuple field. This
   731  	// is nil for non-TUPLE types, or if the TUPLE type does not specify labels.
   732  	TupleLabels []string `protobuf:"bytes,9,rep,name=tuple_labels,json=tupleLabels" json:"tuple_labels,omitempty"`
   733  	// Oid returns the type's Postgres Object ID. See the header for the T.Oid
   734  	// method for more details. For user-defined types, the OID value is an
   735  	// offset (oidext.CockroachPredefinedOIDMax) away from the stable_type_id
   736  	// field. This makes it easy to retrieve a type descriptor by OID.
   737  	Oid github_com_lib_pq_oid.Oid `protobuf:"varint,10,opt,name=oid,customtype=github.com/lib/pq/oid.Oid" json:"oid"`
   738  	// ArrayContents returns the type of array elements. This is nil for non-ARRAY
   739  	// types.
   740  	ArrayContents *T `protobuf:"bytes,11,opt,name=array_contents,json=arrayContents" json:"array_contents,omitempty"`
   741  	// TimePrecisionIsSet indicates whether the precision was explicitly set.
   742  	// It is currently in use for the TIME-related families and INTERVALs
   743  	// where a Precision of 0 indicated the default precision of 6
   744  	// in versions pre-20.1.
   745  	// The rules for Precision to use are as follows:
   746  	//   * If Precision is > 0, then that is the precision.
   747  	//   * If Precision is 0, it will default to 6 if TimePrecisionIsSet is false
   748  	//    (for compatibility reasons).
   749  	//   * Otherwise, Precision = 0 and TimePrecisionIsSet = true, so it is
   750  	//     actually 0.
   751  	TimePrecisionIsSet bool `protobuf:"varint,12,opt,name=time_precision_is_set,json=timePrecisionIsSet" json:"time_precision_is_set"`
   752  	// IntervalDurationField is populated for intervals, representing extra
   753  	// typmod or precision data that may be required.
   754  	IntervalDurationField *IntervalDurationField `protobuf:"bytes,13,opt,name=interval_duration_field,json=intervalDurationField" json:"interval_duration_field,omitempty"`
   755  	// GeoMetadata is populated for geospatial types.
   756  	GeoMetadata *GeoMetadata `protobuf:"bytes,14,opt,name=geo_metadata,json=geoMetadata" json:"geo_metadata,omitempty"`
   757  	// UDTMetadata is populated for user defined types that are not arrays.
   758  	UDTMetadata *PersistentUserDefinedTypeMetadata `protobuf:"bytes,15,opt,name=udt_metadata,json=udtMetadata" json:"udt_metadata,omitempty"`
   759  }
   760  
   761  func (m *InternalType) Reset()         { *m = InternalType{} }
   762  func (m *InternalType) String() string { return proto.CompactTextString(m) }
   763  func (*InternalType) ProtoMessage()    {}
   764  func (*InternalType) Descriptor() ([]byte, []int) {
   765  	return fileDescriptor_bc7f16796a7f6725, []int{4}
   766  }
   767  func (m *InternalType) XXX_Unmarshal(b []byte) error {
   768  	return m.Unmarshal(b)
   769  }
   770  func (m *InternalType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   771  	b = b[:cap(b)]
   772  	n, err := m.MarshalToSizedBuffer(b)
   773  	if err != nil {
   774  		return nil, err
   775  	}
   776  	return b[:n], nil
   777  }
   778  func (m *InternalType) XXX_Merge(src proto.Message) {
   779  	xxx_messageInfo_InternalType.Merge(m, src)
   780  }
   781  func (m *InternalType) XXX_Size() int {
   782  	return m.Size()
   783  }
   784  func (m *InternalType) XXX_DiscardUnknown() {
   785  	xxx_messageInfo_InternalType.DiscardUnknown(m)
   786  }
   787  
   788  var xxx_messageInfo_InternalType proto.InternalMessageInfo
   789  
   790  func init() {
   791  	proto.RegisterEnum("cockroach.parser.sql.sem.types.Family", Family_name, Family_value)
   792  	proto.RegisterEnum("cockroach.parser.sql.sem.types.IntervalDurationType", IntervalDurationType_name, IntervalDurationType_value)
   793  	proto.RegisterType((*IntervalDurationField)(nil), "cockroach.parser.sql.sem.types.IntervalDurationField")
   794  	proto.RegisterType((*GeoMetadata)(nil), "cockroach.parser.sql.sem.types.GeoMetadata")
   795  	proto.RegisterType((*PersistentUserDefinedTypeMetadata)(nil), "cockroach.parser.sql.sem.types.PersistentUserDefinedTypeMetadata")
   796  	proto.RegisterType((*T)(nil), "cockroach.parser.sql.sem.types.T")
   797  	proto.RegisterType((*InternalType)(nil), "cockroach.parser.sql.sem.types.InternalType")
   798  }
   799  
   800  func init() { proto.RegisterFile("sql/types/types.proto", fileDescriptor_bc7f16796a7f6725) }
   801  
   802  var fileDescriptor_bc7f16796a7f6725 = []byte{
   803  	// 1184 bytes of a gzipped FileDescriptorProto
   804  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xcf, 0x8f, 0xdb, 0x44,
   805  	0x14, 0xb6, 0x37, 0x3f, 0x36, 0x99, 0xfc, 0x58, 0x77, 0xba, 0x69, 0xdd, 0x05, 0xe2, 0x34, 0x02,
   806  	0x11, 0x2a, 0x91, 0x88, 0x72, 0x40, 0xaa, 0x84, 0xd0, 0x66, 0x93, 0xa6, 0x29, 0xbb, 0xc9, 0xe2,
   807  	0x38, 0x85, 0xf6, 0x12, 0x39, 0xf1, 0x24, 0x3b, 0xaa, 0xed, 0x49, 0xed, 0x49, 0xcb, 0x1e, 0xe1,
   808  	0xd4, 0x63, 0x8f, 0x1c, 0xbb, 0xe2, 0xc0, 0xbf, 0xb2, 0xbd, 0xf5, 0xc0, 0xa1, 0xe2, 0x10, 0x41,
   809  	0x56, 0xdc, 0x39, 0x73, 0x42, 0x33, 0x1e, 0x3b, 0x5e, 0xd4, 0x2d, 0x2b, 0x2e, 0x91, 0xdf, 0x37,
   810  	0xef, 0x7d, 0xef, 0x7b, 0x6f, 0x9e, 0x9f, 0x03, 0x4a, 0xfe, 0x13, 0xbb, 0x41, 0x8f, 0xe7, 0xc8,
   811  	0x0f, 0x7e, 0xeb, 0x73, 0x8f, 0x50, 0x02, 0xaf, 0x4f, 0xc8, 0xe4, 0xb1, 0x47, 0xcc, 0xc9, 0x51,
   812  	0xdd, 0x7f, 0x62, 0xd7, 0x7d, 0xe4, 0xd4, 0xf9, 0xf1, 0xce, 0xf6, 0x8c, 0xcc, 0x08, 0xf7, 0x69,
   813  	0xb0, 0xa7, 0xc0, 0x7d, 0xa7, 0x34, 0x43, 0xa4, 0x31, 0x43, 0x64, 0x3e, 0x0e, 0x7e, 0x03, 0xb8,
   814  	0xfa, 0xab, 0x0c, 0x4a, 0x5d, 0x97, 0x22, 0xef, 0xa9, 0x69, 0xb7, 0x16, 0x9e, 0x49, 0x31, 0x71,
   815  	0xef, 0x62, 0x64, 0x5b, 0xf0, 0x3b, 0x50, 0xb0, 0x04, 0x30, 0x62, 0xc4, 0xaa, 0x5c, 0x91, 0x6b,
   816  	0xc5, 0xdb, 0x9f, 0xd6, 0x2f, 0xc8, 0x5b, 0xff, 0x37, 0x8d, 0x71, 0x3c, 0x47, 0xcd, 0xe4, 0xe9,
   817  	0x52, 0x93, 0xf4, 0xbc, 0x15, 0xc3, 0xa0, 0x09, 0xe0, 0xd4, 0x23, 0xce, 0xe8, 0x3c, 0xfd, 0xc6,
   818  	0xff, 0xa7, 0x57, 0x18, 0x5d, 0x1c, 0xaf, 0xfe, 0x22, 0x83, 0x5c, 0x07, 0x91, 0x03, 0x44, 0x4d,
   819  	0xcb, 0xa4, 0x26, 0xfc, 0x16, 0x24, 0x7d, 0x0f, 0x5b, 0xbc, 0x86, 0x54, 0x73, 0x8f, 0x45, 0xad,
   820  	0x96, 0x5a, 0x72, 0xa0, 0x77, 0x5b, 0x7f, 0x2f, 0xb5, 0xcf, 0x67, 0x98, 0x1e, 0x2d, 0xc6, 0xf5,
   821  	0x09, 0x71, 0x1a, 0x51, 0x7a, 0x6b, 0xbc, 0x7e, 0x6e, 0xcc, 0x1f, 0xcf, 0x1a, 0x51, 0x03, 0xeb,
   822  	0x2c, 0x4c, 0xe7, 0x84, 0xf0, 0x2b, 0x00, 0xfc, 0x23, 0x73, 0x8e, 0xe2, 0x35, 0xec, 0xc4, 0x6a,
   823  	0x10, 0x01, 0xcc, 0x25, 0x26, 0x38, 0xeb, 0x87, 0x40, 0xf5, 0x47, 0x19, 0xdc, 0x3c, 0x44, 0x9e,
   824  	0x8f, 0x7d, 0x8a, 0x5c, 0x3a, 0xf4, 0x91, 0xd7, 0x42, 0x53, 0xec, 0x22, 0x8b, 0x9d, 0xc6, 0xf4,
   825  	0x17, 0x4d, 0xcf, 0x33, 0x8f, 0x79, 0x9a, 0x11, 0xc1, 0x16, 0x4f, 0x55, 0x68, 0x7e, 0xc6, 0xe8,
   826  	0x7e, 0x5b, 0x6a, 0x37, 0x62, 0x15, 0xd8, 0x78, 0xdc, 0x98, 0x3f, 0x69, 0x10, 0x6c, 0xd5, 0xfb,
   827  	0xd8, 0x5a, 0x2d, 0xb5, 0xfc, 0x2e, 0x0b, 0x65, 0x7c, 0xfd, 0x6e, 0x4b, 0xcf, 0x9b, 0x91, 0x85,
   828  	0xad, 0xfb, 0xc9, 0x8c, 0xac, 0x6c, 0x54, 0x09, 0x90, 0x0d, 0x78, 0x08, 0x0a, 0x98, 0xf5, 0xd8,
   829  	0x35, 0xed, 0xf5, 0x85, 0xe7, 0x6e, 0x7f, 0xf4, 0xee, 0x1b, 0x71, 0x4d, 0x3b, 0x7e, 0xd1, 0x38,
   830  	0x86, 0xdd, 0x51, 0x9f, 0xbf, 0xd4, 0xa4, 0x9f, 0x5e, 0x6a, 0xd2, 0xf3, 0x13, 0x4d, 0x7a, 0x71,
   831  	0xa2, 0x49, 0x2f, 0x4f, 0x34, 0xe9, 0xaf, 0x13, 0x4d, 0xaa, 0xfe, 0xb0, 0x09, 0xf2, 0xf1, 0x70,
   832  	0xf8, 0x25, 0x48, 0x4f, 0x4d, 0x07, 0xdb, 0xc7, 0x62, 0xcc, 0xb4, 0x0b, 0xb3, 0xde, 0xe5, 0x6e,
   833  	0x22, 0x9f, 0x08, 0x82, 0x3b, 0x20, 0xf5, 0x0c, 0x5b, 0xf4, 0x88, 0xb7, 0x25, 0x25, 0x0e, 0x03,
   834  	0x08, 0x56, 0x41, 0x76, 0xee, 0xa1, 0x09, 0xf6, 0x31, 0x71, 0xd5, 0x44, 0xec, 0x7c, 0x0d, 0xc3,
   835  	0x4f, 0x80, 0x12, 0xf4, 0xd7, 0xc2, 0x0e, 0x72, 0x19, 0xe4, 0xab, 0xc9, 0x4a, 0xa2, 0x96, 0xd2,
   836  	0xb7, 0x38, 0xde, 0x8a, 0x60, 0x78, 0x0d, 0xa4, 0x6d, 0x32, 0x31, 0x6d, 0xa4, 0xa6, 0x2a, 0x72,
   837  	0x2d, 0xab, 0x0b, 0x0b, 0x7e, 0x0c, 0xf2, 0x4f, 0xb1, 0x8f, 0xc7, 0xb6, 0x98, 0x85, 0x74, 0x2c,
   838  	0x53, 0x4e, 0x9c, 0xf0, 0x52, 0x3b, 0x20, 0xe0, 0x1c, 0x21, 0x1b, 0x39, 0x81, 0xef, 0xe6, 0xa5,
   839  	0x6a, 0xd6, 0x0b, 0x3c, 0xae, 0x6d, 0x23, 0x87, 0x13, 0xed, 0x82, 0x22, 0x5d, 0xcc, 0x6d, 0x34,
   840  	0x9a, 0x10, 0x97, 0x0d, 0x8f, 0xaf, 0x66, 0x2a, 0x89, 0x5a, 0xee, 0xdc, 0xfc, 0x9d, 0xe7, 0x31,
   841  	0xf4, 0x02, 0x8f, 0xd8, 0x13, 0x01, 0xf0, 0x26, 0xc8, 0x07, 0x14, 0xb6, 0x39, 0x46, 0xb6, 0xaf,
   842  	0x66, 0x2b, 0x89, 0x5a, 0x56, 0xcf, 0x71, 0x6c, 0x9f, 0x43, 0xf0, 0x0e, 0x48, 0xb0, 0x79, 0x03,
   843  	0x7c, 0xde, 0x6a, 0x97, 0x99, 0xb7, 0x44, 0x1f, 0x5b, 0x3a, 0x0b, 0x62, 0x0a, 0x83, 0x52, 0x23,
   844  	0x85, 0x39, 0x3e, 0x53, 0xef, 0x54, 0xc8, 0x23, 0x22, 0x85, 0x5f, 0x80, 0x12, 0xc5, 0x0e, 0x1a,
   845  	0x45, 0x77, 0x35, 0xc2, 0xfe, 0xc8, 0x47, 0x54, 0xcd, 0x57, 0xe4, 0x5a, 0x46, 0xf4, 0x17, 0x32,
   846  	0x97, 0xc3, 0xd0, 0xa3, 0xeb, 0x0f, 0x10, 0x85, 0x53, 0x70, 0x1d, 0x8b, 0x95, 0xb1, 0xde, 0x34,
   847  	0x53, 0xb6, 0xda, 0xd4, 0x02, 0x17, 0x51, 0xbf, 0xf4, 0xaa, 0xe1, 0x0b, 0x51, 0x2f, 0xe1, 0xb7,
   848  	0xee, 0xc9, 0x0e, 0xc8, 0xcf, 0x10, 0x19, 0x39, 0xe2, 0x55, 0x55, 0x8b, 0x9c, 0xfc, 0xc3, 0x0b,
   849  	0xc9, 0x63, 0x6b, 0x49, 0xcf, 0xcd, 0x62, 0x3b, 0xca, 0x05, 0xf9, 0x85, 0x45, 0xd7, 0x44, 0x5b,
   850  	0x9c, 0xe8, 0xce, 0x85, 0x44, 0xff, 0xb9, 0x35, 0x9a, 0x5b, 0xab, 0xa5, 0x96, 0x1b, 0xb6, 0x8c,
   851  	0x75, 0xbe, 0x85, 0x45, 0x43, 0xe3, 0xd6, 0x9f, 0x49, 0x90, 0x0e, 0x06, 0x0b, 0x16, 0x01, 0x68,
   852  	0x12, 0x62, 0x07, 0x96, 0x22, 0xc1, 0x02, 0xc8, 0x76, 0x5d, 0x2a, 0x4c, 0x19, 0x6e, 0x81, 0xdc,
   853  	0x5d, 0x9b, 0x98, 0x21, 0xb0, 0x01, 0xaf, 0x80, 0x42, 0x0b, 0x4d, 0xb0, 0x63, 0x86, 0x21, 0x09,
   854  	0x46, 0xd1, 0x32, 0x29, 0x12, 0x76, 0x12, 0x5e, 0x05, 0x5b, 0x06, 0x76, 0x90, 0x4f, 0x4d, 0x67,
   855  	0x2e, 0xc0, 0x14, 0x84, 0xa0, 0x18, 0xf6, 0x56, 0x60, 0x69, 0xa8, 0x80, 0xfc, 0x80, 0x7a, 0xd8,
   856  	0x9d, 0x09, 0x64, 0x93, 0xa5, 0x6b, 0x1e, 0x53, 0xe4, 0x0b, 0x20, 0x03, 0x4b, 0xe0, 0x4a, 0xc4,
   857  	0x65, 0x3c, 0x12, 0x70, 0x16, 0xaa, 0x60, 0x7b, 0x8f, 0xd8, 0xb6, 0x49, 0x91, 0x75, 0x8e, 0x01,
   858  	0x30, 0xfd, 0x7d, 0x6c, 0x09, 0x33, 0xcf, 0xe4, 0x0e, 0xdd, 0xc7, 0x2e, 0x79, 0xe6, 0x0a, 0xa8,
   859  	0xc0, 0xe4, 0x0e, 0x17, 0x91, 0x4b, 0x91, 0xe5, 0xe4, 0x5b, 0x52, 0x00, 0x5b, 0xcc, 0xa1, 0xdb,
   860  	0x43, 0x61, 0xc9, 0x0a, 0xb3, 0x99, 0x06, 0x61, 0x5f, 0x61, 0xf6, 0x7d, 0x9f, 0x84, 0x84, 0x90,
   861  	0x95, 0xc1, 0xce, 0x23, 0x79, 0x57, 0x19, 0xa5, 0xc1, 0xde, 0x23, 0x01, 0x6c, 0x33, 0x55, 0x4d,
   862  	0x1c, 0x32, 0x96, 0x58, 0x33, 0x3a, 0x88, 0x38, 0x88, 0x7a, 0x61, 0xd6, 0x6b, 0xac, 0x6b, 0x1d,
   863  	0x44, 0x66, 0x9e, 0x39, 0x3f, 0x0a, 0xc1, 0xeb, 0x2c, 0x55, 0xdb, 0x5d, 0x38, 0xc2, 0x56, 0x79,
   864  	0x7f, 0xc8, 0xf7, 0xb7, 0x5b, 0x02, 0xb8, 0xc1, 0x1c, 0x1e, 0x90, 0xa8, 0x98, 0x1d, 0xb8, 0x0d,
   865  	0x94, 0xb6, 0x3b, 0x21, 0x16, 0xb2, 0xbe, 0x46, 0x21, 0xcd, 0x7b, 0xac, 0x0b, 0xc6, 0xe0, 0x9b,
   866  	0x05, 0x8a, 0xd2, 0xbd, 0xcf, 0x24, 0x18, 0x83, 0x07, 0x68, 0x42, 0x89, 0x27, 0xb0, 0x0f, 0x18,
   867  	0xfb, 0x61, 0x67, 0x7f, 0xd0, 0x13, 0x40, 0x99, 0x69, 0xd2, 0xd1, 0x74, 0x6f, 0xe1, 0xf9, 0x91,
   868  	0x97, 0xc6, 0x6a, 0xd9, 0x75, 0x43, 0x22, 0x6b, 0x27, 0xf9, 0xfc, 0xe7, 0xb2, 0x54, 0x4d, 0x66,
   869  	0x72, 0x4a, 0xae, 0x9a, 0xce, 0x9c, 0xca, 0xca, 0xa9, 0x5c, 0x4d, 0x67, 0x5e, 0xc9, 0xca, 0x2b,
   870  	0xf9, 0x96, 0x07, 0xb6, 0xdf, 0xf6, 0xed, 0x86, 0x59, 0x90, 0x1a, 0xf6, 0x06, 0x6d, 0x43, 0x91,
   871  	0x60, 0x06, 0x24, 0x1f, 0xb6, 0x77, 0x75, 0x45, 0x66, 0xe0, 0x41, 0xbf, 0x67, 0xdc, 0x53, 0x36,
   872  	0xe0, 0x26, 0x48, 0xb4, 0x76, 0x1f, 0x2a, 0x09, 0x76, 0x7a, 0xaf, 0x3f, 0xd4, 0x95, 0x24, 0x04,
   873  	0x20, 0x7d, 0xd0, 0xed, 0x0d, 0x8d, 0xb6, 0x92, 0x62, 0xcf, 0x83, 0xf6, 0x5e, 0xbf, 0xd7, 0x52,
   874  	0xd2, 0x4c, 0xf3, 0x41, 0x77, 0x7f, 0xbf, 0x2b, 0x80, 0xcd, 0xe6, 0xe1, 0xe9, 0x1f, 0x65, 0xe9,
   875  	0x74, 0x55, 0x96, 0x5f, 0xaf, 0xca, 0xf2, 0x9b, 0x55, 0x59, 0xfe, 0x7d, 0x55, 0x96, 0x5f, 0x9c,
   876  	0x95, 0xa5, 0xd7, 0x67, 0x65, 0xe9, 0xcd, 0x59, 0x59, 0x7a, 0x54, 0xbf, 0xd4, 0x37, 0x3f, 0xfa,
   877  	0xeb, 0xf5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xed, 0x5f, 0xa0, 0x90, 0x86, 0x09, 0x00, 0x00,
   878  }
   879  
   880  func (m *IntervalDurationField) Marshal() (dAtA []byte, err error) {
   881  	size := m.Size()
   882  	dAtA = make([]byte, size)
   883  	n, err := m.MarshalToSizedBuffer(dAtA[:size])
   884  	if err != nil {
   885  		return nil, err
   886  	}
   887  	return dAtA[:n], nil
   888  }
   889  
   890  func (m *IntervalDurationField) MarshalTo(dAtA []byte) (int, error) {
   891  	size := m.Size()
   892  	return m.MarshalToSizedBuffer(dAtA[:size])
   893  }
   894  
   895  func (m *IntervalDurationField) MarshalToSizedBuffer(dAtA []byte) (int, error) {
   896  	i := len(dAtA)
   897  	_ = i
   898  	var l int
   899  	_ = l
   900  	i = encodeVarintTypes(dAtA, i, uint64(m.FromDurationType))
   901  	i--
   902  	dAtA[i] = 0x10
   903  	i = encodeVarintTypes(dAtA, i, uint64(m.DurationType))
   904  	i--
   905  	dAtA[i] = 0x8
   906  	return len(dAtA) - i, nil
   907  }
   908  
   909  func (m *GeoMetadata) Marshal() (dAtA []byte, err error) {
   910  	size := m.Size()
   911  	dAtA = make([]byte, size)
   912  	n, err := m.MarshalToSizedBuffer(dAtA[:size])
   913  	if err != nil {
   914  		return nil, err
   915  	}
   916  	return dAtA[:n], nil
   917  }
   918  
   919  func (m *GeoMetadata) MarshalTo(dAtA []byte) (int, error) {
   920  	size := m.Size()
   921  	return m.MarshalToSizedBuffer(dAtA[:size])
   922  }
   923  
   924  func (m *GeoMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) {
   925  	i := len(dAtA)
   926  	_ = i
   927  	var l int
   928  	_ = l
   929  	i = encodeVarintTypes(dAtA, i, uint64(m.ShapeType))
   930  	i--
   931  	dAtA[i] = 0x10
   932  	i = encodeVarintTypes(dAtA, i, uint64(m.SRID))
   933  	i--
   934  	dAtA[i] = 0x8
   935  	return len(dAtA) - i, nil
   936  }
   937  
   938  func (m *PersistentUserDefinedTypeMetadata) Marshal() (dAtA []byte, err error) {
   939  	size := m.Size()
   940  	dAtA = make([]byte, size)
   941  	n, err := m.MarshalToSizedBuffer(dAtA[:size])
   942  	if err != nil {
   943  		return nil, err
   944  	}
   945  	return dAtA[:n], nil
   946  }
   947  
   948  func (m *PersistentUserDefinedTypeMetadata) MarshalTo(dAtA []byte) (int, error) {
   949  	size := m.Size()
   950  	return m.MarshalToSizedBuffer(dAtA[:size])
   951  }
   952  
   953  func (m *PersistentUserDefinedTypeMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) {
   954  	i := len(dAtA)
   955  	_ = i
   956  	var l int
   957  	_ = l
   958  	i = encodeVarintTypes(dAtA, i, uint64(m.ArrayTypeOID))
   959  	i--
   960  	dAtA[i] = 0x10
   961  	return len(dAtA) - i, nil
   962  }
   963  
   964  func (m *InternalType) Marshal() (dAtA []byte, err error) {
   965  	size := m.Size()
   966  	dAtA = make([]byte, size)
   967  	n, err := m.MarshalToSizedBuffer(dAtA[:size])
   968  	if err != nil {
   969  		return nil, err
   970  	}
   971  	return dAtA[:n], nil
   972  }
   973  
   974  func (m *InternalType) MarshalTo(dAtA []byte) (int, error) {
   975  	size := m.Size()
   976  	return m.MarshalToSizedBuffer(dAtA[:size])
   977  }
   978  
   979  func (m *InternalType) MarshalToSizedBuffer(dAtA []byte) (int, error) {
   980  	i := len(dAtA)
   981  	_ = i
   982  	var l int
   983  	_ = l
   984  	if m.UDTMetadata != nil {
   985  		{
   986  			size, err := m.UDTMetadata.MarshalToSizedBuffer(dAtA[:i])
   987  			if err != nil {
   988  				return 0, err
   989  			}
   990  			i -= size
   991  			i = encodeVarintTypes(dAtA, i, uint64(size))
   992  		}
   993  		i--
   994  		dAtA[i] = 0x7a
   995  	}
   996  	if m.GeoMetadata != nil {
   997  		{
   998  			size, err := m.GeoMetadata.MarshalToSizedBuffer(dAtA[:i])
   999  			if err != nil {
  1000  				return 0, err
  1001  			}
  1002  			i -= size
  1003  			i = encodeVarintTypes(dAtA, i, uint64(size))
  1004  		}
  1005  		i--
  1006  		dAtA[i] = 0x72
  1007  	}
  1008  	if m.IntervalDurationField != nil {
  1009  		{
  1010  			size, err := m.IntervalDurationField.MarshalToSizedBuffer(dAtA[:i])
  1011  			if err != nil {
  1012  				return 0, err
  1013  			}
  1014  			i -= size
  1015  			i = encodeVarintTypes(dAtA, i, uint64(size))
  1016  		}
  1017  		i--
  1018  		dAtA[i] = 0x6a
  1019  	}
  1020  	i--
  1021  	if m.TimePrecisionIsSet {
  1022  		dAtA[i] = 1
  1023  	} else {
  1024  		dAtA[i] = 0
  1025  	}
  1026  	i--
  1027  	dAtA[i] = 0x60
  1028  	if m.ArrayContents != nil {
  1029  		{
  1030  			size, err := m.ArrayContents.MarshalToSizedBuffer(dAtA[:i])
  1031  			if err != nil {
  1032  				return 0, err
  1033  			}
  1034  			i -= size
  1035  			i = encodeVarintTypes(dAtA, i, uint64(size))
  1036  		}
  1037  		i--
  1038  		dAtA[i] = 0x5a
  1039  	}
  1040  	i = encodeVarintTypes(dAtA, i, uint64(m.Oid))
  1041  	i--
  1042  	dAtA[i] = 0x50
  1043  	if len(m.TupleLabels) > 0 {
  1044  		for iNdEx := len(m.TupleLabels) - 1; iNdEx >= 0; iNdEx-- {
  1045  			i -= len(m.TupleLabels[iNdEx])
  1046  			copy(dAtA[i:], m.TupleLabels[iNdEx])
  1047  			i = encodeVarintTypes(dAtA, i, uint64(len(m.TupleLabels[iNdEx])))
  1048  			i--
  1049  			dAtA[i] = 0x4a
  1050  		}
  1051  	}
  1052  	if len(m.TupleContents) > 0 {
  1053  		for iNdEx := len(m.TupleContents) - 1; iNdEx >= 0; iNdEx-- {
  1054  			{
  1055  				size, err := m.TupleContents[iNdEx].MarshalToSizedBuffer(dAtA[:i])
  1056  				if err != nil {
  1057  					return 0, err
  1058  				}
  1059  				i -= size
  1060  				i = encodeVarintTypes(dAtA, i, uint64(size))
  1061  			}
  1062  			i--
  1063  			dAtA[i] = 0x42
  1064  		}
  1065  	}
  1066  	if m.ArrayElemType != nil {
  1067  		i = encodeVarintTypes(dAtA, i, uint64(*m.ArrayElemType))
  1068  		i--
  1069  		dAtA[i] = 0x38
  1070  	}
  1071  	i = encodeVarintTypes(dAtA, i, uint64(m.VisibleType))
  1072  	i--
  1073  	dAtA[i] = 0x30
  1074  	if m.Locale != nil {
  1075  		i -= len(*m.Locale)
  1076  		copy(dAtA[i:], *m.Locale)
  1077  		i = encodeVarintTypes(dAtA, i, uint64(len(*m.Locale)))
  1078  		i--
  1079  		dAtA[i] = 0x2a
  1080  	}
  1081  	if len(m.ArrayDimensions) > 0 {
  1082  		for iNdEx := len(m.ArrayDimensions) - 1; iNdEx >= 0; iNdEx-- {
  1083  			i = encodeVarintTypes(dAtA, i, uint64(m.ArrayDimensions[iNdEx]))
  1084  			i--
  1085  			dAtA[i] = 0x20
  1086  		}
  1087  	}
  1088  	i = encodeVarintTypes(dAtA, i, uint64(m.Precision))
  1089  	i--
  1090  	dAtA[i] = 0x18
  1091  	i = encodeVarintTypes(dAtA, i, uint64(m.Width))
  1092  	i--
  1093  	dAtA[i] = 0x10
  1094  	i = encodeVarintTypes(dAtA, i, uint64(m.Family))
  1095  	i--
  1096  	dAtA[i] = 0x8
  1097  	return len(dAtA) - i, nil
  1098  }
  1099  
  1100  func encodeVarintTypes(dAtA []byte, offset int, v uint64) int {
  1101  	offset -= sovTypes(v)
  1102  	base := offset
  1103  	for v >= 1<<7 {
  1104  		dAtA[offset] = uint8(v&0x7f | 0x80)
  1105  		v >>= 7
  1106  		offset++
  1107  	}
  1108  	dAtA[offset] = uint8(v)
  1109  	return base
  1110  }
  1111  func (m *IntervalDurationField) Size() (n int) {
  1112  	if m == nil {
  1113  		return 0
  1114  	}
  1115  	var l int
  1116  	_ = l
  1117  	n += 1 + sovTypes(uint64(m.DurationType))
  1118  	n += 1 + sovTypes(uint64(m.FromDurationType))
  1119  	return n
  1120  }
  1121  
  1122  func (m *GeoMetadata) Size() (n int) {
  1123  	if m == nil {
  1124  		return 0
  1125  	}
  1126  	var l int
  1127  	_ = l
  1128  	n += 1 + sovTypes(uint64(m.SRID))
  1129  	n += 1 + sovTypes(uint64(m.ShapeType))
  1130  	return n
  1131  }
  1132  
  1133  func (m *PersistentUserDefinedTypeMetadata) Size() (n int) {
  1134  	if m == nil {
  1135  		return 0
  1136  	}
  1137  	var l int
  1138  	_ = l
  1139  	n += 1 + sovTypes(uint64(m.ArrayTypeOID))
  1140  	return n
  1141  }
  1142  
  1143  func (m *InternalType) Size() (n int) {
  1144  	if m == nil {
  1145  		return 0
  1146  	}
  1147  	var l int
  1148  	_ = l
  1149  	n += 1 + sovTypes(uint64(m.Family))
  1150  	n += 1 + sovTypes(uint64(m.Width))
  1151  	n += 1 + sovTypes(uint64(m.Precision))
  1152  	if len(m.ArrayDimensions) > 0 {
  1153  		for _, e := range m.ArrayDimensions {
  1154  			n += 1 + sovTypes(uint64(e))
  1155  		}
  1156  	}
  1157  	if m.Locale != nil {
  1158  		l = len(*m.Locale)
  1159  		n += 1 + l + sovTypes(uint64(l))
  1160  	}
  1161  	n += 1 + sovTypes(uint64(m.VisibleType))
  1162  	if m.ArrayElemType != nil {
  1163  		n += 1 + sovTypes(uint64(*m.ArrayElemType))
  1164  	}
  1165  	if len(m.TupleContents) > 0 {
  1166  		for _, e := range m.TupleContents {
  1167  			l = e.Size()
  1168  			n += 1 + l + sovTypes(uint64(l))
  1169  		}
  1170  	}
  1171  	if len(m.TupleLabels) > 0 {
  1172  		for _, s := range m.TupleLabels {
  1173  			l = len(s)
  1174  			n += 1 + l + sovTypes(uint64(l))
  1175  		}
  1176  	}
  1177  	n += 1 + sovTypes(uint64(m.Oid))
  1178  	if m.ArrayContents != nil {
  1179  		l = m.ArrayContents.Size()
  1180  		n += 1 + l + sovTypes(uint64(l))
  1181  	}
  1182  	n += 2
  1183  	if m.IntervalDurationField != nil {
  1184  		l = m.IntervalDurationField.Size()
  1185  		n += 1 + l + sovTypes(uint64(l))
  1186  	}
  1187  	if m.GeoMetadata != nil {
  1188  		l = m.GeoMetadata.Size()
  1189  		n += 1 + l + sovTypes(uint64(l))
  1190  	}
  1191  	if m.UDTMetadata != nil {
  1192  		l = m.UDTMetadata.Size()
  1193  		n += 1 + l + sovTypes(uint64(l))
  1194  	}
  1195  	return n
  1196  }
  1197  
  1198  func sovTypes(x uint64) (n int) {
  1199  	return (math_bits.Len64(x|1) + 6) / 7
  1200  }
  1201  func sozTypes(x uint64) (n int) {
  1202  	return sovTypes(uint64((x << 1) ^ uint64((int64(x) >> 63))))
  1203  }
  1204  func (m *IntervalDurationField) Unmarshal(dAtA []byte) error {
  1205  	l := len(dAtA)
  1206  	iNdEx := 0
  1207  	for iNdEx < l {
  1208  		preIndex := iNdEx
  1209  		var wire uint64
  1210  		for shift := uint(0); ; shift += 7 {
  1211  			if shift >= 64 {
  1212  				return ErrIntOverflowTypes
  1213  			}
  1214  			if iNdEx >= l {
  1215  				return io.ErrUnexpectedEOF
  1216  			}
  1217  			b := dAtA[iNdEx]
  1218  			iNdEx++
  1219  			wire |= uint64(b&0x7F) << shift
  1220  			if b < 0x80 {
  1221  				break
  1222  			}
  1223  		}
  1224  		fieldNum := int32(wire >> 3)
  1225  		wireType := int(wire & 0x7)
  1226  		if wireType == 4 {
  1227  			return fmt.Errorf("proto: IntervalDurationField: wiretype end group for non-group")
  1228  		}
  1229  		if fieldNum <= 0 {
  1230  			return fmt.Errorf("proto: IntervalDurationField: illegal tag %d (wire type %d)", fieldNum, wire)
  1231  		}
  1232  		switch fieldNum {
  1233  		case 1:
  1234  			if wireType != 0 {
  1235  				return fmt.Errorf("proto: wrong wireType = %d for field DurationType", wireType)
  1236  			}
  1237  			m.DurationType = 0
  1238  			for shift := uint(0); ; shift += 7 {
  1239  				if shift >= 64 {
  1240  					return ErrIntOverflowTypes
  1241  				}
  1242  				if iNdEx >= l {
  1243  					return io.ErrUnexpectedEOF
  1244  				}
  1245  				b := dAtA[iNdEx]
  1246  				iNdEx++
  1247  				m.DurationType |= IntervalDurationType(b&0x7F) << shift
  1248  				if b < 0x80 {
  1249  					break
  1250  				}
  1251  			}
  1252  		case 2:
  1253  			if wireType != 0 {
  1254  				return fmt.Errorf("proto: wrong wireType = %d for field FromDurationType", wireType)
  1255  			}
  1256  			m.FromDurationType = 0
  1257  			for shift := uint(0); ; shift += 7 {
  1258  				if shift >= 64 {
  1259  					return ErrIntOverflowTypes
  1260  				}
  1261  				if iNdEx >= l {
  1262  					return io.ErrUnexpectedEOF
  1263  				}
  1264  				b := dAtA[iNdEx]
  1265  				iNdEx++
  1266  				m.FromDurationType |= IntervalDurationType(b&0x7F) << shift
  1267  				if b < 0x80 {
  1268  					break
  1269  				}
  1270  			}
  1271  		default:
  1272  			iNdEx = preIndex
  1273  			skippy, err := skipTypes(dAtA[iNdEx:])
  1274  			if err != nil {
  1275  				return err
  1276  			}
  1277  			if (skippy < 0) || (iNdEx+skippy) < 0 {
  1278  				return ErrInvalidLengthTypes
  1279  			}
  1280  			if (iNdEx + skippy) > l {
  1281  				return io.ErrUnexpectedEOF
  1282  			}
  1283  			iNdEx += skippy
  1284  		}
  1285  	}
  1286  
  1287  	if iNdEx > l {
  1288  		return io.ErrUnexpectedEOF
  1289  	}
  1290  	return nil
  1291  }
  1292  func (m *GeoMetadata) Unmarshal(dAtA []byte) error {
  1293  	l := len(dAtA)
  1294  	iNdEx := 0
  1295  	for iNdEx < l {
  1296  		preIndex := iNdEx
  1297  		var wire uint64
  1298  		for shift := uint(0); ; shift += 7 {
  1299  			if shift >= 64 {
  1300  				return ErrIntOverflowTypes
  1301  			}
  1302  			if iNdEx >= l {
  1303  				return io.ErrUnexpectedEOF
  1304  			}
  1305  			b := dAtA[iNdEx]
  1306  			iNdEx++
  1307  			wire |= uint64(b&0x7F) << shift
  1308  			if b < 0x80 {
  1309  				break
  1310  			}
  1311  		}
  1312  		fieldNum := int32(wire >> 3)
  1313  		wireType := int(wire & 0x7)
  1314  		if wireType == 4 {
  1315  			return fmt.Errorf("proto: GeoMetadata: wiretype end group for non-group")
  1316  		}
  1317  		if fieldNum <= 0 {
  1318  			return fmt.Errorf("proto: GeoMetadata: illegal tag %d (wire type %d)", fieldNum, wire)
  1319  		}
  1320  		switch fieldNum {
  1321  		case 1:
  1322  			if wireType != 0 {
  1323  				return fmt.Errorf("proto: wrong wireType = %d for field SRID", wireType)
  1324  			}
  1325  			m.SRID = 0
  1326  			for shift := uint(0); ; shift += 7 {
  1327  				if shift >= 64 {
  1328  					return ErrIntOverflowTypes
  1329  				}
  1330  				if iNdEx >= l {
  1331  					return io.ErrUnexpectedEOF
  1332  				}
  1333  				b := dAtA[iNdEx]
  1334  				iNdEx++
  1335  				m.SRID |= github_com_cockroachdb_cockroach_pkg_geo_geopb.SRID(b&0x7F) << shift
  1336  				if b < 0x80 {
  1337  					break
  1338  				}
  1339  			}
  1340  		case 2:
  1341  			if wireType != 0 {
  1342  				return fmt.Errorf("proto: wrong wireType = %d for field ShapeType", wireType)
  1343  			}
  1344  			m.ShapeType = 0
  1345  			for shift := uint(0); ; shift += 7 {
  1346  				if shift >= 64 {
  1347  					return ErrIntOverflowTypes
  1348  				}
  1349  				if iNdEx >= l {
  1350  					return io.ErrUnexpectedEOF
  1351  				}
  1352  				b := dAtA[iNdEx]
  1353  				iNdEx++
  1354  				m.ShapeType |= geopb.ShapeType(b&0x7F) << shift
  1355  				if b < 0x80 {
  1356  					break
  1357  				}
  1358  			}
  1359  		default:
  1360  			iNdEx = preIndex
  1361  			skippy, err := skipTypes(dAtA[iNdEx:])
  1362  			if err != nil {
  1363  				return err
  1364  			}
  1365  			if (skippy < 0) || (iNdEx+skippy) < 0 {
  1366  				return ErrInvalidLengthTypes
  1367  			}
  1368  			if (iNdEx + skippy) > l {
  1369  				return io.ErrUnexpectedEOF
  1370  			}
  1371  			iNdEx += skippy
  1372  		}
  1373  	}
  1374  
  1375  	if iNdEx > l {
  1376  		return io.ErrUnexpectedEOF
  1377  	}
  1378  	return nil
  1379  }
  1380  func (m *PersistentUserDefinedTypeMetadata) Unmarshal(dAtA []byte) error {
  1381  	l := len(dAtA)
  1382  	iNdEx := 0
  1383  	for iNdEx < l {
  1384  		preIndex := iNdEx
  1385  		var wire uint64
  1386  		for shift := uint(0); ; shift += 7 {
  1387  			if shift >= 64 {
  1388  				return ErrIntOverflowTypes
  1389  			}
  1390  			if iNdEx >= l {
  1391  				return io.ErrUnexpectedEOF
  1392  			}
  1393  			b := dAtA[iNdEx]
  1394  			iNdEx++
  1395  			wire |= uint64(b&0x7F) << shift
  1396  			if b < 0x80 {
  1397  				break
  1398  			}
  1399  		}
  1400  		fieldNum := int32(wire >> 3)
  1401  		wireType := int(wire & 0x7)
  1402  		if wireType == 4 {
  1403  			return fmt.Errorf("proto: PersistentUserDefinedTypeMetadata: wiretype end group for non-group")
  1404  		}
  1405  		if fieldNum <= 0 {
  1406  			return fmt.Errorf("proto: PersistentUserDefinedTypeMetadata: illegal tag %d (wire type %d)", fieldNum, wire)
  1407  		}
  1408  		switch fieldNum {
  1409  		case 2:
  1410  			if wireType != 0 {
  1411  				return fmt.Errorf("proto: wrong wireType = %d for field ArrayTypeOID", wireType)
  1412  			}
  1413  			m.ArrayTypeOID = 0
  1414  			for shift := uint(0); ; shift += 7 {
  1415  				if shift >= 64 {
  1416  					return ErrIntOverflowTypes
  1417  				}
  1418  				if iNdEx >= l {
  1419  					return io.ErrUnexpectedEOF
  1420  				}
  1421  				b := dAtA[iNdEx]
  1422  				iNdEx++
  1423  				m.ArrayTypeOID |= github_com_lib_pq_oid.Oid(b&0x7F) << shift
  1424  				if b < 0x80 {
  1425  					break
  1426  				}
  1427  			}
  1428  		default:
  1429  			iNdEx = preIndex
  1430  			skippy, err := skipTypes(dAtA[iNdEx:])
  1431  			if err != nil {
  1432  				return err
  1433  			}
  1434  			if (skippy < 0) || (iNdEx+skippy) < 0 {
  1435  				return ErrInvalidLengthTypes
  1436  			}
  1437  			if (iNdEx + skippy) > l {
  1438  				return io.ErrUnexpectedEOF
  1439  			}
  1440  			iNdEx += skippy
  1441  		}
  1442  	}
  1443  
  1444  	if iNdEx > l {
  1445  		return io.ErrUnexpectedEOF
  1446  	}
  1447  	return nil
  1448  }
  1449  func (m *InternalType) Unmarshal(dAtA []byte) error {
  1450  	l := len(dAtA)
  1451  	iNdEx := 0
  1452  	for iNdEx < l {
  1453  		preIndex := iNdEx
  1454  		var wire uint64
  1455  		for shift := uint(0); ; shift += 7 {
  1456  			if shift >= 64 {
  1457  				return ErrIntOverflowTypes
  1458  			}
  1459  			if iNdEx >= l {
  1460  				return io.ErrUnexpectedEOF
  1461  			}
  1462  			b := dAtA[iNdEx]
  1463  			iNdEx++
  1464  			wire |= uint64(b&0x7F) << shift
  1465  			if b < 0x80 {
  1466  				break
  1467  			}
  1468  		}
  1469  		fieldNum := int32(wire >> 3)
  1470  		wireType := int(wire & 0x7)
  1471  		if wireType == 4 {
  1472  			return fmt.Errorf("proto: InternalType: wiretype end group for non-group")
  1473  		}
  1474  		if fieldNum <= 0 {
  1475  			return fmt.Errorf("proto: InternalType: illegal tag %d (wire type %d)", fieldNum, wire)
  1476  		}
  1477  		switch fieldNum {
  1478  		case 1:
  1479  			if wireType != 0 {
  1480  				return fmt.Errorf("proto: wrong wireType = %d for field Family", wireType)
  1481  			}
  1482  			m.Family = 0
  1483  			for shift := uint(0); ; shift += 7 {
  1484  				if shift >= 64 {
  1485  					return ErrIntOverflowTypes
  1486  				}
  1487  				if iNdEx >= l {
  1488  					return io.ErrUnexpectedEOF
  1489  				}
  1490  				b := dAtA[iNdEx]
  1491  				iNdEx++
  1492  				m.Family |= Family(b&0x7F) << shift
  1493  				if b < 0x80 {
  1494  					break
  1495  				}
  1496  			}
  1497  		case 2:
  1498  			if wireType != 0 {
  1499  				return fmt.Errorf("proto: wrong wireType = %d for field Width", wireType)
  1500  			}
  1501  			m.Width = 0
  1502  			for shift := uint(0); ; shift += 7 {
  1503  				if shift >= 64 {
  1504  					return ErrIntOverflowTypes
  1505  				}
  1506  				if iNdEx >= l {
  1507  					return io.ErrUnexpectedEOF
  1508  				}
  1509  				b := dAtA[iNdEx]
  1510  				iNdEx++
  1511  				m.Width |= int32(b&0x7F) << shift
  1512  				if b < 0x80 {
  1513  					break
  1514  				}
  1515  			}
  1516  		case 3:
  1517  			if wireType != 0 {
  1518  				return fmt.Errorf("proto: wrong wireType = %d for field Precision", wireType)
  1519  			}
  1520  			m.Precision = 0
  1521  			for shift := uint(0); ; shift += 7 {
  1522  				if shift >= 64 {
  1523  					return ErrIntOverflowTypes
  1524  				}
  1525  				if iNdEx >= l {
  1526  					return io.ErrUnexpectedEOF
  1527  				}
  1528  				b := dAtA[iNdEx]
  1529  				iNdEx++
  1530  				m.Precision |= int32(b&0x7F) << shift
  1531  				if b < 0x80 {
  1532  					break
  1533  				}
  1534  			}
  1535  		case 4:
  1536  			if wireType == 0 {
  1537  				var v int32
  1538  				for shift := uint(0); ; shift += 7 {
  1539  					if shift >= 64 {
  1540  						return ErrIntOverflowTypes
  1541  					}
  1542  					if iNdEx >= l {
  1543  						return io.ErrUnexpectedEOF
  1544  					}
  1545  					b := dAtA[iNdEx]
  1546  					iNdEx++
  1547  					v |= int32(b&0x7F) << shift
  1548  					if b < 0x80 {
  1549  						break
  1550  					}
  1551  				}
  1552  				m.ArrayDimensions = append(m.ArrayDimensions, v)
  1553  			} else if wireType == 2 {
  1554  				var packedLen int
  1555  				for shift := uint(0); ; shift += 7 {
  1556  					if shift >= 64 {
  1557  						return ErrIntOverflowTypes
  1558  					}
  1559  					if iNdEx >= l {
  1560  						return io.ErrUnexpectedEOF
  1561  					}
  1562  					b := dAtA[iNdEx]
  1563  					iNdEx++
  1564  					packedLen |= int(b&0x7F) << shift
  1565  					if b < 0x80 {
  1566  						break
  1567  					}
  1568  				}
  1569  				if packedLen < 0 {
  1570  					return ErrInvalidLengthTypes
  1571  				}
  1572  				postIndex := iNdEx + packedLen
  1573  				if postIndex < 0 {
  1574  					return ErrInvalidLengthTypes
  1575  				}
  1576  				if postIndex > l {
  1577  					return io.ErrUnexpectedEOF
  1578  				}
  1579  				var elementCount int
  1580  				var count int
  1581  				for _, integer := range dAtA[iNdEx:postIndex] {
  1582  					if integer < 128 {
  1583  						count++
  1584  					}
  1585  				}
  1586  				elementCount = count
  1587  				if elementCount != 0 && len(m.ArrayDimensions) == 0 {
  1588  					m.ArrayDimensions = make([]int32, 0, elementCount)
  1589  				}
  1590  				for iNdEx < postIndex {
  1591  					var v int32
  1592  					for shift := uint(0); ; shift += 7 {
  1593  						if shift >= 64 {
  1594  							return ErrIntOverflowTypes
  1595  						}
  1596  						if iNdEx >= l {
  1597  							return io.ErrUnexpectedEOF
  1598  						}
  1599  						b := dAtA[iNdEx]
  1600  						iNdEx++
  1601  						v |= int32(b&0x7F) << shift
  1602  						if b < 0x80 {
  1603  							break
  1604  						}
  1605  					}
  1606  					m.ArrayDimensions = append(m.ArrayDimensions, v)
  1607  				}
  1608  			} else {
  1609  				return fmt.Errorf("proto: wrong wireType = %d for field ArrayDimensions", wireType)
  1610  			}
  1611  		case 5:
  1612  			if wireType != 2 {
  1613  				return fmt.Errorf("proto: wrong wireType = %d for field Locale", wireType)
  1614  			}
  1615  			var stringLen uint64
  1616  			for shift := uint(0); ; shift += 7 {
  1617  				if shift >= 64 {
  1618  					return ErrIntOverflowTypes
  1619  				}
  1620  				if iNdEx >= l {
  1621  					return io.ErrUnexpectedEOF
  1622  				}
  1623  				b := dAtA[iNdEx]
  1624  				iNdEx++
  1625  				stringLen |= uint64(b&0x7F) << shift
  1626  				if b < 0x80 {
  1627  					break
  1628  				}
  1629  			}
  1630  			intStringLen := int(stringLen)
  1631  			if intStringLen < 0 {
  1632  				return ErrInvalidLengthTypes
  1633  			}
  1634  			postIndex := iNdEx + intStringLen
  1635  			if postIndex < 0 {
  1636  				return ErrInvalidLengthTypes
  1637  			}
  1638  			if postIndex > l {
  1639  				return io.ErrUnexpectedEOF
  1640  			}
  1641  			s := string(dAtA[iNdEx:postIndex])
  1642  			m.Locale = &s
  1643  			iNdEx = postIndex
  1644  		case 6:
  1645  			if wireType != 0 {
  1646  				return fmt.Errorf("proto: wrong wireType = %d for field VisibleType", wireType)
  1647  			}
  1648  			m.VisibleType = 0
  1649  			for shift := uint(0); ; shift += 7 {
  1650  				if shift >= 64 {
  1651  					return ErrIntOverflowTypes
  1652  				}
  1653  				if iNdEx >= l {
  1654  					return io.ErrUnexpectedEOF
  1655  				}
  1656  				b := dAtA[iNdEx]
  1657  				iNdEx++
  1658  				m.VisibleType |= int32(b&0x7F) << shift
  1659  				if b < 0x80 {
  1660  					break
  1661  				}
  1662  			}
  1663  		case 7:
  1664  			if wireType != 0 {
  1665  				return fmt.Errorf("proto: wrong wireType = %d for field ArrayElemType", wireType)
  1666  			}
  1667  			var v Family
  1668  			for shift := uint(0); ; shift += 7 {
  1669  				if shift >= 64 {
  1670  					return ErrIntOverflowTypes
  1671  				}
  1672  				if iNdEx >= l {
  1673  					return io.ErrUnexpectedEOF
  1674  				}
  1675  				b := dAtA[iNdEx]
  1676  				iNdEx++
  1677  				v |= Family(b&0x7F) << shift
  1678  				if b < 0x80 {
  1679  					break
  1680  				}
  1681  			}
  1682  			m.ArrayElemType = &v
  1683  		case 8:
  1684  			if wireType != 2 {
  1685  				return fmt.Errorf("proto: wrong wireType = %d for field TupleContents", wireType)
  1686  			}
  1687  			var msglen int
  1688  			for shift := uint(0); ; shift += 7 {
  1689  				if shift >= 64 {
  1690  					return ErrIntOverflowTypes
  1691  				}
  1692  				if iNdEx >= l {
  1693  					return io.ErrUnexpectedEOF
  1694  				}
  1695  				b := dAtA[iNdEx]
  1696  				iNdEx++
  1697  				msglen |= int(b&0x7F) << shift
  1698  				if b < 0x80 {
  1699  					break
  1700  				}
  1701  			}
  1702  			if msglen < 0 {
  1703  				return ErrInvalidLengthTypes
  1704  			}
  1705  			postIndex := iNdEx + msglen
  1706  			if postIndex < 0 {
  1707  				return ErrInvalidLengthTypes
  1708  			}
  1709  			if postIndex > l {
  1710  				return io.ErrUnexpectedEOF
  1711  			}
  1712  			m.TupleContents = append(m.TupleContents, &T{})
  1713  			if err := m.TupleContents[len(m.TupleContents)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  1714  				return err
  1715  			}
  1716  			iNdEx = postIndex
  1717  		case 9:
  1718  			if wireType != 2 {
  1719  				return fmt.Errorf("proto: wrong wireType = %d for field TupleLabels", wireType)
  1720  			}
  1721  			var stringLen uint64
  1722  			for shift := uint(0); ; shift += 7 {
  1723  				if shift >= 64 {
  1724  					return ErrIntOverflowTypes
  1725  				}
  1726  				if iNdEx >= l {
  1727  					return io.ErrUnexpectedEOF
  1728  				}
  1729  				b := dAtA[iNdEx]
  1730  				iNdEx++
  1731  				stringLen |= uint64(b&0x7F) << shift
  1732  				if b < 0x80 {
  1733  					break
  1734  				}
  1735  			}
  1736  			intStringLen := int(stringLen)
  1737  			if intStringLen < 0 {
  1738  				return ErrInvalidLengthTypes
  1739  			}
  1740  			postIndex := iNdEx + intStringLen
  1741  			if postIndex < 0 {
  1742  				return ErrInvalidLengthTypes
  1743  			}
  1744  			if postIndex > l {
  1745  				return io.ErrUnexpectedEOF
  1746  			}
  1747  			m.TupleLabels = append(m.TupleLabels, string(dAtA[iNdEx:postIndex]))
  1748  			iNdEx = postIndex
  1749  		case 10:
  1750  			if wireType != 0 {
  1751  				return fmt.Errorf("proto: wrong wireType = %d for field Oid", wireType)
  1752  			}
  1753  			m.Oid = 0
  1754  			for shift := uint(0); ; shift += 7 {
  1755  				if shift >= 64 {
  1756  					return ErrIntOverflowTypes
  1757  				}
  1758  				if iNdEx >= l {
  1759  					return io.ErrUnexpectedEOF
  1760  				}
  1761  				b := dAtA[iNdEx]
  1762  				iNdEx++
  1763  				m.Oid |= github_com_lib_pq_oid.Oid(b&0x7F) << shift
  1764  				if b < 0x80 {
  1765  					break
  1766  				}
  1767  			}
  1768  		case 11:
  1769  			if wireType != 2 {
  1770  				return fmt.Errorf("proto: wrong wireType = %d for field ArrayContents", wireType)
  1771  			}
  1772  			var msglen int
  1773  			for shift := uint(0); ; shift += 7 {
  1774  				if shift >= 64 {
  1775  					return ErrIntOverflowTypes
  1776  				}
  1777  				if iNdEx >= l {
  1778  					return io.ErrUnexpectedEOF
  1779  				}
  1780  				b := dAtA[iNdEx]
  1781  				iNdEx++
  1782  				msglen |= int(b&0x7F) << shift
  1783  				if b < 0x80 {
  1784  					break
  1785  				}
  1786  			}
  1787  			if msglen < 0 {
  1788  				return ErrInvalidLengthTypes
  1789  			}
  1790  			postIndex := iNdEx + msglen
  1791  			if postIndex < 0 {
  1792  				return ErrInvalidLengthTypes
  1793  			}
  1794  			if postIndex > l {
  1795  				return io.ErrUnexpectedEOF
  1796  			}
  1797  			if m.ArrayContents == nil {
  1798  				m.ArrayContents = &T{}
  1799  			}
  1800  			if err := m.ArrayContents.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  1801  				return err
  1802  			}
  1803  			iNdEx = postIndex
  1804  		case 12:
  1805  			if wireType != 0 {
  1806  				return fmt.Errorf("proto: wrong wireType = %d for field TimePrecisionIsSet", wireType)
  1807  			}
  1808  			var v int
  1809  			for shift := uint(0); ; shift += 7 {
  1810  				if shift >= 64 {
  1811  					return ErrIntOverflowTypes
  1812  				}
  1813  				if iNdEx >= l {
  1814  					return io.ErrUnexpectedEOF
  1815  				}
  1816  				b := dAtA[iNdEx]
  1817  				iNdEx++
  1818  				v |= int(b&0x7F) << shift
  1819  				if b < 0x80 {
  1820  					break
  1821  				}
  1822  			}
  1823  			m.TimePrecisionIsSet = bool(v != 0)
  1824  		case 13:
  1825  			if wireType != 2 {
  1826  				return fmt.Errorf("proto: wrong wireType = %d for field IntervalDurationField", wireType)
  1827  			}
  1828  			var msglen int
  1829  			for shift := uint(0); ; shift += 7 {
  1830  				if shift >= 64 {
  1831  					return ErrIntOverflowTypes
  1832  				}
  1833  				if iNdEx >= l {
  1834  					return io.ErrUnexpectedEOF
  1835  				}
  1836  				b := dAtA[iNdEx]
  1837  				iNdEx++
  1838  				msglen |= int(b&0x7F) << shift
  1839  				if b < 0x80 {
  1840  					break
  1841  				}
  1842  			}
  1843  			if msglen < 0 {
  1844  				return ErrInvalidLengthTypes
  1845  			}
  1846  			postIndex := iNdEx + msglen
  1847  			if postIndex < 0 {
  1848  				return ErrInvalidLengthTypes
  1849  			}
  1850  			if postIndex > l {
  1851  				return io.ErrUnexpectedEOF
  1852  			}
  1853  			if m.IntervalDurationField == nil {
  1854  				m.IntervalDurationField = &IntervalDurationField{}
  1855  			}
  1856  			if err := m.IntervalDurationField.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  1857  				return err
  1858  			}
  1859  			iNdEx = postIndex
  1860  		case 14:
  1861  			if wireType != 2 {
  1862  				return fmt.Errorf("proto: wrong wireType = %d for field GeoMetadata", wireType)
  1863  			}
  1864  			var msglen int
  1865  			for shift := uint(0); ; shift += 7 {
  1866  				if shift >= 64 {
  1867  					return ErrIntOverflowTypes
  1868  				}
  1869  				if iNdEx >= l {
  1870  					return io.ErrUnexpectedEOF
  1871  				}
  1872  				b := dAtA[iNdEx]
  1873  				iNdEx++
  1874  				msglen |= int(b&0x7F) << shift
  1875  				if b < 0x80 {
  1876  					break
  1877  				}
  1878  			}
  1879  			if msglen < 0 {
  1880  				return ErrInvalidLengthTypes
  1881  			}
  1882  			postIndex := iNdEx + msglen
  1883  			if postIndex < 0 {
  1884  				return ErrInvalidLengthTypes
  1885  			}
  1886  			if postIndex > l {
  1887  				return io.ErrUnexpectedEOF
  1888  			}
  1889  			if m.GeoMetadata == nil {
  1890  				m.GeoMetadata = &GeoMetadata{}
  1891  			}
  1892  			if err := m.GeoMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  1893  				return err
  1894  			}
  1895  			iNdEx = postIndex
  1896  		case 15:
  1897  			if wireType != 2 {
  1898  				return fmt.Errorf("proto: wrong wireType = %d for field UDTMetadata", wireType)
  1899  			}
  1900  			var msglen int
  1901  			for shift := uint(0); ; shift += 7 {
  1902  				if shift >= 64 {
  1903  					return ErrIntOverflowTypes
  1904  				}
  1905  				if iNdEx >= l {
  1906  					return io.ErrUnexpectedEOF
  1907  				}
  1908  				b := dAtA[iNdEx]
  1909  				iNdEx++
  1910  				msglen |= int(b&0x7F) << shift
  1911  				if b < 0x80 {
  1912  					break
  1913  				}
  1914  			}
  1915  			if msglen < 0 {
  1916  				return ErrInvalidLengthTypes
  1917  			}
  1918  			postIndex := iNdEx + msglen
  1919  			if postIndex < 0 {
  1920  				return ErrInvalidLengthTypes
  1921  			}
  1922  			if postIndex > l {
  1923  				return io.ErrUnexpectedEOF
  1924  			}
  1925  			if m.UDTMetadata == nil {
  1926  				m.UDTMetadata = &PersistentUserDefinedTypeMetadata{}
  1927  			}
  1928  			if err := m.UDTMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  1929  				return err
  1930  			}
  1931  			iNdEx = postIndex
  1932  		default:
  1933  			iNdEx = preIndex
  1934  			skippy, err := skipTypes(dAtA[iNdEx:])
  1935  			if err != nil {
  1936  				return err
  1937  			}
  1938  			if (skippy < 0) || (iNdEx+skippy) < 0 {
  1939  				return ErrInvalidLengthTypes
  1940  			}
  1941  			if (iNdEx + skippy) > l {
  1942  				return io.ErrUnexpectedEOF
  1943  			}
  1944  			iNdEx += skippy
  1945  		}
  1946  	}
  1947  
  1948  	if iNdEx > l {
  1949  		return io.ErrUnexpectedEOF
  1950  	}
  1951  	return nil
  1952  }
  1953  func skipTypes(dAtA []byte) (n int, err error) {
  1954  	l := len(dAtA)
  1955  	iNdEx := 0
  1956  	depth := 0
  1957  	for iNdEx < l {
  1958  		var wire uint64
  1959  		for shift := uint(0); ; shift += 7 {
  1960  			if shift >= 64 {
  1961  				return 0, ErrIntOverflowTypes
  1962  			}
  1963  			if iNdEx >= l {
  1964  				return 0, io.ErrUnexpectedEOF
  1965  			}
  1966  			b := dAtA[iNdEx]
  1967  			iNdEx++
  1968  			wire |= (uint64(b) & 0x7F) << shift
  1969  			if b < 0x80 {
  1970  				break
  1971  			}
  1972  		}
  1973  		wireType := int(wire & 0x7)
  1974  		switch wireType {
  1975  		case 0:
  1976  			for shift := uint(0); ; shift += 7 {
  1977  				if shift >= 64 {
  1978  					return 0, ErrIntOverflowTypes
  1979  				}
  1980  				if iNdEx >= l {
  1981  					return 0, io.ErrUnexpectedEOF
  1982  				}
  1983  				iNdEx++
  1984  				if dAtA[iNdEx-1] < 0x80 {
  1985  					break
  1986  				}
  1987  			}
  1988  		case 1:
  1989  			iNdEx += 8
  1990  		case 2:
  1991  			var length int
  1992  			for shift := uint(0); ; shift += 7 {
  1993  				if shift >= 64 {
  1994  					return 0, ErrIntOverflowTypes
  1995  				}
  1996  				if iNdEx >= l {
  1997  					return 0, io.ErrUnexpectedEOF
  1998  				}
  1999  				b := dAtA[iNdEx]
  2000  				iNdEx++
  2001  				length |= (int(b) & 0x7F) << shift
  2002  				if b < 0x80 {
  2003  					break
  2004  				}
  2005  			}
  2006  			if length < 0 {
  2007  				return 0, ErrInvalidLengthTypes
  2008  			}
  2009  			iNdEx += length
  2010  		case 3:
  2011  			depth++
  2012  		case 4:
  2013  			if depth == 0 {
  2014  				return 0, ErrUnexpectedEndOfGroupTypes
  2015  			}
  2016  			depth--
  2017  		case 5:
  2018  			iNdEx += 4
  2019  		default:
  2020  			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
  2021  		}
  2022  		if iNdEx < 0 {
  2023  			return 0, ErrInvalidLengthTypes
  2024  		}
  2025  		if depth == 0 {
  2026  			return iNdEx, nil
  2027  		}
  2028  	}
  2029  	return 0, io.ErrUnexpectedEOF
  2030  }
  2031  
  2032  var (
  2033  	ErrInvalidLengthTypes        = fmt.Errorf("proto: negative length found during unmarshaling")
  2034  	ErrIntOverflowTypes          = fmt.Errorf("proto: integer overflow")
  2035  	ErrUnexpectedEndOfGroupTypes = fmt.Errorf("proto: unexpected end of group")
  2036  )
  2037