Regarding WAL Format Changes

Поиск
Список
Период
Сортировка
От Amit Kapila
Тема Regarding WAL Format Changes
Дата
Msg-id 008701cd546f$2af3b490$80db1db0$@kapila@huawei.com
обсуждение исходный текст
Список pgsql-hackers
<div class="WordSection1"><p class="MsoNormal">While reading patch-1 (<b><a
href="http://archives.postgresql.org/pgsql-hackers/2012-06/txtFskHiYakjO.txt"><span
style="color:windowtext;font-weight:normal;text-decoration:none">1-use-uint64-got-segno.patch</span></a></b>)of WAL
FormatChanges(http://archives.postgresql.org/message-id/4FDA5136.6080206@enterprisedb.com), I had few observations
whichare summarized below:<p class="MsoNormal"> <p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">1.Function header for following functions still contains
refereceto log, seg</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">   a.
InstallXLogFileSegment()</span><br/><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">   b.
RemoveOldXlogFiles()</span><br/><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">   c. XLogFileCopy()
</span><br/><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">   d. XLogGetLastRemoved()</span><br
/><spanstyle="font-size:10.0pt;font-family:"Arial","sans-serif"">   e. UpdateLastRemovedPtr()</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">  f. RemoveOldXlogFiles()</span><br /><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">2.@@ -2680,8 +2645,8 @@ InstallXLogFileSegment(uint32 *log,
uint32*seg, char *tmppath,</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">               
        LWLockRelease(ControlFileLock);</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">   
            ereport(LOG,</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">                 
              (errcode_for_file_access(),</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">-
                               errmsg("could not link file \"%s\" to \"%s\" (initialization of log file %u, segment
%u):%m",</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">-                                
              tmppath, path, *log, *seg)));</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">+                                errmsg("could not link file
\"%s\"to \"%s\" (initialization of log file): %m",</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">+                                               tmppath,
path)));</span><br/><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">   If Changed error message can
containlog file and segment number, it would be more clear. That should be easily</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">  deducible from segment number.</span><br /><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">3. </span> <span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">-RemoveOldXlogFiles(uint32log, uint32 seg, XLogRecPtr
endptr)</span><br/><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">+RemoveOldXlogFiles(XLogSegNo segno,
XLogRecPtrendptr)</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">.</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">.</span><br/><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">.</span><br/><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">@@-4016,8 +3953,9 @@ retry:</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">                        if (!(((XLogPageHeader)
readBuf)->xlp_info& XLP_FIRST_IS_CONTRECORD))</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">                        {</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">                              
 ereport(emode_for_corrupt_record(emode,*RecPtr),</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">-                                             
 (errmsg("thereis no contrecord flag in log file %u, segment %u, offset %u",</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">-                                                           
  readId, readSeg, readOff)));</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">+          
                                    (errmsg("there is no contrecord flag in log segment %s, offset %u",</span><br
/><spanstyle="font-size:10.0pt;font-family:"Arial","sans-serif"">+                                                    
          XLogFileNameP(curFileTLI, readSegNo),</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">+                                                           
  readOff)));</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">                             
  goto next_record_is_invalid;</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">           
            }</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">                       
 pageHeaderSize= XLogPageHeaderSize((XLogPageHeader) readBuf);</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">@@-4025,10 +3963,13 @@ retry:</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">                        if (contrecord->xl_rem_len == 0
||</span><br/><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">                               
 total_len!= (contrecord->xl_rem_len + gotlen))</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">                        {</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">+                               char
fname[MAXFNAMELEN];</span><br/><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">+                      
        XLogFileName(fname, curFileTLI, readSegNo);</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">                              
 ereport(emode_for_corrupt_record(emode,*RecPtr),</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">-                                             
 (errmsg("invalidcontrecord length %u in log file %u, segment %u, offset %u",</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">+                                             
 (errmsg("invalidcontrecord length %u in log segment %s, offset %u",</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">                                                            
  contrecord->xl_rem_len,</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">-            
                                                  readId, readSeg, readOff)));</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">+                                                           
  XLogFileNameP(curFileTLI, readSegNo),</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">+  
                                                            readOff)));</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">                                goto
next_record_is_invalid;</span><br/><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">                   
    }</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">     </span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif""> For the above 2 changed error messages, 'log segment' is
usedfor filename. </span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">  However all similar
changeshas 'log file' for filename. There are some places</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif""> where 'log segment' is used and other places it is 'log
file'.</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">  So is there any particular reason
forit?</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">  </span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif""> </span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">4.</span><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">@@-533,33 +533,17 @@
pg_xlog_location_diff(PG_FUNCTION_ARGS)</span><br/><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">-  
    /*</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">-         * Sanity check</span><br
/><spanstyle="font-size:10.0pt;font-family:"Arial","sans-serif"">-         */</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">-       if (loc1.xrecoff > XLogFileSize)</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">-               ereport(ERROR,</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">-                             
 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),</span><br/><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">-                                errmsg("xrecoff \"%X\" is
outof valid range, 0..%X", loc1.xrecoff, XLogFileSize)));</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">-       if (loc2.xrecoff > XLogFileSize)</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">-               ereport(ERROR,</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">-                             
 (errcode(ERRCODE_INVALID_PARAMETER_VALUE),</span><br/><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">-                                errmsg("xrecoff \"%X\" is
outof valid range, 0..%X", loc2.xrecoff, XLogFileSize)));</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">+       bytes1 = (((uint64)loc1.xlogid) << 32L) +
loc1.xrecoff;</span><br/><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">+        bytes2 =
(((uint64)loc2.xlogid)<< 32L) + loc2.xrecoff;</span><br /><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">   Is there no chance that it can be out of valid range after
newchanges, just a doubt?</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">    </span><br
/><spanstyle="font-size:10.0pt;font-family:"Arial","sans-serif"">    </span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">5.</span><br/><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">---a/src/backend/replication/walreceiver.c</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">+++b/src/backend/replication/walreceiver.c</span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">@@-69,11 +69,12 @@ walrcv_disconnect_type walrcv_disconnect =
NULL;</span><br/><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> </span><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif""> /*</span><br/><span
style="font-size:10.0pt;font-family:"Arial","sans-serif""> * These variables are used similarly to
openLogFile/Id/Seg/Off,</span><br/><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">- * but for
walreceiverto write the XLOG.</span><br /><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">+ * but for
walreceiverto write the XLOG. recvFileTLI is the TimeLineID</span><br /><br /><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">Inthe above comments, there is still reference to
Id/Seg/Off.</span><pclass="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> </span><p
class="MsoNormal"><spanstyle="font-size:10.0pt;font-family:"Arial","sans-serif""> </span><p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">WithRegards,</span><p class="MsoNormal"><span
style="font-size:10.0pt;font-family:"Arial","sans-serif"">AmitKapila.</span><p class="MsoNormal"> </div> 

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Reporting hba lines
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Posix Shared Mem patch