An open API service indexing awesome lists of open source software.

https://github.com/ishaanadarsh/pg_sample_ext

pg_sample_ext is a PostgreSQL extension that provides a sample function to demonstrate extending PostgreSQL's functionality.
https://github.com/ishaanadarsh/pg_sample_ext

extension gsoc postgresql postgresql-extension sql

Last synced: 6 months ago
JSON representation

pg_sample_ext is a PostgreSQL extension that provides a sample function to demonstrate extending PostgreSQL's functionality.

Awesome Lists containing this project

README

          

# pg_sample_ext

pg_sample_ext is a PostgreSQL extension that provides a sample function to demonstrate extending PostgreSQL's functionality.

## Installation

1. Make sure you have PostgreSQL installed and running.

2. Clone or download the repository [pg_sample_ext](https://github.com/IshaanAdarsh/pg_sample_ext/tree/main) to your local machine.

3. Change to the extension directory:

```
$ cd pg_sample_ext
```

4. Build and install the extension:

$ make
$ make install

5. Enable the extension: 

`CREATE EXTENSION pg_sample_ext;`

## Usage

Once the `pg_sample_ext` extension is installed and upgraded to version 1.0.1, you can use the included functions and new features in your SQL queries.

### square

The `square` function calculates the square of a number.

```
SELECT square(5); -- Returns 25
```

### Composite Type (person_type):
- The extension now includes a composite type named `person_type` that represents a person's name and age. This allows for more structured data storage and retrieval.
- Insert a row with a value from the composite type

```
INSERT INTO my_table (person) VALUES (('John Doe', 30));
```

### Enumerated Type (status_type):
- A new enumerated type called `status_type` is introduced, which provides a predefined set of values for representing different statuses. This enhances data integrity and enables more meaningful data classification.
- Insert a row with a value from the enumerated type

```
INSERT INTO status_table (status) VALUES ('active');
```

### Domain Type (positive_integer):
- The extension now includes a domain type called `positive_integer`, which is a specialized data type that represents positive integers. This allows for better constraint enforcement and data validation.
- Insert a row, ensuring the quantity is a positive integer

```
INSERT INTO quant_table (quantity) VALUES (10);
```

### Custom Operator (@*):
- The extension introduces a custom operator `@*` that performs a custom operation, such as multiplication, on values of a specific type.
-- It multiplies two values of type my_type and returns a value of the same type.

```
SELECT ROW(2)::my_type @* ROW(3)::my_type AS result;
```

### Contributing

Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request on the GitHub repository [pg_sample_ext](https://github.com/IshaanAdarsh/pg_sample_ext/tree/main).

## License

This project is licensed under the [PostgreSQL License](LICENSE).