Skip to content

Commit 6f250ed

Browse files
author
James Cor
committed
prevent overflow in index
1 parent f968c5c commit 6f250ed

1 file changed

Lines changed: 29 additions & 28 deletions

File tree

server/tables/pgcatalog/pg_constraint.go

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,13 @@ func (p PgConstraintHandler) PkSchema() sql.PrimaryKeySchema {
113113
// Indexes implements tables.IndexedTableHandler.
114114
func (p PgConstraintHandler) Indexes() ([]sql.Index, error) {
115115
return []sql.Index{
116-
pgCatalogInMemIndex{
117-
name: "pg_constraint_oid_index",
118-
tblName: "pg_constraint",
119-
dbName: "pg_catalog",
120-
uniq: true,
121-
columnExprs: []sql.ColumnExpressionType{{Expression: "pg_constraint.oid", Type: pgtypes.Oid}},
122-
},
116+
//pgCatalogInMemIndex{
117+
// name: "pg_constraint_oid_index",
118+
// tblName: "pg_constraint",
119+
// dbName: "pg_catalog",
120+
// uniq: true,
121+
// columnExprs: []sql.ColumnExpressionType{{Expression: "pg_constraint.oid", Type: pgtypes.Oid}},
122+
//},
123123
pgCatalogInMemIndex{
124124
name: "pg_constraint_conrelid_contypid_conname_index",
125125
tblName: "pg_constraint",
@@ -131,27 +131,27 @@ func (p PgConstraintHandler) Indexes() ([]sql.Index, error) {
131131
{Expression: "pg_constraint.conname", Type: pgtypes.Name},
132132
},
133133
},
134-
pgCatalogInMemIndex{
135-
name: "pg_constraint_conname_nsp_index",
136-
tblName: "pg_constraint",
137-
dbName: "pg_catalog",
138-
uniq: false,
139-
columnExprs: []sql.ColumnExpressionType{
140-
{Expression: "pg_constraint.conname", Type: pgtypes.Name},
141-
{Expression: "pg_constraint.connamespace", Type: pgtypes.Oid},
142-
},
143-
},
134+
//pgCatalogInMemIndex{
135+
// name: "pg_constraint_conname_nsp_index",
136+
// tblName: "pg_constraint",
137+
// dbName: "pg_catalog",
138+
// uniq: false,
139+
// columnExprs: []sql.ColumnExpressionType{
140+
// {Expression: "pg_constraint.conname", Type: pgtypes.Name},
141+
// {Expression: "pg_constraint.connamespace", Type: pgtypes.Oid},
142+
// },
143+
//},
144144
// pg_constraint_conparentid_index is skipped because we don't support partitions, but might be worth
145145
// implementing if it makes any tool faster
146-
pgCatalogInMemIndex{
147-
name: "pg_constraint_contypid_index",
148-
tblName: "pg_constraint",
149-
dbName: "pg_catalog",
150-
uniq: false,
151-
columnExprs: []sql.ColumnExpressionType{
152-
{Expression: "pg_constraint.contypid", Type: pgtypes.Oid},
153-
},
154-
},
146+
//pgCatalogInMemIndex{
147+
// name: "pg_constraint_contypid_index",
148+
// tblName: "pg_constraint",
149+
// dbName: "pg_catalog",
150+
// uniq: false,
151+
// columnExprs: []sql.ColumnExpressionType{
152+
// {Expression: "pg_constraint.contypid", Type: pgtypes.Oid},
153+
// },
154+
//},
155155
}, nil
156156
}
157157

@@ -274,15 +274,16 @@ func (p PgConstraintHandler) getIndexScanRange(rng sql.Range, index sql.Index) (
274274
}
275275

276276
if hasUpperBound {
277+
// TODO: does this make sense?
277278
// our less-than upper bounds depend on how many fields were set
278279
if typOidUpperSet {
279280
if nameUpperSet {
280281
nameUpper = fmt.Sprintf("%s%o", nameUpper, rune(0))
281-
} else {
282+
} else if typOidUpper < math.MaxUint32 { // prevent overflow
282283
typOidUpper = typOidUpper + 1
283284
}
284285
} else {
285-
if !relOidUpperSet {
286+
if !relOidUpperSet && relOidUpper < math.MaxUint32 { // prevent overflow
286287
relOidUpper = relOidUpper + 1
287288
}
288289
}

0 commit comments

Comments
 (0)