Labels

admin (1) aix (1) alert (1) always-on (2) Architecture (1) aws (3) Azure (1) backup (3) BI-DWH (10) Binary (3) Boolean (1) C# (1) cache (1) casting (3) cdc (1) certificate (1) checks (1) cloud (3) cluster (1) cmd (7) collation (1) columns (1) compilation (1) configurations (7) Connection-String (2) connections (6) constraint (6) copypaste (2) cpu (2) csv (3) CTE (1) data-types (1) datetime (23) db (547) DB2 (1) deadlock (2) Denali (7) device (6) dotNet (5) dynamicSQL (11) email (5) encoding (1) encryption (4) errors (124) excel (1) ExecutionPlan (10) extended events (1) files (7) FIPS (1) foreign key (1) fragmentation (1) functions (1) GCP (2) gMSA (2) google (2) HADR (1) hashing (3) in-memory (1) index (3) indexedViews (2) insert (3) install (10) IO (1) isql (6) javascript (1) jobs (11) join (2) LDAP (2) LinkedServers (8) Linux (15) log (6) login (1) maintenance (3) mariadb (1) memory (4) merge (3) monitoring (4) MSA (2) mssql (444) mssql2005 (5) mssql2008R2 (20) mssql2012 (2) mysql (36) MySQL Shell (5) network (1) NoSQL (1) null (2) numeric (9) object-oriented (1) offline (1) openssl (1) Operating System (4) oracle (7) ORDBMS (1) ordering (2) Outer Apply (1) Outlook (1) page (1) parameters (2) partition (1) password (1) Performance (103) permissions (10) pivot (3) PLE (1) port (4) PostgreSQL (14) profiler (1) RDS (3) read (1) Replication (12) restore (4) root (1) RPO (1) RTO (1) SAP ASE (48) SAP RS (20) SCC (4) scema (1) script (8) security (10) segment (1) server (1) service broker (2) services (4) settings (75) SQL (74) SSAS (1) SSIS (19) SSL (8) SSMS (4) SSRS (6) storage (1) String (35) sybase (57) telnet (2) tempdb (1) Theory (2) tips (120) tools (3) training (1) transaction (6) trigger (2) Tuple (2) TVP (1) unix (8) users (3) vb.net (4) versioning (1) windows (14) xml (10) XSD (1) zip (1)

PostgreSQL Data Types

“Standard” types
  • numeric, floating-point
  • string
  • Boolean
  • date/time
  • UUID
    • Universally Unique Identifies.
    • 16 bytes of storage.
    • Example: d5f28c97-b962-43be-9cf8-ca1632182e8e
  • XML
    • XML type is just a text data type.
    • The advantage is that it checks that the XML is well-formed.
  • json, jsonB
  • Text Search Type:
    • Two data types which are designed to support full-text search.
  • Money

Special Data types
  • Network Address
    • Network information like IP address.
    • Using Network Address Types has following advantages
      • Storage Space Saving
      • Input error checking
      • Functions like searching data by subnet
  • Geometric
    • Represent two-dimensional spatial objects.
    • They help perform operations like rotations, scaling, translation, etc.
  • Enumerated
    • A set of values. 
    • While inserting, it checks that the value is from the declared set.
    • The ordering of the values in an enum type is the order in which the values were listed when the type was created.
    • Example:
      • ('sad', 'ok', 'happy’);
      • In this example: ‘ok’ > ‘sad’ and < ‘happy’.
  • Range
    • Data in ranges.
    • Can be a range of numeric and dates.
  • Pseudo-Types
    • special-purpose entries.
    • Any, An array, Any element, Any enum, Nonarray, Cstring, Internal, Language_handler, Record, Trigger.

Custom data types - Composite Types
PostgreSQL user has the ability to create his own data types based on existing ones (composite types, ranges, arrays, enumerations).

CREATE TYPE inventory_item AS (name text, id integer)

SELECT item.name FROM on_hand WHERE item.price > 9.99;

INSERT INTO mytab (complex_col) VALUES((1.1,2.2));

UPDATE mytab SET complex_col = ROW(1.1,2.2) WHERE ...;



More about PostgreSQL data types: https://www.guru99.com/postgresql-data-types.html

PostgreSQL Databases

System databases

Template Databases
Database creation actually works by copying an existing DB.
The template DBs are used for user database creation.
  • Two ‘default’ Template Databases: Template0, Template1.
  • Template1 is the default template.
  • The 2 templates contains the same data.
  • Template0 is more empty/"virgin" DB.
  • New encoding and locale settings can be specified when copying template0, whereas a copy of template1 must use the same settings it does.
  • More templates can be created.

Tablespace
Tablespaces define locations in the file system where the files representing database objects can be stored.
Tablespace creation must be done as a database superuser.
PostgreSQL comes with two default tablespaces:
  • pg_default: stores all user data (the default tablespace).
  • pg_global: stores all global data.
One tablespace can be used by multiple databases.
The physical location of tablespaces: <PostgreSQLFolder>\12\data .
Tables, indexes, and entire databases can be assigned to particular tablespaces: 
    CREATE TABLE foo(i int) TABLESPACE space1;


Database Creation
Database is created by cloning one of the templates.
Database is created in one of the tablespaces.

CREATE DATABASE name
 [ [ WITH ] [ OWNER [=] user_name ]
 [ TEMPLATE [=] template ]
 [ ENCODING [=] encoding ]
 [ LC_COLLATE [=] lc_collate ]
 [ LC_CTYPE [=] lc_ctype ]
 [ TABLESPACE [=] tablespace ]
 [ CONNECTION LIMIT [=] connlimit ] ]

PostgreSQL Configurations

Configurations save in postgresql.conf , Located in <postgresqlFolder>\12\data.

Configurations can be set:
Edit postgresql.conf file itself.
  • Via postgres command in the command-line.
  • Some parameters can be changed in individual SQL sessions with the SET command.
  • Some parameters can be changed with “ALTER SYSTEM” command.
    • ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }
    • ALTER SYSTEM RESET configuration_parameter
    • ALTER SYSTEM RESET ALL
Configurations can be viewed:
  • select * from pg_settings
  • At pgAdmin.


PostgreSQL as Object-Relational Database Management System (ORDBMS)

ORDBMS = a relational database that supports some object oriented features.

Table inheritance

Create a table from a (table-)type.
create type person_type as (id integer, firstname text, lastname text);
create table person of person_type;

Create a table inherits from other table.
create table person (id integer, firstname text, lastname text);
create table person_with_dob ( dob date ) inherits (person);


CREATE TABLE City (
  CityID INT4,
  Cityname  varchar(50),
  Country text
);
CREATE TABLE Capital (
  CountryCode char(3)
) INHERITS (City);

SELECT * FROM City;
SELECT * FROM Capital;

INSERT INTO City (CityID, Cityname, Country) 
VALUES (1, 'Tel Aviv', 'Israel');
INSERT INTO Capital (CityID, Cityname, Country, CountryCode) 
VALUES (2, 'Jerusalem', 'Israel', 'ISR’);

SELECT * FROM City;

SELECT * FROM Capital;

SELECT * FROM ONLY City;




Definition of methods on the type

create table person (id integer, firstname text, lastname text);

create function fullname(p_row person) returns text
As
$$
    select concat_ws(' ', p_row.firstname, p_row.lastname);
$$
language sql;

select p.fullname from person p;


Function overloading

PostgreSQL allows more than one function to have the same name, so long as the arguments are different.


Complex types
Custom data types - Composite Types

PostgreSQL user has the ability to create his own data types based on existing ones (composite types, ranges, arrays, enumerations).

CREATE TYPE inventory_item AS (name text, id integer)

SELECT item.name FROM on_hand WHERE item.price > 9.99;

INSERT INTO mytab (complex_col) VALUES((1.1,2.2));

UPDATE mytab SET complex_col = ROW(1.1,2.2) WHERE ...;


PostgreSQL Overview

PostgreSQL is an open source object-relational database system.
PostgreSQL is probably the most advanced database in the open source relational database market.
PostgreSQL uses and extends the SQL language combined with other features.

PostgreSQL superuser is the user named Postgres.

Supported platforms
PostgreSQL is available for all operating systems: Windows, Linux, Unix and macOS.

Supported Cloud vendors
Installation processes
During the installation you will set:
  • Database superuser (postgres) password.
  • Port (default: 5432).

Client Tools
psql
psql is a command-line program.
psql can be used to enter SQL queries directly, or execute them from a file.

pgAdmin
pgAdmin is the PostgreSQL tool.
It's an Open Source administration and development platform for PostgreSQL.
pgAdmin is installed with PostgreSQL .

A little bit of history
PostgreSQL evolved from the Ingres project at the University of California, Berkeley. At 1986 Michael Stonebraker and his colleagues developed Postgres.
Versions were released from time to time with more features, and in 1995 Initial release as Postgres95 was released.
In 1996 the project was renamed to PostgreSQL in order to reflect its support for SQL.
In 1997 the initial PostgreSQL release formed version 6.0.

Useful links


SQL Server on GCP - You do not have permission to run the RECONFIGURE statement

Error message:

Msg 15247, Level 16, State 1, Procedure sp_configure, Line 105 [Batch Start Line 0]
User does not have permission to perform this action.
Msg 5812, Level 14, State 1, Line 2
You do not have permission to run the RECONFIGURE statement.

The case:
Trying to set configurations (sp_configure and RECONFIGURE)

Solution:
There are no permissions to run sp_configure and RECONFIGURE.
Configuring database flags is done in the GCP portal.



Can not connect SQL Server instance on GCP from SSMS

Problem:
Can not connect SQL Server instance on GCP from SSMS (SQL Server Management Studio).

Solution:
Create Authorized networks:
Go to Connections page, under Connectivity → Public IP: