Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/jimsmart/schema

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/jimsmart/schema

  • v0.2.1
  • Source
  • Go
  • Socket score

Version published
Created
Source

schema

BSD3 Build Status codecov Go Report Card Used By Godoc

schema is a Go package providing access to database schema metadata, for database/sql drivers.

TODO more docs

Currently supporting the following database engines / SQL dialects:

  • Microsoft SQL Server
  • MySQL
  • Oracle
  • Postgres
  • Snowflake
  • SQLite
  • Vitess

For a list of supported drivers, and their capabilities with regards to sql.ColumnType support, see drivercaps

Installation

go get github.com/jimsmart/schema
import "github.com/jimsmart/schema"

Dependencies

Example

See GoDocs for usage examples.

Documentation

GoDocs https://godoc.org/github.com/jimsmart/schema

Testing

Database services for testing against are hosted in Docker.

To bring up the database services: execute docker-compose up inside the project folder, and wait until all of the Docker services have completed their startup (i.e. there is no further output in the terminal), then open a second terminal. (In future one may choose to use docker-compose up -d instead)

To run the tests execute go test inside the project folder.

For a full coverage report, try:

go test -coverprofile=coverage.out && go tool cover -html=coverage.out

To shutdown the Docker services, execute docker-compose down -v inside the project folder.

Oracle Setup Checklist

Build Docker Image

Build a Docker image for Oracle, by executing script:

./build_oracle_docker_image.sh

Once the script has successfully completed, you are free to delete the folder used when creating the image:

rm -rf ./test/docker-oracle
Increase Docker's RAM limits

By default, Docker allocates 2gb RAM to each container. To prevent out-of-memory errors when running Oracle, increase Docker's RAM limits:

Docker -> Preferences -> Resources -> Advanced -> Memory, change to 4gb, click Apply & Restart.

Install Oracle Instant Client

Oracle database/sql drivers require dynamic libraries that are part of the Oracle Instant Client installation.

Mac
brew tap InstantClientTap/instantclient
brew install instantclient-basic

License

Package schema is copyright 2018-2021 by Jim Smart and released under the BSD 3-Clause License.

History

  • v0.2.1: Added dialect alias for Vitess driver github.com/vitessio/vitess.
  • v0.2.0: Replaced Table and View methods with ColumnTypes method.
  • v0.1.0: Added schema name to methods and results.
  • v0.0.8: Disabled Oracle tests on Travis.
  • v0.0.7: Added PrimaryKey method. TableNames and ViewNames are now sorted. Improved Oracle testing. Refactored dialect handling.
  • v0.0.6: Fix Oracle quoting strategy. Added support for driver github.com/godror/godror.
  • v0.0.5: Added dialect alias for Snowflake driver github.com/snowflakedb/gosnowflake.
  • v0.0.4: Improved error handling for unknown DB driver types. Test environment now uses Docker.
  • v0.0.3: Minor code cleanups.
  • v0.0.2: Added identifier escaping for methods that query sql.ColumnType.
  • v0.0.1: Started using Go modules.
  • 2019-11-04: Fix for renamed driver struct in github.com/mattn/go-oci8 (Oracle)
  • 2019-11-04: Fix for renamed driver struct in github.com/denisenkom/go-mssqldb (MSSQL)

FAQs

Package last updated on 05 Jan 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc