Re: Wraparound limits
От | Heikki Linnakangas |
---|---|
Тема | Re: Wraparound limits |
Дата | |
Msg-id | 53E379CE.6080108@vmware.com обсуждение исходный текст |
Ответ на | Wraparound limits (Teodor Sigaev <teodor@sigaev.ru>) |
Список | pgsql-hackers |
On 08/07/2014 01:34 PM, Teodor Sigaev wrote: > Hi! > > I have a questions about setting transaction's wraparound limits. Function > SetTransactionIdLimit() in access/transam/varsup.c: > > 1) > xidWrapLimit = oldest_datfrozenxid + (MaxTransactionId >> 1); > if (xidWrapLimit < FirstNormalTransactionId) > xidWrapLimit += FirstNormalTransactionId; > > Isn't it a problem if oldest_datfrozenxid > MaxTransactionId/2? Don't think so. What problem do you see? > 2) > xidStopLimit = xidWrapLimit - 1000000; > if (xidStopLimit < FirstNormalTransactionId) > xidStopLimit -= FirstNormalTransactionId; > > xidWarnLimit = xidStopLimit - 10000000; > if (xidWarnLimit < FirstNormalTransactionId) > xidWarnLimit -= FirstNormalTransactionId; > > Why does it use '-' instead of '+' if variable < FirstNormalTransactionId? In > this case it is easy to get xidStopLimit > xidWrapLimit or xidWarnLimit > > xidStopLimit... Remember that the limits are compared with xids using wrap-around aware functions TransactionIdPrecedes and TransactionidFollows. Not regular < and >. The "<" checks above are just to check if the XID hit one of the special TransactionIds, and if so, increase/decrese it to get back to the normal range. - Heikki
В списке pgsql-hackers по дате отправления: