E.14.版本 10

发布日期: 2017-10-05

E.14.1. Overview

PostgreSQL 10 的主要增强功能包括:

在以下各节中将更详细地说明上述各项。

E.14.2. 迁移到版本 10

那些希望从任何先前版本迁移数据的用户都需要使用pg_dumpallpg_upgrade或逻辑复制进行转储/还原。有关迁移到新的主要版本的一般信息,请参见Section 18.6

版本 10 包含许多更改,可能会影响与以前版本的兼容性。请注意以下不兼容性:

哈希索引的重大改进使此要求成为必需。 pg_upgrade 将创建一个脚本来辅助这一工作。

用户有时会认为这些目录仅包含非必需的日志文件,然后 continue 手动删除预写日志文件或事务状态文件,从而导致不可恢复的数据丢失。这些名称更改旨在防止将来出现此类错误。

例如,pg_switch_xlog()变为pg_switch_wal(),pg_receivexlog 变为 pg_receivewal,--xlogdir变为--waldir。这是为了与pg_xlog目录名的更改保持一致;通常,在任何面向用户的地方都不再使用“ xlog”术语。

以前,这两种术语的用法不一致。

现在,在评估SELECT列表中的标量表达式之前,先评估返回集合的函数,就像它们已放在LATERAL FROM子句中一样。对于存在多个集合返回函数的情况,这可以使语义更清晰。如果它们返回不同的行数,则通过添加空值来扩展较短的结果以匹配最长的结果。以前,结果一直循环执行,直到它们都同时终止,从而产生的行数等于函数周期的最小公倍数。另外,现在在CASECOALESCE构造中不允许返回集合的函数。有关更多信息,请参见Section 37.4.8

涉及可写 CTE 更新由包含语句或另一个可写 CTE 更新的同一表的案例,触发了BEFORE STATEMENTAFTER STATEMENT触发器多次。另外,如果在表上存在受外键强制操作(例如ON DELETE CASCADE)影响的语句级触发器,则每个外部 SQL 语句可能会触发多次。这与 SQL 标准相反,因此请对其进行更改。

现在,序列关系仅存储可由nextval()修改的字段,即last_valuelog_cntis_called。其他序列属性,例如起始值和增量,保留在pg_sequence目录的相应行中。 ALTER SEQUENCE更新现在可以完全事务处理,这意味着序列将被锁定直到提交。 nextval()setval()函数保持非事务性。

此更改引入的主要不兼容性是,现在从序列关系中进行选择仅返回上面指定的三个字段。要获取序列的其他属性,应用程序必须查看pg_sequence。新的系统视图pg_sequences也可以用于此目的。它提供与现有代码更兼容的列名。

同样,为SERIAL列创建的序列现在生成正 32 位宽的值,而以前的版本生成 64 位宽的值。如果值仅存储在列中,则没有可见效果。

psql 的\d命令序列的输出也已重新设计。

这会将 pg_basebackup 的-X/--wal-method默认更改为stream。选项值none已添加,以重现旧的行为。 pg_basebackup 选项-x已被删除(而使用-X fetch)。

在以前的版本中,逻辑复制连接需要数据库列中的replication关键字。从此版本开始,逻辑复制将普通条目与数据库名称或诸如all之类的关键字进行匹配。物理复制 continue 使用replication关键字。由于内置逻辑复制是此版本中的新增功能,因此此更改仅影响第三方逻辑复制插件的用户。

以前,某些 pg_ctl 操作不 await 完成,而需要使用-w来完成。

这将替换未编码的硬编码文件名dh1024.pem。请注意,默认情况下不再检查dh1024.pem;如果要使用自定义 DH 参数,则必须设置此选项。

内置的 DH 参数的大小已从 1024 位增加到 2048 位,从而使 DH 密钥交换更能抵抗暴力攻击。但是,某些旧的 SSL 实现(尤其是 Java Runtime Environment 版本 6 的某些修订版)将不接受长度超过 1024 位的 DH 参数,因此将无法通过 SSL 连接。如果有必要支持此类旧 Client 端,则可以使用自定义的 1024 位 DH 参数,而不使用已编译的默认值。参见ssl_dh_params_file

password_encryption服务器参数不再支持offplainCREATE/ALTER USER ... PASSWORD不再支持UNENCRYPTED选项。同样,--unencrypted选项已从 createuser 中删除。从较早版本迁移的未加密密码将在此版本中以加密方式存储。 password_encryption的默认设置仍然是md5

它们替换了min_parallel_relation_size,后者被认为太通用了。

这些设置实际上是文件名列表,但是以前被视为具有不同解析规则的 SQL 标识符列表。

从默认值更改此设置会导致引用父表的查询不包括子表。 SQL 标准要求将它们包括在内,但这是自 PostgreSQL 7.1 起的默认设置。

此功能要求对 PL/Python 中的复合类型数组的处理进行向后不兼容的更改。以前,您可以通过编写例如[[col1, col2], [col1, col2]]返回组合值数组。但现在将其解释为二维数组。现在必须将数组中的复合类型编写为 PythonTuples,而不是列表,以解决歧义。也就是说,Rewrite[(col1, col2), (col1, col2)]

此功能已由新的服务器参数pltcl.start_procpltclu.start_proc代替,这些参数更易于使用,并且与其他 PL 中可用的功能更相似。

需要从 8.0 之前的服务器中转储的用户将需要使用 PostgreSQL 9.6 或更早版本的转储程序。结果输出仍应成功加载到较新的服务器中。

这将删除配置的--disable-integer-datetimes选项。自 PostgreSQL 8.3 以来,浮点时间戳几乎没有优势,并且不是默认值。

自 PostgreSQL 6.3 起,该协议就没有 Client 端支持。

该模块与 8.3 之前的 PostgreSQL 版本中提供的全文搜索版本兼容。

自 PostgreSQL 9.1 起不推荐使用这些功能。而是直接使用CREATE EXTENSIONDROP EXTENSION

提供 C 编码功能的扩展现在必须符合版本 1 的调用约定。自 2001 年以来,不推荐使用版本 0.

E.14.3. Changes

在下面,您将详细了解 PostgreSQL 10 和以前的主要发行版之间的更改。

E.14.3.1. Server

E.14.3.1.1. 并行查询

此更改允许 B 树索引页由单独的并行工作程序搜索。

这允许单个索引扫描来调度并行工作器以处理堆的不同区域。

可以将此参数设置为低于max_worker_processes,以保留工作进程以用于并行查询以外的目的。

E.14.3.1.2. Indexes

这使哈希索引具有崩溃安全性和可复制性。先前有关其使用的警告消息已删除。

新的CREATE INDEX选项可在创建新页面范围时自动汇总以前的 BRIN 页面范围。

新的 SQL 函数brin_summarize_range()更新指定范围的 BRIN 索引汇总,而brin_desummarize_range()删除它。这有助于更新由于UPDATEDELETE导致的较小范围的汇总。

E.14.3.1.3. Locking

例如,现在可以使用更轻巧的锁来更改表的effective_io_concurrency设置。

现在可以通过两个新的服务器参数max_pred_locks_per_relationmax_pred_locks_per_page控制锁升级。

E.14.3.1.4. Optimizer

新命令是CREATE STATISTICSALTER STATISTICSDROP STATISTICS。此功能在估计查询内存使用情况以及合并各个列的统计信息时非常有用。

现在,优化器对可以在哪里放置 RLS 过滤条件有了更多的了解,可以生成更好的计划,同时仍然可以安全地强制执行 RLS 条件。

E.14.3.1.5. 一般表现

这对于处理许多行的查询特别有用。

E.14.3.1.6. Monitoring

默认情况下,计划和执行时间以EXPLAIN ANALYZE显示,在其他情况下则不显示。新的EXPLAIN选项SUMMARY允许对此进行显式控制。

新角色pg_monitorpg_read_all_settingspg_read_all_statspg_stat_scan_tables允许简化权限配置。

E.14.3.1.6.1. Logging

先前的默认值为空前缀。

新功能是pg_ls_logdir()pg_ls_waldir(),可以由具有适当权限的非超级用户执行。

另外,当记录无法绑定侦听套接字的失败时,请包含我们尝试绑定的特定地址。

这些现在是DEBUG1级的消息。

这也会更改client_min_messages调试级别的详细程度。

E.14.3.1.6.2. pg_stat_activity

通过此更改,可以报告许多低级 await 条件,包括闩锁 await,文件读/写/ fsync,Client 端读/写和同步复制。

这简化了监视。新列backend_type标识进程类型。

这使输出更加一致。

E.14.3.1.7. Authentication

与现有的md5协商和存储方法相比,这提供了更好的安全性。

这是支持其他密码哈希选项的必要条件。

这显示文件内容,而不是当前活动的设置。

现在,所有与 RADIUS 相关的参数都是复数,并且支持以逗号分隔的服务器列表。

E.14.3.1.8. 服务器配置

这允许通过使用pg_ctl reloadSELECT pg_reload_conf()或发送SIGHUPsignal 来重新配置 SSL,而无需重新启动服务器。但是,如果服务器的 SSL 密钥需要密码,则重新加载 SSL 配置不起作用,因为无法重新提示密码。在这种情况下,原始配置将适用于邮政局长的生活。

E.14.3.1.9. Reliability

这样可以减少断电后数据丢失的风险。

E.14.3.1.9.1. 预写日志(WAL)

任何完整性检查失败都会在备用数据库上生成致命错误。

更大的 WAL 段大小允许更少的archive_command调用和更少的 WAL 文件进行 Management。

E.14.3.2. 复制和恢复

逻辑复制比物理复制提供更大的灵 Active,包括在不同主要版本的 PostgreSQL 之间进行复制以及选择性复制。

以前,服务器始终 await 在synchronous_standby_names中首先出现的活动备用数据库。新的synchronous_standby_names关键字ANY允许 await 任意数量的备用数据库,而不管其 Sequences 如何。这称为仲裁提交。

具体来说,默认值已更改为wal_levelmax_wal_sendersmax_replication_slotshot_standby,以使其适合于现成的这些用法。

以前,默认情况下已 Comments 掉pg_hba.conf的复制连接行。这对于pg_basebackup尤其有用。

新列是write_lagflush_lagreplay_lag

以前只能通过时间戳或 XID 选择停止点。

pg_stop_backup()的第二个可选参数控制该行为。

会话退出或发生错误时,会自动删除临时插槽。

E.14.3.3. Queries

以前,此类字符从未被视为属于与语言环境相关的字符类,例如[[:alpha:]]

E.14.3.4. Util 命令

该语法支持范围和列表分区。

可以从以服务器端语言编写的触发器访问过渡表。

以前,所有安全策略都是允许的,这意味着任何匹配的策略都允许访问。限制性策略必须匹配才能授予访问权限。这些策略类型可以组合。

以前,还需要对引用表具有REFERENCES权限。这似乎是由于对 SQL 标准的误读造成的。由于创建外键(或任何其他类型的)约束需要对约束表具有所有权特权,因此另外需要REFERENCES权限似乎毫无意义。

这是使用ALTER DEFAULT PRIVILEGES命令完成的。

这简化了与基本列范围匹配的序列的创建。

触发器被提供给COPY读取的数据行。

例如,如果只有一个具有该名称的函数,则在不带参数的函数名称上允许DROP FUNCTION。 SQL 标准要求此行为。

此信息也包含在log_autovacuum_min_duration输出中。

E.14.3.5. 资料类型

现在,可以在这些数据类型上使用函数ts_headline()to_tsvector()

这是对 EUI-48 MAC 地址(类型macaddr)的现有支持的补充。

这些类似于SERIAL列,但符合 SQL 标准。

这使用语法更改类型...重命名值

以前将声明为anyarray的列(尤其是在pg_stats视图中的列)转换为JSON字符串,而不是数组。

以前,这种情况会导致将int8值转换为float8,然后使用money和-4 运算符。新的行为避免了可能的精度损失。但是请注意,像其他整数除法情况一样,现在将money除以int8会截断商,而先前的行为会四舍五入。

E.14.3.6. Functions

这类似于regexp_matches(),但是它只返回第一个匹配项的结果,因此不需要返回集合,这使得在简单情况下更易于使用。

通过此更改,可以从 JSON 数组正确转换目标 SQL 类型中的数组类型字段,并从 JSON 对象正确转换复合类型字段。以前,这种情况将失败,因为 JSON 值的文本表示将被馈送到array_in()record_in(),并且其语法将与那些 Importing 函数期望的语法不匹配。

这不同于txid_current(),后者总是返回 TransactionID,并在必要时分配一个 TransactionID。与该功能不同,该功能可以在备用服务器上运行。

这对于在突然断开连接后检查先前的事务是否已提交以及您是否刚刚没有收到确认非常有用。

例如,先前的to_date('2009-06-40','YYYY-MM-DD')被接受并返回2009-07-10。现在它将产生一个错误。

E.14.3.7. 服务器端语言

这允许一种更加面向对象的编程风格。

以前,语法限制阻止目标变量成为数组元素。

E.14.3.7.1. PL/Tcl

这允许 PL/Tcl 查询失败而不会中止整个功能。

E.14.3.8. Client 端接口

libpq 将连接到列表中的第一个响应服务器。

当指定多个主机名时,这很有用。它由 libpq 连接参数target_session_attrs控制。

以前只能通过环境变量来指定。

以前只能使用PQencryptPassword()创建MD5加密的密码。此新功能还可以创建SCRAM-SHA-256加密的密码。

此后,ecpg 版本将与 PostgreSQL 发行版本号匹配。

E.14.3.9. Client 应用

E.14.3.9.1. psql

此功能添加了 psql 元命令\if\elif\else\endif。这主要有助于脚本编写。

这在新的 psql 条件分支命令中特别有用。

以前,将 psql 的特殊变量之一设置为无效值会导致默认行为。如果建议的新值无效,则对特殊变量的\set现在会失败。作为特殊的 exception,在布尔值特殊变量上具有空值或省略新值的\set仍具有将变量设置为on的效果;但是现在它实际上获取了该值,而不是一个空字符串。现在,将特殊变量上的\unset显式设置为默认值,该默认值也是其在启动时获取的值。总之,控制变量现在始终具有可显示的值,该值反映了 psql 实际在做什么。

以前,它们显示在单个“修饰符”列中。

现在,他们都将有关该消息的消息打印到 stderr,而不是 stdout,并且消息的措辞更加一致。

E.14.3.9.2. pgbench

现在,可以通过写反斜杠-返回将元命令 continue 到下一行。

E.14.3.10. 服务器应用

这是对现有--startpos选项的补充。

仍然支持旧的拼写。

E.14.3.10.1. pg_dump,pg_dumpall,pg_restore

这会添加一个新的-N/--exclude-schema选项。

这抑制了大物体的倾倒。

这允许非超级用户使用 pg_dumpall。如果没有此选项,则由于无法读取密码而失败。

这样可以提供更高的安全性,确保在程序退出之前将输出安全地存储在磁盘上。可以使用新的--no-sync选项禁用此功能。

E.14.3.10.2. pg_basebackup

WAL 将与基本备份存储在单独的 tar 文件中。

当 pg_basebackup 使用带有默认选项的 WAL 流时,默认情况下将使用临时复制插槽。

E.14.3.10.3. pg_ctl

邮政 Management 员已更改为在postmaster.pid中报告其准备连接的状态,并且 pg_ctl 现在检查该文件以检测启动是否完成。这比旧方法更有效,更可靠,并且消除了启动期间有关拒绝连接尝试的邮局主管日志条目。

现在,pg_ctl 在 awaitpostmaster 状态更改时每秒探测十次,而不是每秒探测一次。

在这种情况下,startpromote操作现在返回退出状态 1,而不是 0. stop操作始终可以做到这一点。

E.14.3.11. 源代码

发布编号现在将分为两部分(例如10.1),而不是三部分(例如9.6.3)。现在,主要版本将仅增加第一个数字,次要版本将仅增加第二个数字。发行分支将由单个数字(例如10而不是9.6)引用。此项更改旨在减少用户对 PostgreSQL 的主要或次要版本感到困惑。

基于 FreeBSD 项目的最新改进,我们已切换到 pg_bsd_indent 的新版本。这修复了许多小错误,这些小错误导致了奇怪的 C 代码格式化决策。最值得注意的是,括号中的行(例如在多行函数调用中)现在会统一缩进以匹配开头括号,即使这会导致代码超出右边距。

ICU 库具有版本控制功能,可以检测版本之间的排序规则更改。通过配置选项--with-icu启用它。默认值仍使用 os 的本机归类库。

如果第三方代码使用extern函数声明,则它们还应在这些声明中添加DLLEXPORT标记。

现在,它们的功能会自动发生。这些名称现在有 no-op 宏,因此不需要立即更新外部模块,但最终应删除此类调用。

此更改的副作用是SPI_palloc()和相关功能现在需要有效的 SPI 连接。如果没有,它们不会退化为简单的palloc()。先前的行为不是很有用,并带来了意外内存泄漏的风险。

这样可以避免特定于平台的 SysVsignal 量使用限制。

如果clock_gettime()不可用,则仍使用gettimeofday()

如果找不到强随机数生成器,则除非使用--disable-strong-random选项,否则configure将失败。但是,使用此选项,将禁用需要强随机数生成器的pgcrypto函数。

大多数呼叫者并不在乎复合类型的 OID;但是如果将结果 Tuples 用作复合基准,则应采取步骤以确保将正确的 OID 插入其中。

以前使用 Jade,DSSSL 和 JadeTex。

E.14.3.12. 附加模块

这减少了必须从远程服务器传递的数据量,并减轻了来自请求服务器的聚合计算的负担。

以前OID列始终返回零。

这允许枚举在排除约束中使用。

这也改善了对infiniteNaN值的处理。

这使得它在生产系统上运行时的破坏性较小。

这允许 DBA 允许非超级用户运行这些功能。

E.14.4. Acknowledgments

以下个人(按字母 Sequences)以补丁作者,提交者,审阅者,测试者或问题的报告者的身份对该发行版做出了贡献。

Adam Brightwell
Adam Brusselback
Adam Gomaa
Adam Sah
Adrian Klaver
艾丹·范戴克
Aleksander Alekseev
Alexander Korotkov
Alexander Lakhin
Alexander Sosna
Alexey Bashtanov
Alexey Grishchenko
Alexey Isayko
阿尔瓦罗·埃尔南德斯·托尔托萨
Álvaro Herrera
Amit Kapila
Amit Khandekar
Amit Langote
Amul Sul
Anastasia Lubennikova
安德里亚斯·约瑟夫·克罗格
Andreas Karlsson
Andreas Scherbaum
Andreas Seltenreich
Andres Freund
Andrew Dunstan
Andrew Gierth
Andrew Wheelwright
Andrey Borodin
Andrey Lizenko
Andy Abelisto
Antonin Houska
Ants Aasma
Arjen Nienhuis
Arseny Sher
Artur Zakirov
Ashutosh Bapat
Ashutosh Sharma
Ashwin Agrawal
Atsushi Torikoshi
Ayumi Ishii
Basil Bourque
Beena Emerson
本德格拉夫
Benedikt Grundmann
Bernd Helmle
Brad DeJong
Brandur Leach
Breen Hagan
Bruce Momjian
布鲁诺·沃尔夫三世
Catalin Iacob
Chapman Flack
Chen Huajun
Choi Doo-Won
Chris Bandy
Chris Richards
Chris Ruprecht
Christian Ullrich
Christoph Berg
Chuanting Wang
Claudio Freire
Clinton Adams
Const Zhang
Constantin Pan
Corey Huinker
Craig Ringer
Cynthia Shang
达格芬·伊尔马里·曼斯柯
Daisuke Higuchi
Damian Quiroga
Dan Wood
邓敏香
Daniel Gustafsson
Daniel Vérité
Daniel Westermann
Daniele Varrazzo
Danylo Hlynskyi
Darko Prelec
Dave Cramer
Dave Page
David Christensen
David Fetter
David Johnston
David Rader
David Rowley
David Steele
Dean Rasheed
Denis Smirnov
Denish Patel
Dennis Björklund
Devrim Gündüz
Dilip Kumar
Dilyan Palauzov
Dima Pavlov
Dimitry Ivanov
Dmitriy Sarafannikov
Dmitry Dolgov
Dmitry Fedin
Don Morrison
Egor Rogov
Eiji Seki
Emil Iggland
Emre Hasegeli
Enrique Meneses
Erik Nordström
Erik Rijkers
Erwin Brandstetter
Etsuro Fujita
Eugen Konkov
Eugene Kazakov
Euler Taveira
Fabien Coelho
法布里齐奥·德·罗耶斯·梅洛
Feike Steenbergen
Felix Gerzaguet
Filip Jirsák
Fujii Masao
Gabriele Bartolini
Gabrielle Roth
Gao Zengqi
Gerdan Santos
Gianni Ciolli
Gilles Darold
Giuseppe Broccolo
Graham Dutton
Greg Atkins
Greg Burek
Grigory Smolkin
Guillaume Lelarge
Hans Buschmann
Haribabu Kommi
Heikki Linnakangas
Henry Boehlert
Huan Ruan
Ian Barwick
Igor Korot
Ildus Kurbangaliev
Ivan Kartyshov
Jaime Casanova
Jakob Egger
James Parks
Jarred Ward
Jason Li
Jason O'Donnell
Jason Petersen
Jeevan Chalke
Jeevan Ladhe
Jeff Dafoe
Jeff Davis
Jeff Janes
Jelte Fennema
Jeremy Finzel
Jeremy Schneider
耶罗恩·范德汉姆
Jesper Pedersen
Jim Mlodgenski
Jim Nasby
Jinyu Zhang
Joe Conway
Joel Jacobson
John Harvey
Jon Nelson
Jordan Gigov
Josh Berkus
Josh Soref
Julian Markwort
Julien Rouhaud
Junseok Yang
Justin Muise
Justin Pryzby
Kacper Zuk
KaiGai Kohei
Karen Huddleston
Karl Lehenbauer
卡尔·O·平克
Keith Fiske
Kevin Grittner
金·罗斯·卡尔森
Konstantin Evteev
Konstantin Knizhnik
Kuntal Ghosh
Kurt Kartaltepe
Kyle Conroy
Kyotaro Horiguchi
Laurenz Albe
Leonardo Cecchi
Ludovic Vaugeois-Pepin
Lukas Fittl
Magnus Hagander
Maksim Milyutin
Maksym Sobolyev
Marc Rassbach
Marc-Olaf Jaschke
Marcos Castedo
Marek Cvoren
Mark Dilger
Mark Kirkwood
Mark Pether
Marko Tiikkaja
Markus Winand
Marllius Ribeiro
Marti Raudsepp
Martín Marqués
Masahiko Sawada
Matheus Oliveira
Mathieu Fenniak
Merlin Moncure
Michael Banck
Michael Day
Michael Meskes
Michael Overmeyer
Michael Paquier
Mike Palmiotto
Milos Urbanek
Mithun Cy
Moshe Jacobson
Murtuza Zabuawala
Naoki Okano
Nathan Bossart
Nathan Wagner
Neha Khatri
Neha Sharma
Neil Anderson
Nicolas Baccelli
Nicolas Guini
Nicolas Thauvin
Nikhil Sontakke
Nikita Glukhov
Nikolaus Thiel
Nikolay Nikitin
Nikolay Shaplov
Noah Misch
Noriyoshi Shinoda
Olaf Gawenda
Oleg Bartunov
Oskari Saarenmaa
Otar Shavadze
Paresh More
Paul Jungwirth
Paul Ramsey
Pavan Deolasee
Pavel Golub
Pavel Hanák
Pavel Raiskup
Pavel Stehule
Peng Sun
Peter Eisentraut
Peter Geoghegan
Petr Jelínek
Philippe Beaudoin
Pierre-Emmanuel André
Piotr Stefaniak
Prabhat Sahu
QL Zhuo
Radek Slupik
拉法德拉托雷
Rafia Sabih
Ragnar Ouchterlony
Rahila Syed
Rajkumar Raghuwanshi
Regina Obe
Richard Pistole
Robert Haas
Robins Tharakan
Rod Taylor
Roman Shaposhnik
Rushabh Lathia
Ryan Murphy
Sandeep Thakkar
Scott Milliken
Sean Farrell
Sebastian Luque
Sehrope Sarkuni
Sergey Burladyan
Sergey Koposov
Shay Rojansky
Shinichi Matsuda
Sho Kato
Simon Riggs
Simone Gotti
Spencer Thomason
Stas Kelvich
Stepan Pesternikov
Stephen Frost
Steve Randall
Steve Singer
Steven Fackler
Steven Winfield
Suraj Kharage
Sveinn Sveinsson
斯文·R·昆兹
Tahir Fakhroutdinov
Taiki Kondo
Takayuki Tsunakawa
Takeshi Ideriha
Tatsuo Ishii
Tatsuro Yamada
Teodor Sigaev
Thom Brown
Thomas Kellerer
Thomas Munro
Tim Goodaire
Tobias Bussmann
Tom Dunstan
Tom Lane
汤姆·范·蒂尔堡
Tomas Vondra
Tomonari Katsumata
Tushar Ahuja
Vaishnavi Prabakaran
Venkata Balaji Nagothi
Vicky Vergara
Victor Wagner
Vik Fearing
Vinayak Pokale
Viren Negi
Vitaly Burovoy
Vladimir Kunshchikov
Vladimir Rusinov
黄奕文
Yugo Nagata
杨振明
Zhou Digoal
上一章 首页 下一章