Learn PostgreSQL: Use, manage, and build secure and scalable databases with PostgreSQL 16, 2nd Edition / Изучайте PostgreSQL: Использование, управление и создание безопасных и масштабируемых баз данных с помощью PostgreSQL 16, 2-е издание Год издания: 2023 Автор: Pirozzi Enrico, Ferrari Luca / Пироцци Энрико, Феррари Лука Издательство: Packt Publishing ISBN: 978-1-83763-564-1 Серия: Expert insight Язык: Английский Формат: PDF, EPUB Качество: Издательский макет или текст (eBook) Интерактивное оглавление: Да Количество страниц: 745 Описание: This new edition will help you learn PostgreSQL from scratch with the latest version, providing a complete focused view on aspects like configuration, high performance, partitioning, backup, server-side programming and replication. Key Features Learn the fundamentals of PostgreSQL 16, including SQL statements, replication, and security Enhance your learning journey with the provided Docker images for practical hands-on exercises and tests at the end of each chapter Get new and improved examples, use-cases, and scenarios specifically for concepts like partitioning, replication, back-up and restore, cluster configuration, monitoring and others Book Description The latest edition of this PostgreSQL book will help you to start using PostgreSQL from absolute scratch, helping you to quickly understand the internal workings of the database. With a structured approach and practical examples, go on a journey that covers the basics, from SQL statements and how to run server-side programs, to configuring, managing, securing, and optimizing database performance. This new edition will not only help you get to grips with all the recent changes within the PostgreSQL ecosystem but will also dig deeper into concepts like partitioning and replication with a fresh set of examples. The book is also equipped with Docker images for each chapter which makes the learning experience faster and easier. Starting with the absolute basics of databases, the book sails through to advanced concepts like window functions, logging, auditing, extending the database, configuration, partitioning, and replication. It will also help you seamlessly migrate your existing database system to PostgreSQL and contains a dedicated chapter on disaster recovery. Each chapter ends with practice questions to test your learning at regular intervals. By the end of this book, you will be able to install, configure, manage, and develop applications against a PostgreSQL database. What you will learn Gain a deeper understanding of PostgreSQL internals like transactions, MVCC, security and replication Enhance data management with PostgreSQL’s latest partitioning features Choose the right replication strategy for your database See concrete examples of how to migrate data from another database, perform backups and restores, monitor your PostgreSQL installation and more Ensure security and compliance with schemas and user privileges Create customized database functions and extensions Get to grips with server-side programming, window functions, and triggers Who this book is for Learning PostgresSQL 16 book is for anyone interested in learning about the PostgreSQL database from scratch. Anyone looking to build robust data warehousing applications and scale the database for high-availability and performance using the latest features of PostgreSQL will also find this book useful. Although prior knowledge of PostgreSQL is not required, familiarity with databases is expected. Это новое издание поможет вам освоить PostgreSQL с нуля с помощью последней версии, предоставляя полное представление о таких аспектах, как конфигурация, высокая производительность, разбиение на разделы, резервное копирование, программирование на стороне сервера и репликация. Ключевые функции Изучите основы PostgreSQL 16, включая инструкции SQL, репликацию и безопасность Расширьте свой учебный процесс с помощью предоставленных изображений Docker для практических упражнений и тестов в конце каждой главы Получите новые и улучшенные примеры, варианты использования и сценарии специально для таких концепций, как секционирование, репликация, резервное копирование и восстановление, конфигурация кластера, мониторинг и другие Описание книги Последнее издание этой книги по PostgreSQL поможет вам начать использовать PostgreSQL с абсолютного нуля, помогая быстро разобраться во внутренней работе базы данных. Используя структурированный подход и практические примеры, отправляйтесь в путешествие, охватывающее основы, от инструкций SQL и того, как запускать серверные программы, до настройки, управления, защиты и оптимизации производительности базы данных. Это новое издание не только поможет вам разобраться со всеми последними изменениями в экосистеме PostgreSQL, но и позволит глубже разобраться в таких понятиях, как секционирование и репликация, на новых примерах. Книга также снабжена изображениями Docker для каждой главы, что ускоряет и упрощает процесс обучения. Начиная с абсолютных основ баз данных, книга переходит к таким продвинутым концепциям, как оконные функции, ведение журнала, аудит, расширение базы данных, конфигурация, разбиение на разделы и репликация. Оно также поможет вам без проблем перенести существующую систему баз данных на PostgreSQL и содержит специальную главу, посвященную аварийному восстановлению. Каждая глава заканчивается практическими вопросами для проверки ваших знаний через регулярные промежутки времени. К концу этой книги вы сможете устанавливать, настраивать, управлять и разрабатывать приложения для базы данных PostgreSQL. Чему вы научитесь Получите более глубокое представление о внутренних компонентах PostgreSQL, таких как транзакции, MVCC, безопасность и репликация Улучшите управление данными с помощью новейших функций секционирования PostgreSQL Выберите правильную стратегию репликации для вашей базы данных Ознакомитесь с конкретными примерами переноса данных из другой базы данных, выполнения резервного копирования и восстановления, мониторинга установки PostgreSQL и многого другого Обеспечите безопасность и соответствие схемам и привилегиям пользователей Создавать индивидуальные функции и расширения базы данных Познакомитесь с серверным программированием, оконными функциями и триггерами Для кого предназначена эта книга Книга "Изучение PostgresSQL 16" предназначена для всех, кто заинтересован в изучении базы данных PostgreSQL с нуля. Любой, кто хочет создавать надежные приложения для хранения данных и масштабировать базу данных для обеспечения высокой доступности и производительности с использованием новейших функций PostgreSQL, также найдет эту книгу полезной. Хотя предварительные знания PostgreSQL не требуются, ожидается знакомство с базами данных.
Примеры страниц
Оглавление
Preface xxv Chapter 1: Introduction to PostgreSQL 1 Technical requirements ...................................................................................................... 2 PostgreSQL at a glance ........................................................................................................ 2 A brief history of PostgreSQL • 4 What’s new in PostgreSQL 16? • 5 PostgreSQL release policy, version numbers, and life cycle • 5 Exploring PostgreSQL terminology ..................................................................................... 6 Installing PostgreSQL ....................................................................................................... 10 What to install • 11 Installing PostgreSQL from binary packages • 12 Using the book’s Docker images • 13 Installing PostgreSQL on GNU/Linux Debian, Ubuntu, and derivatives • 14 Installing PostgreSQL on Fedora Linux • 15 Installing PostgreSQL on FreeBSD • 16 Installing PostgreSQL from sources • 17 Installing PostgreSQL via pgenv • 18 Summary .......................................................................................................................... 19 References ......................................................................................................................... 20 viii Table of Contents Chapter 2: Getting to Know Your Cluster 21 Technical requirements .................................................................................................... 22 Managing your cluster ...................................................................................................... 22 pg_ctl • 22 PostgreSQL processes • 28 Connecting to the cluster ................................................................................................... 31 The template databases • 31 The psql command-line client • 33 Entering SQL statements via psql • 35 A glance at the psql commands • 38 Introducing the connection string • 39 Solving common connection problems ............................................................................. 40 Database “foo” does not exist • 40 Connection refused • 40 No pg_hba.conf entry • 41 Exploring the disk layout of PGDATA ................................................................................ 42 Objects in the PGDATA directory • 43 Tablespaces • 45 Exploring configuration files and parameters ................................................................... 46 Summary .......................................................................................................................... 48 Verify your knowledge ...................................................................................................... 49 References ......................................................................................................................... 49 Chapter 3: Managing Users and Connections 51 Technical requirements .................................................................................................... 52 Introduction to users and groups ...................................................................................... 52 Managing roles ................................................................................................................. 53 Creating new roles • 53 Role passwords, connections, and availability • 54 Using a role as a group • 55 Table of Contents ix Removing an existing role • 57 Inspecting existing roles • 58 Managing incoming connections at the role level ............................................................. 61 The syntax of pg_hba.conf • 62 Order of rules in pg_hba.conf • 64 Merging multiple rules into a single one • 64 Using groups instead of single roles • 65 Using files instead of single roles • 66 Inspecting pg_hba.conf rules • 67 Including other files in pg_hba.conf • 68 Summary .......................................................................................................................... 68 Verify your knowledge ...................................................................................................... 69 References ......................................................................................................................... 69 Chapter 4: Basic Statements 71 Technical requirements .................................................................................................... 72 Using the Docker image • 72 Connecting the database • 72 Creating and managing databases .................................................................................... 73 Creating a database • 73 Managing databases • 74 Introducing schemas • 74 PostgreSQL and the public schema • 74 The search_path variable • 75 The correct way to start working • 75 Listing all tables • 76 Making a new database from a modified template • 77 Dropping tables and databases • 78 Dropping tables • 78 Dropping databases • 79 Making a database copy • 79 x Table of Contents Confirming the database size • 80 The psql method • 80 The SQL method • 81 Behind the scenes of database creation • 81 Managing tables ............................................................................................................... 84 The EXISTS option • 85 Managing temporary tables • 86 Managing unlogged tables • 88 Creating a table • 89 Understanding basic table manipulation statements ....................................................... 90 Inserting and selecting data • 90 NULL values • 94 Sorting with NULL values • 96 Creating a table starting from another table • 97 Updating data • 98 Deleting data • 99 Summary ......................................................................................................................... 101 Verify your knowledge ..................................................................................................... 101 References ....................................................................................................................... 102 Chapter 5: Advanced Statements 105 Technical requirements .................................................................................................. 105 Exploring the SELECT statement .................................................................................... 105 Using the like clause ....................................................................................................... 106 Using ilike ....................................................................................................................... 108 Using distinct .................................................................................................................. 108 Using limit and offset ........................................................................................................ 111 Using subqueries .............................................................................................................. 112 Subqueries and the IN/NOT IN condition • 113 Subqueries and the EXISTS/NOT EXISTS condition • 116 Table of Contents xi Learning about joins ........................................................................................................ 117 Using INNER JOIN • 119 INNER JOIN versus EXISTS/IN • 120 Using LEFT JOINS • 121 Using RIGHT JOIN • 125 Using FULL OUTER JOIN • 127 Using LATERAL JOIN • 129 Aggregate functions ........................................................................................................ 130 UNION/UNION ALL • 133 EXCEPT/INTERSECT • 135 Using UPSERT .................................................................................................................. 137 UPSERT – the PostgreSQL way • 137 Learning the RETURNING clause for INSERT .................................................................. 140 Returning tuples out of queries • 141 UPDATE related to multiple records • 141 MERGE • 142 Exploring UPDATE ... RETURNING • 144 Exploring DELETE ... RETURNING • 145 Exploring CTEs ................................................................................................................ 145 CTE concept • 145 CTE in PostgreSQL since version 12 ................................................................................. 146 CTE – use cases • 147 Query recursion • 149 Recursive CTEs • 150 Summary ......................................................................................................................... 151 Verify your knowledge ..................................................................................................... 152 References ........................................................................................................................ 153 Chapter 6: Window Functions 155 Technical requirements ................................................................................................... 155 Using basic statement window functions ........................................................................ 156 xii Table of Contents Using the PARTITION BY function and WINDOW clause • 157 Introducing some useful functions • 158 The ROW_NUMBER function • 159 The ORDER BY clause • 159 FIRST_VALUE • 160 LAST_VALUE • 161 RANK • 161 DENSE_RANK • 162 The LAG and LEAD functions • 163 The CUME_DIST function • 165 The NTILE function • 165 Using advanced statement window functions ................................................................. 167 The frame clause • 167 ROWS BETWEEN start_point and end_point • 168 RANGE BETWEEN start_point and end_point • 174 Summary ........................................................................................................................ 178 Verify your knowledge ..................................................................................................... 179 References ....................................................................................................................... 180 Chapter 7: Server-Side Programming 181 Technical requirements .................................................................................................. 182 Exploring data types ....................................................................................................... 182 The concept of extensibility • 182 Standard data types • 182 Boolean data type • 183 Numeric data type • 184 Integer types • 185 Numbers with a fixed precision data type • 186 Numbers with an arbitrary precision data type • 186 Character data type • 188 Chars with fixed-length data types • 188 Table of Contents xiii Chars with variable length with a limit data types • 190 Chars with a variable length without a limit data types • 191 Date/timestamp data types • 192 Date data types • 192 Timestamp data types • 195 The NoSQL data type ........................................................................................................ 197 The hstore data type • 198 The JSON data type • 201 Exploring functions and languages ................................................................................. 205 Functions • 205 SQL functions • 206 Basic functions • 206 SQL functions returning a set of elements • 207 SQL functions returning a table • 208 Polymorphic SQL functions • 210 PL/pgSQL functions • 211 First overview • 211 Dropping functions • 213 Declaring function parameters • 213 IN/OUT parameters • 214 Function volatility categories • 216 Control structure • 219 Conditional statements • 220 IF statements • 220 CASE statements • 222 Loop statements • 225 The record type • 226 Exception handling statements • 228 Security definer • 229 Summary ......................................................................................................................... 231 Verify your knowledge ..................................................................................................... 231 xiv Table of Contents References ....................................................................................................................... 232 Chapter 8: Triggers and Rules 233 Technical requirements .................................................................................................. 234 Exploring rules in PostgreSQL ......................................................................................... 234 Understanding the OLD and NEW variables • 234 Rules on INSERT • 235 The ALSO option • 236 The INSTEAD OF option • 237 Rules on DELETE/UPDATE • 239 Creating the new_tags table • 240 Creating two tables • 241 Managing rules on INSERT, DELETE, and UPDATE events • 242 INSERT rules • 243 DELETE rules • 245 UPDATE rules • 247 Managing triggers in PostgreSQL .................................................................................... 249 Trigger syntax • 250 Triggers on INSERT • 252 The TG_OP variable • 257 Triggers on UPDATE / DELETE • 257 Event triggers .................................................................................................................. 264 An example of an event trigger • 265 Summary ........................................................................................................................ 267 Verify your knowledge .................................................................................................... 268 References ....................................................................................................................... 269 Chapter 9: Partitioning 271 Technical requirements ................................................................................................... 271 Basic concepts .................................................................................................................. 271 Range partitioning • 273 Table of Contents xv List partitioning • 274 Hash partitioning • 275 Table inheritance • 276 Dropping tables • 280 Exploring declarative partitioning .................................................................................. 280 List partitioning • 281 Range partitioning • 284 Partition maintenance • 288 Attaching a new partition • 288 Detaching an existing partition • 289 Attaching an existing table to the parent table • 290 The default partition ........................................................................................................ 291 Partitioning and tablespaces ........................................................................................... 292 A simple case study ......................................................................................................... 295 Summary ........................................................................................................................ 303 Verify your knowledge .................................................................................................... 303 References ....................................................................................................................... 305 Chapter 10: Users, Roles, and Database Security 307 Technical requirements .................................................................................................. 308 Understanding roles ....................................................................................................... 308 Properties related to new objects • 308 Properties related to superusers • 309 Properties related to replication • 309 Properties related to RLS • 309 Changing properties of existing roles: the ALTER ROLE statement • 310 Renaming an existing role • 310 SESSION_USER versus CURRENT_USER • 311 Per-role configuration parameters • 312 Inspecting roles • 313 Roles that inherit from other roles • 316 xvi Table of Contents Understanding how privileges are resolved • 319 Role inheritance overview • 323 ACLs ................................................................................................................................ 323 Default ACLs • 327 Knowing the default ACLs • 330 Granting and revoking permissions ................................................................................. 331 Permissions related to tables • 332 Column-based permissions • 333 Permissions related to sequences • 337 Permissions related to schemas • 339 ALL objects in the schema • 341 Permissions related to programming languages • 342 Permissions related to routines • 342 Permissions related to databases • 343 Other GRANT and REVOKE statements • 344 Assigning the object owner • 344 Inspecting ACLs • 345 RLS .................................................................................................................................. 346 Role password encryption ............................................................................................... 352 SSL connections .............................................................................................................. 353 Configuring the cluster for SSL • 353 Connecting to the cluster via SSL • 354 Summary ........................................................................................................................ 355 Verify your knowledge .................................................................................................... 356 References ....................................................................................................................... 356 Chapter 11: Transactions, MVCC, WALs, and Checkpoints 359 Technical requirements .................................................................................................. 360 Introducing transactions ................................................................................................ 360 Comparing implicit and explicit transactions • 362 Time within transactions • 368 Table of Contents xvii More about transaction identifiers – the XID wraparound problem • 369 Virtual and real transaction identifiers • 371 Multi-version concurrency control • 373 Transaction isolation levels ............................................................................................ 379 READ UNCOMMITTED • 381 READ COMMITTED • 381 REPEATABLE READ • 381 SERIALIZABLE • 382 Explaining MVCC ............................................................................................................ 384 Savepoints ...................................................................................................................... 387 Deadlocks ....................................................................................................................... 390 How PostgreSQL handles persistency and consistency: WALs ........................................ 393 WALs • 393 WALs as a rescue method in the event of a crash • 397 Checkpoints • 398 Checkpoint configuration parameters • 399 checkpoint_timeout and max_wal_size • 400 Checkpoint throttling • 402 Manually issuing a checkpoint • 403 VACUUM ......................................................................................................................... 403 Manual VACUUM • 404 Automatic VACUUM • 410 Summary ........................................................................................................................ 412 Verify your knowledge ..................................................................................................... 413 References ....................................................................................................................... 414 Chapter 12: Extending the Database – the Extension Ecosystem 415 Technical requirements ................................................................................................... 415 Introducing extensions ................................................................................................... 416 The extension ecosystem • 417 Extension components • 418 xviii Table of Contents The control file • 419 The script file • 420 Managing extensions ....................................................................................................... 421 Creating an extension • 421 Viewing installed extensions • 422 Finding out available extension versions • 423 Altering an existing extension • 424 Removing an existing extension • 427 Exploring the PGXN client .............................................................................................. 428 Installing pgxnclient on Debian GNU/Linux and derivatives • 429 Installing pgxnclient on Fedora Linux and Red Hat-based distributions • 429 Installing pgxnclient on FreeBSD • 429 Installing pgxnclient from sources • 429 The pgxnclient command-line interface • 430 Installing extensions ....................................................................................................... 432 Installing the extension via pgxnclient • 432 Installing the extension manually • 433 Using the installed extension • 436 Removing an installed extension • 437 Removing an extension via pgxnclient • 439 Removing a manually compiled extension • 439 Creating your own extension .......................................................................................... 439 Defining an example extension • 439 Creating extension files • 440 Installing the extension • 442 Creating an extension upgrade • 443 Performing an extension upgrade • 445 Summary ........................................................................................................................ 446 Verify your knowledge .................................................................................................... 446 References ....................................................................................................................... 447 Table of Contents xix Chapter 13: Query Tuning, Indexes, and Performance Optimization 449 Technical requirements .................................................................................................. 450 Execution of a statement ................................................................................................ 450 Execution stages • 451 The optimizer • 452 Nodes that the optimizer uses • 454 Sequential nodes • 454 Parallel nodes • 457 When does the optimizer choose a parallel plan? • 458 Utility nodes • 459 Node costs • 460 Indexes ........................................................................................................................... 462 Index types • 462 Creating an index • 463 Inspecting indexes • 465 Dropping an index • 468 Invalidating an index • 469 Rebuilding an index • 470 The EXPLAIN statement .................................................................................................. 470 EXPLAIN output formats • 473 EXPLAIN ANALYZE • 474 EXPLAIN options • 476 Examples of query tuning .............................................................................................. 480 ANALYZE and how to update statistics ............................................................................ 491 Auto-explain ................................................................................................................... 494 Summary ........................................................................................................................ 498 Verify your knowledge .................................................................................................... 499 References ...................................................................................................................... 500 xx Table of Contents Chapter 14: Logging and Auditing 503 Technical requirements .................................................................................................. 503 Introduction to logging ................................................................................................... 504 Where to log • 505 When to log • 508 What to log • 512 Extracting information from logs – pgBadger .................................................................. 514 Installing pgBadger • 514 Configuring PostgreSQL logging for pgBadger usage • 515 Using pgBadger • 516 Scheduling pgBadger • 521 Implementing auditing ................................................................................................... 524 Installing PgAudit • 525 Configuring PostgreSQL to exploit PgAudit • 526 Configuring PgAudit • 527 Auditing by session • 528 Auditing by role • 530 Summary ........................................................................................................................ 532 Verify your knowledge .................................................................................................... 532 References ....................................................................................................................... 533 Chapter 15: Backup and Restore 535 Technical requirements .................................................................................................. 536 Introducing types of backups and restores ...................................................................... 536 Exploring logical backups ................................................................................................ 537 Dumping a single database • 539 Restoring a single database • 543 Limiting the amount of data to backup • 547 Compression • 548 Dump formats and pg_restore • 549 Table of Contents xxi Performing a selective restore • 552 Dumping a whole cluster • 555 Parallel backups • 556 Backup automation • 558 The COPY command • 559 Exploring physical backups ............................................................................................ 563 Performing a manual physical backup • 564 pg_verifybackup • 566 Starting the cloned cluster • 567 Restoring from a physical backup • 568 Basic concepts behind PITR ............................................................................................ 569 Summary ........................................................................................................................ 570 Verify your knowledge .................................................................................................... 570 References ........................................................................................................................ 571 Chapter 16: Configuration and Monitoring 573 Technical requirements .................................................................................................. 574 Cluster configuration ...................................................................................................... 574 Inspecting all the configuration parameters • 576 Finding configuration errors • 578 Nesting configuration files • 579 Configuration contexts • 580 Main configuration settings • 581 WAL settings • 582 Memory-related settings • 584 Process information settings • 585 Networking-related settings • 585 Archive and replication settings • 586 Vacuum and autovacuum-related settings • 587 Optimizer settings • 587 Statistics collector • 587 xxii Table of Contents Modifying the configuration from a live system • 588 Configuration generators • 589 Monitoring the cluster .................................................................................................... 592 Information about running queries and sessions • 593 Inspecting locks • 594 Inspecting databases • 596 Inspecting tables and indexes • 597 More statistics • 599 Advanced statistics with pg_stat_statements ................................................................ 600 Installing the pg_stat_statements extension • 600 Using pg_stat_statements • 601 Resetting data collected from pg_stat_statements • 602 Tuning pg_stat_statements • 602 Summary ........................................................................................................................ 603 Verify your knowledge .................................................................................................... 603 References ...................................................................................................................... 604 Chapter 17: Physical Replication 607 Technical requirements ................................................................................................. 608 Exploring basic replication concepts .............................................................................. 609 Physical replication and WALs • 609 The wal_level directive • 610 Preparing the environment setup for streaming replication • 610 Managing streaming replication ..................................................................................... 612 Basic concepts of streaming replication • 612 Asynchronous replication environment • 614 The wal_keep_segments option • 615 The slot way • 616 The pg_basebackup command • 616 Asynchronous replication • 617 Replica monitoring • 619 Table of Contents xxiii Synchronous replication • 620 PostgreSQL settings • 621 Cascading replication • 623 Delayed replication • 626 Promoting a replica server to a primary • 626 Summary ........................................................................................................................ 627 Verify your knowledge .................................................................................................... 628 References ....................................................................................................................... 628 Chapter 18: Logical Replication 631 Technical requirements ................................................................................................... 631 Understanding the basic concepts of logical replication ................................................. 632 Comparing logical replication and physical replication .................................................. 635 Exploring a logical replication setup and new logical replication features on PostgreSQL 16 . 636 Logical replication environment settings • 636 The replica role • 637 Primary server – postgresql.conf • 637 Replica server – postgresql.conf • 638 The pg_hba.conf file • 639 Logical replication setup • 639 Monitoring logical replication • 641 Read-only versus write-allowed • 643 DDL commands • 649 Disabling logical replication • 651 Making a logical replication using a physical replication instance • 652 Summary ........................................................................................................................ 657 Verify your knowledge .................................................................................................... 658 References ....................................................................................................................... 658 xxiv Table of Contents Chapter 19: Useful Tools and Extensions 661 Technical requirements .................................................................................................. 662 Exploring the pg_trgm extension .................................................................................... 662 Using foreign data wrappers and the postgres_fdw extension ........................................ 665 Disaster recovery with pgbackrest .................................................................................. 667 Basic concepts • 668 Environment set up • 669 The exchange of public keys • 669 Installing pgbackrest • 671 Configuring pgbackrest • 672 The repository configuration • 672 Using pgbackrest with object store support • 675 The PostgreSQL server configuration • 675 The postgresql.conf file ................................................................................................... 675 The pgbackrest.conf file .................................................................................................. 676 Creating and managing continuous backups • 677 Creating the stanza • 677 Checking the stanza • 677 Managing base backups • 678 Managing PITR • 681 Migrating from MySQL/MariaDB to PostgreSQL using pgloader .................................... 684 Summary ....................................................................................................................... 688 Verify your knowledge ................................................................................................... 688 References ....................................................................................................................... 689 Other Books You May Enjoy 691 Index 697
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum