gooderp18绿色标准版
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

437 行
27KB

  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>E.1. Release 12.4</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="release.html" title="Appendix E. Release Notes" /><link rel="next" href="release-12-3.html" title="E.2. Release 12.3" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">E.1. Release 12.4</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="release.html" title="Appendix E. Release Notes">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="release.html" title="Appendix E. Release Notes">Up</a></td><th width="60%" align="center">Appendix E. Release Notes</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 12.4 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="release-12-3.html" title="E.2. Release 12.3">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="RELEASE-12-4"><div class="titlepage"><div><div><h2 class="title" style="clear: both">E.1. Release 12.4</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="release-12-4.html#id-1.11.6.5.4">E.1.1. Migration to Version 12.4</a></span></dt><dt><span class="sect2"><a href="release-12-4.html#id-1.11.6.5.5">E.1.2. Changes</a></span></dt></dl></div><p><strong>Release date: </strong>2020-08-13</p><p>
  3. This release contains a variety of fixes from 12.3.
  4. For information about new features in major release 12, see
  5. <a class="xref" href="release-12.html" title="E.5. Release 12">Section E.5</a>.
  6. </p><div class="sect2" id="id-1.11.6.5.4"><div class="titlepage"><div><div><h3 class="title">E.1.1. Migration to Version 12.4</h3></div></div></div><p>
  7. A dump/restore is not required for those running 12.X.
  8. </p><p>
  9. However, if you are upgrading from a version earlier than 12.2,
  10. see <a class="xref" href="release-12-2.html" title="E.3. Release 12.2">Section E.3</a>.
  11. </p></div><div class="sect2" id="id-1.11.6.5.5"><div class="titlepage"><div><div><h3 class="title">E.1.2. Changes</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
  12. Set a secure <code class="varname">search_path</code> in logical replication
  13. walsenders and apply workers (Noah Misch)
  14. </p><p>
  15. A malicious user of either the publisher or subscriber database
  16. could potentially cause execution of arbitrary SQL code by the role
  17. running replication, which is often a superuser. Some of the risks
  18. here are equivalent to those described in CVE-2018-1058, and are
  19. mitigated in this patch by ensuring that the replication sender and
  20. receiver execute with empty <code class="varname">search_path</code> settings.
  21. (As with CVE-2018-1058, that change might cause problems for
  22. under-qualified names used in replicated tables' DDL.) Other risks
  23. are inherent in replicating objects that belong to untrusted roles;
  24. the most we can do is document that there is a hazard to consider.
  25. (CVE-2020-14349)
  26. </p></li><li class="listitem"><p>
  27. Make contrib modules' installation scripts more secure (Tom Lane)
  28. </p><p>
  29. Attacks similar to those described in CVE-2018-1058 could be carried
  30. out against an extension installation script, if the attacker can
  31. create objects in either the extension's target schema or the schema
  32. of some prerequisite extension. Since extensions often require
  33. superuser privilege to install, this can open a path to obtaining
  34. superuser privilege. To mitigate this risk, be more careful about
  35. the <code class="varname">search_path</code> used to run an installation
  36. script; disable <code class="varname">check_function_bodies</code> within the
  37. script; and fix catalog-adjustment queries used in some contrib
  38. modules to ensure they are secure. Also provide documentation to
  39. help third-party extension authors make their installation scripts
  40. secure. This is not a complete solution; extensions that depend on
  41. other extensions can still be at risk if installed carelessly.
  42. (CVE-2020-14350)
  43. </p></li><li class="listitem"><p>
  44. Fix edge cases in partition pruning (Etsuro Fujita, Dmitry Dolgov)
  45. </p><p>
  46. When there are multiple partition key columns, generation of pruning
  47. tests could misbehave if some columns had no
  48. constraining <code class="literal">WHERE</code> clauses or multiple
  49. constraining clauses. This could lead to server crashes, incorrect
  50. query results, or assertion failures.
  51. </p></li><li class="listitem"><p>
  52. Fix construction of parameterized BitmapAnd and BitmapOr index scans
  53. on the inside of partition-wise nestloop joins (Tom Lane)
  54. </p><p>
  55. A plan in which such a scan needed to use a value from the outside
  56. of the join would usually crash at execution.
  57. </p></li><li class="listitem"><p>
  58. Fix incorrect plan execution when a partitioned table is subject to
  59. both static and run-time partition pruning in the same query, and a
  60. new partition is added concurrently with the query (Amit Langote,
  61. Tom Lane)
  62. </p></li><li class="listitem"><p>
  63. In logical replication walsender, fix failure to send feedback
  64. messages after sending a keepalive message (Álvaro Herrera)
  65. </p><p>
  66. This is a relatively minor problem when using built-in logical
  67. replication, because the built-in walreceiver will send a feedback
  68. reply (which clears the incorrect state) fairly frequently anyway.
  69. But with some other replication systems, such
  70. as <span class="application">pglogical</span>, it causes significant
  71. performance issues.
  72. </p></li><li class="listitem"><p>
  73. Fix firing of column-specific <code class="literal">UPDATE</code> triggers in
  74. logical replication subscribers (Tom Lane)
  75. </p><p>
  76. The code neglected to account for the possibility of column numbers
  77. being different between the publisher and subscriber tables, so that
  78. if those were indeed different, wrong decisions might be made about
  79. which triggers to fire.
  80. </p></li><li class="listitem"><p>
  81. Update oldest xmin and LSN values
  82. during <code class="function">pg_replication_slot_advance()</code> (Michael
  83. Paquier)
  84. </p><p>
  85. This function previously failed to do that, possibly preventing
  86. resource cleanup (such as removal of no-longer-needed WAL segments)
  87. after manual advancement of a replication slot.
  88. </p></li><li class="listitem"><p>
  89. Fix slow execution of <code class="function">ts_headline()</code> (Tom Lane)
  90. </p><p>
  91. The phrase-search fix added in our previous set of minor releases
  92. could cause <code class="function">ts_headline()</code> to take unreasonable
  93. amounts of time for long documents; to make matters worse, the query
  94. was not cancellable within the troublesome loop.
  95. </p></li><li class="listitem"><p>
  96. Ensure the <code class="function">repeat()</code> function can be interrupted
  97. by query cancel (Joe Conway)
  98. </p></li><li class="listitem"><p>
  99. Fix <code class="function">pg_current_logfile()</code> to not include a
  100. carriage return (<code class="literal">\r</code>) in its result on Windows
  101. (Tom Lane)
  102. </p></li><li class="listitem"><p>
  103. Ensure that <code class="function">pg_read_file()</code> and related
  104. functions read until EOF is reached (Joe Conway)
  105. </p><p>
  106. Previously, if not given a specific data length to read, these
  107. functions would stop at whatever file length was reported
  108. by <code class="function">stat()</code>. That's unhelpful for pipes and
  109. other sorts of virtual files.
  110. </p></li><li class="listitem"><p>
  111. Forbid numeric <code class="literal">NaN</code> values in <code class="type">jsonpath</code>
  112. computations (Alexander Korotkov)
  113. </p><p>
  114. Neither SQL nor JSON have the concept of <code class="literal">NaN</code>
  115. (not-a-number), but the <code class="type">jsonpath</code> code attempted to
  116. allow such values anyway. This necessarily leads to nonstandard
  117. behavior, so it seems better to reject such values at the outset.
  118. </p></li><li class="listitem"><p>
  119. Handle single <code class="literal">Inf</code> or <code class="literal">NaN</code>
  120. inputs correctly in floating-point aggregates (Tom Lane)
  121. </p><p>
  122. The affected aggregates are
  123. <code class="function">corr()</code>,
  124. <code class="function">covar_pop()</code>,
  125. <code class="function">regr_intercept()</code>,
  126. <code class="function">regr_r2()</code>,
  127. <code class="function">regr_slope()</code>,
  128. <code class="function">regr_sxx()</code>,
  129. <code class="function">regr_sxy()</code>,
  130. <code class="function">regr_syy()</code>,
  131. <code class="function">stddev_pop()</code>, and
  132. <code class="function">var_pop()</code>.
  133. The correct answer in such cases is <code class="literal">NaN</code>, but an
  134. algorithmic change introduced in <span class="productname">PostgreSQL</span>
  135. v12 had caused these aggregates to produce zero instead.
  136. </p></li><li class="listitem"><p>
  137. Fix mis-handling of <code class="literal">NaN</code> inputs during parallel
  138. aggregation on <code class="type">numeric</code>-type columns (Tom Lane)
  139. </p><p>
  140. If some partial aggregation workers found only <code class="literal">NaN</code>s
  141. while others found only non-<code class="literal">NaN</code>s, the results
  142. were combined incorrectly, possibly leading to the wrong overall
  143. result (i.e., not <code class="literal">NaN</code> when it should be).
  144. </p></li><li class="listitem"><p>
  145. Reject time-of-day values greater than 24 hours (Tom Lane)
  146. </p><p>
  147. The intention of the datetime input code is to
  148. allow <span class="quote">“<span class="quote">24:00:00</span>”</span> or
  149. equivalently <span class="quote">“<span class="quote">23:59:60</span>”</span>, but no larger value.
  150. However, the range check was miscoded so that it would
  151. accept <span class="quote">“<span class="quote">23:59:60.<em class="replaceable"><code>nnn</code></em></span>”</span> with
  152. nonzero fractional-second <em class="replaceable"><code>nnn</code></em>. In
  153. timestamp values this would result in wrapping into the first second
  154. of the next day. In <code class="type">time</code> and <code class="type">timetz</code>
  155. values, the stored value would actually be more than 24 hours,
  156. causing dump/reload failures and possibly other misbehavior.
  157. </p></li><li class="listitem"><p>
  158. Undo double-quoting of index names in <code class="command">EXPLAIN</code>'s
  159. non-text output formats (Tom Lane, Euler Taveira)
  160. </p></li><li class="listitem"><p>
  161. Fix <code class="command">EXPLAIN</code>'s accounting for resource usage,
  162. particularly buffer accesses, in parallel workers in a plan
  163. using <code class="literal">Gather Merge</code> nodes
  164. (Jehan-Guillaume de Rorthais)
  165. </p></li><li class="listitem"><p>
  166. Fix timing of constraint revalidation in <code class="command">ALTER
  167. TABLE</code> (David Rowley)
  168. </p><p>
  169. If <code class="command">ALTER TABLE</code> needs to fully rewrite the table's
  170. contents (for example, due to change of a column's data type) and
  171. also needs to scan the table to re-validate foreign keys
  172. or <code class="literal">CHECK</code> constraints, it sometimes did things in
  173. the wrong order, leading to odd errors such as <span class="quote">“<span class="quote">could not read
  174. block 0 in file "base/nnnnn/nnnnn": read only 0 of 8192 bytes</span>”</span>.
  175. </p></li><li class="listitem"><p>
  176. Fix <code class="command">REINDEX CONCURRENTLY</code> to preserve the index's
  177. replication identity flag (Michael Paquier)
  178. </p><p>
  179. Previously, reindexing a table's replica identity index caused the
  180. setting to be lost, preventing old tuple values from being included
  181. in future logical-decoding output.
  182. </p></li><li class="listitem"><p>
  183. Work around incorrect not-null markings for
  184. <code class="structname">pg_subscription</code>.<code class="structfield">subslotname</code>
  185. and <code class="structname">pg_subscription_rel</code>.<code class="structfield">srsublsn</code>
  186. (Tom Lane)
  187. </p><p>
  188. The bootstrap catalog data incorrectly marks these two catalog
  189. columns as always non-null. There's no easy way to correct that
  190. mistake in existing installations (though v13 and later will have
  191. the correct markings). The main place that depends on that marking
  192. being correct is JIT-enabled tuple deconstruction, so teach it to
  193. explicitly ignore the marking for these two columns. Also adjust
  194. some C code that accessed <code class="structfield">srsublsn</code> without
  195. checking to see if it's null; a crash from that is improbable but
  196. perhaps not impossible.
  197. </p></li><li class="listitem"><p>
  198. Cope with <code class="literal">LATERAL</code> references in restriction
  199. clauses attached to an un-flattened sub-<code class="literal">SELECT</code> in
  200. the <code class="literal">FROM</code> clause (Tom Lane)
  201. </p><p>
  202. This oversight could result in assertion failures or crashes at
  203. query execution.
  204. </p></li><li class="listitem"><p>
  205. Use the query-specified collation for operators invoked during
  206. selectivity estimation (Tom Lane)
  207. </p><p>
  208. Previously, the collation of the underlying database column was
  209. used. But using the query's collation is arguably more correct.
  210. More importantly, now that we have nondeterministic collations,
  211. there are cases where an operator will fail outright if given a
  212. nondeterministic collation. We don't want planning to fail in cases
  213. where the query itself would work, so this means that we must use
  214. the query's collation when invoking operators for estimation
  215. purposes.
  216. </p></li><li class="listitem"><p>
  217. Avoid believing that a never-analyzed foreign table has zero tuples
  218. (Tom Lane)
  219. </p><p>
  220. This primarily affected the planner's estimate of the number of
  221. groups that would be obtained by <code class="literal">GROUP BY</code>.
  222. </p></li><li class="listitem"><p>
  223. Remove bogus warning about <span class="quote">“<span class="quote">leftover placeholder tuple</span>”</span>
  224. in BRIN index de-summarization (Álvaro Herrera)
  225. </p><p>
  226. The case can occur legitimately after a cancelled vacuum, so warning
  227. about it is overly noisy.
  228. </p></li><li class="listitem"><p>
  229. Fix selection of tablespaces for <span class="quote">“<span class="quote">shared fileset</span>”</span>
  230. temporary files (Magnus Hagander, Tom Lane)
  231. </p><p>
  232. If <code class="varname">temp_tablespaces</code> is empty or explicitly names
  233. the database's primary tablespace, such files got placed into
  234. the <code class="literal">pg_default</code> tablespace rather than the
  235. database's primary tablespace as expected.
  236. </p></li><li class="listitem"><p>
  237. Fix corner-case error in masking of SP-GiST index pages during WAL
  238. consistency checking (Alexander Korotkov)
  239. </p><p>
  240. This could cause false failure reports
  241. when <code class="varname">wal_consistency_checking</code> is enabled.
  242. </p></li><li class="listitem"><p>
  243. Improve error handling in the server's <code class="filename">buffile</code>
  244. module (Thomas Munro)
  245. </p><p>
  246. Fix some cases where I/O errors were indistinguishable from reaching
  247. EOF, or were not reported at all. Also add details such as block
  248. numbers and byte counts where appropriate.
  249. </p></li><li class="listitem"><p>
  250. Fix conflict-checking anomalies in <code class="literal">SERIALIZABLE</code>
  251. isolation mode (Peter Geoghegan)
  252. </p><p>
  253. If a concurrently-inserted tuple was updated by a different
  254. concurrent transaction, and neither tuple version was visible to the
  255. current transaction's snapshot, serialization conflict checking
  256. could draw the wrong conclusions about whether the tuple was relevant
  257. to the results of the current transaction. This could allow a
  258. serializable transaction to commit when it should have failed with a
  259. serialization error.
  260. </p></li><li class="listitem"><p>
  261. Avoid repeated marking of dead btree index entries as dead (Masahiko
  262. Sawada)
  263. </p><p>
  264. While functionally harmless, this led to useless WAL traffic when
  265. checksums are enabled or <code class="varname">wal_log_hints</code> is on.
  266. </p></li><li class="listitem"><p>
  267. Fix checkpointer process to discard file sync requests
  268. when <code class="varname">fsync</code> is off (Heikki Linnakangas)
  269. </p><p>
  270. Such requests are treated as no-ops if <code class="varname">fsync</code> is
  271. off, but we forgot to remove them from the checkpointer's table of
  272. pending actions. This would lead to bloat of that table, as well as
  273. possible assertion failures if <code class="varname">fsync</code> is later
  274. re-enabled.
  275. </p></li><li class="listitem"><p>
  276. Avoid trouble during cleanup of a non-exclusive backup when JIT
  277. compilation has been activated during the backup (Robert Haas)
  278. </p></li><li class="listitem"><p>
  279. Fix failure of some code paths to acquire the correct lock before
  280. modifying <code class="filename">pg_control</code> (Nathan Bossart, Fujii
  281. Masao)
  282. </p><p>
  283. This oversight could allow <code class="filename">pg_control</code> to be
  284. written out with an inconsistent checksum, possibly causing trouble
  285. later, including inability to restart the database if it crashed
  286. before the next <code class="filename">pg_control</code> update.
  287. </p></li><li class="listitem"><p>
  288. Fix errors in <code class="function">currtid()</code>
  289. and <code class="function">currtid2()</code> (Michael Paquier)
  290. </p><p>
  291. These functions (which are undocumented and used only by ancient
  292. versions of the ODBC driver) contained coding errors that could
  293. result in crashes, or in confusing error messages such as <span class="quote">“<span class="quote">could
  294. not open file</span>”</span> when applied to a relation having no storage.
  295. </p></li><li class="listitem"><p>
  296. Avoid calling <code class="function">elog()</code>
  297. or <code class="function">palloc()</code> while holding a spinlock (Michael
  298. Paquier, Tom Lane)
  299. </p><p>
  300. Logic associated with replication slots had several violations of
  301. this coding rule. While the odds of trouble are quite low, an error
  302. in the called function would lead to a stuck spinlock.
  303. </p></li><li class="listitem"><p>
  304. Fix assertion in logical replication subscriber to allow use
  305. of <code class="literal">REPLICA IDENTITY FULL</code> (Euler Taveira)
  306. </p><p>
  307. This was just an incorrect assertion, so it has no impact on
  308. standard production builds.
  309. </p></li><li class="listitem"><p>
  310. Ensure that <span class="application">libpq</span> continues to try to
  311. read from the database connection socket after a write failure
  312. (Tom Lane)
  313. </p><p>
  314. This is important not only to ensure that we collect any final error
  315. message from a dying server process, but because we do not consider
  316. the connection lost until we see a read failure. This oversight
  317. allowed <span class="application">libpq</span> to continue trying to
  318. send <code class="command">COPY</code> data indefinitely after a mid-transfer
  319. loss of connection, rather than reporting failure to the application.
  320. </p></li><li class="listitem"><p>
  321. Fix bugs in <span class="application">libpq</span>'s management of GSS
  322. encryption state (Tom Lane)
  323. </p><p>
  324. A connection using GSS encryption could freeze up when attempting to
  325. reset it after a server restart, or when moving on to the next one of
  326. a list of candidate servers.
  327. </p></li><li class="listitem"><p>
  328. Fix <span class="application">ecpg</span> crash with <code class="type">bytea</code>
  329. and cursor variables (Jehan-Guillaume de Rorthais)
  330. </p></li><li class="listitem"><p>
  331. Report out-of-disk-space errors properly
  332. in <span class="application">pg_dump</span>
  333. and <span class="application">pg_basebackup</span> (Justin Pryzby, Tom
  334. Lane, Álvaro Herrera)
  335. </p><p>
  336. Some code paths could produce silly reports like <span class="quote">“<span class="quote">could not
  337. write file: Success</span>”</span>.
  338. </p></li><li class="listitem"><p>
  339. Make <span class="application">pg_restore</span> cope with
  340. data-offset-less custom-format archive files when it needs to
  341. restore data items out of order (David Gilman, Tom Lane)
  342. </p><p>
  343. <span class="application">pg_dump</span> will produce such files if it
  344. cannot seek its output (for example, if the output is piped to
  345. something). This fix primarily improves the ability to do a
  346. parallel restore from such a file.
  347. </p></li><li class="listitem"><p>
  348. Fix parallel restore of tables having both table-level privileges
  349. and per-column privileges (Tom Lane)
  350. </p><p>
  351. The table-level privilege grants have to be applied first, but a
  352. parallel restore did not reliably order them that way; this could
  353. lead to <span class="quote">“<span class="quote">tuple concurrently updated</span>”</span> errors, or to
  354. disappearance of some per-column privilege grants. The fix for this
  355. is to include dependency links between such entries in the archive
  356. file, meaning that a new dump has to be taken with a
  357. corrected <span class="application">pg_dump</span> to ensure that the
  358. problem will not recur.
  359. </p></li><li class="listitem"><p>
  360. Ensure that <span class="application">pg_upgrade</span> runs
  361. with <code class="varname">vacuum_defer_cleanup_age</code> set to zero in the
  362. target cluster (Bruce Momjian)
  363. </p><p>
  364. If the target cluster's configuration has been modified to
  365. set <code class="varname">vacuum_defer_cleanup_age</code> to a nonzero value,
  366. that prevented freezing of the system catalogs from working properly,
  367. which caused the upgrade to fail in confusing ways. Ensure that any
  368. such setting is overridden for the duration of the upgrade.
  369. </p></li><li class="listitem"><p>
  370. Fix <span class="application">pg_recvlogical</span> to drain pending
  371. messages before exiting (Noah Misch)
  372. </p><p>
  373. Without this, the replication sender might detect a send failure and
  374. exit without making the expected final update to the replication
  375. slot's LSN position. That led to re-transmitting data after the
  376. next connection. It was also possible to miss error messages sent
  377. after the last data that <span class="application">pg_recvlogical</span>
  378. wants to consume.
  379. </p></li><li class="listitem"><p>
  380. Fix <span class="application">pg_rewind</span>'s handling of just-deleted
  381. files in the source data directory (Justin Pryzby, Michael Paquier)
  382. </p><p>
  383. When working with an on-line source database, concurrent file
  384. deletions are possible, but <span class="application">pg_rewind</span>
  385. would get confused if deletion happened between seeing a file's
  386. directory entry and examining it with <code class="function">stat()</code>.
  387. </p></li><li class="listitem"><p>
  388. Make <span class="application">pg_test_fsync</span> use binary I/O mode on
  389. Windows (Michael Paquier)
  390. </p><p>
  391. Previously it wrote the test file in text mode, which is not an
  392. accurate reflection of <span class="productname">PostgreSQL</span>'s
  393. actual usage.
  394. </p></li><li class="listitem"><p>
  395. Fix <code class="filename">contrib/amcheck</code> to not complain about
  396. deleted index pages that are empty (Alexander Korotkov)
  397. </p><p>
  398. This state of affairs is normal during WAL replay.
  399. </p></li><li class="listitem"><p>
  400. Fix failure to initialize local state correctly
  401. in <code class="filename">contrib/dblink</code> (Joe Conway)
  402. </p><p>
  403. With the right combination of circumstances, this could lead to
  404. <code class="function">dblink_close()</code> issuing an unexpected
  405. remote <code class="command">COMMIT</code>.
  406. </p></li><li class="listitem"><p>
  407. Fix <code class="filename">contrib/pgcrypto</code>'s misuse
  408. of <code class="function">deflate()</code> (Tom Lane)
  409. </p><p>
  410. The <code class="function">pgp_sym_encrypt</code> functions could produce
  411. incorrect compressed data due to mishandling
  412. of <span class="application">zlib</span>'s API requirements. We have no
  413. reports of this error manifesting with
  414. stock <span class="application">zlib</span>, but it can be seen when using
  415. IBM's <span class="application">zlibNX</span> implementation.
  416. </p></li><li class="listitem"><p>
  417. Fix corner case in decompression logic
  418. in <code class="filename">contrib/pgcrypto</code>'s
  419. <code class="function">pgp_sym_decrypt</code> functions (Kyotaro Horiguchi,
  420. Michael Paquier)
  421. </p><p>
  422. A compressed stream can validly end with an empty packet, but the
  423. decompressor failed to handle this and would complain about corrupt
  424. data.
  425. </p></li><li class="listitem"><p>
  426. Support building our NLS code with Microsoft Visual Studio 2015 or
  427. later (Juan José Santamaría Flecha, Davinder Singh,
  428. Amit Kapila)
  429. </p></li><li class="listitem"><p>
  430. Avoid possible failure of our MSVC install script when there is a
  431. file named <code class="filename">configure</code> several levels above the
  432. source code tree (Arnold Müller)
  433. </p><p>
  434. This could confuse some logic that looked
  435. for <code class="filename">configure</code> to identify the top level of the
  436. source tree.
  437. </p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="release.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="release.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="release-12-3.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix E. Release Notes </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> E.2. Release 12.3</td></tr></table></div></body></html>
上海开阖软件有限公司 沪ICP备12045867号-1