
Security News
PodRocket Podcast: Inside the Recent npm Supply Chain Attacks
Socket CEO Feross Aboukhadijeh discusses the recent npm supply chain attacks on PodRocket, covering novel attack vectors and how developers can protect themselves.
github.com/allam76/sqlite3createtableparser
:scroll: Advanced PRAGMA table_info through DDL parsing
A parser for sqlite create table sql statements.
SQLite is a very powerful software but it lacks an easy way to extract complete information about table and columns constraints. The built-in sql pragma:
PRAGMA schema.table_info(table-name);
PRAGMA foreign_key_list(table-name);
provide incomplete information and a manual parsing is required in order to extract more useful information.
CREATE TABLE syntax diagrams can be found on the official sqlite website.
package main
import "github.com/lempiy/Sqlite3CreateTableParser/parser"
//some fancy DDL
const ddl = `
CREATE TABLE contact_groups (
contact_id integer,
group_id integer,
PRIMARY KEY (contact_id, group_id),
FOREIGN KEY (contact_id) REFERENCES contacts (contact_id)
ON DELETE CASCADE ON UPDATE NO ACTION,
FOREIGN KEY (group_id) REFERENCES groups (group_id)
ON DELETE CASCADE ON UPDATE NO ACTION
);
`
func main() {
table, errCode := parser.ParseTable(sql, 0)
if errCode != parser.ERROR_NONE {
panic("Error during parsing sql")
}
// do stuff with received data
fmt.Printf("%+v\n", table)
}
type Table struct {
Name string
Schema string
IsTemporary bool
IsIfNotExists bool
IsWithoutRowid bool
NumColumns int
Columns []Column
NumConstraint int
Constraints []TableConstraint
}
type Column struct {
Name string
Type string
Length string
ConstraintName string
IsPrimaryKey bool
IsAutoincrement bool
IsNotnull bool
IsUnique bool
PkOrder OrderClause
PkConflictClause ConflictClause
NotNullConflictClause ConflictClause
UniqueConflictClause ConflictClause
CheckExpr string
DefaultExpr string
CollateName string
ForeignKeyClause *ForeignKey
}
type TableConstraint struct {
Type ConstraintType
Name string
NumIndexed int
IndexedColumns []IdxColumn
ConflictClause ConflictClause
CheckExpr string
ForeignKeyNum int
ForeignKeyName []string
ForeignKeyClause *ForeignKey
}
type ForeignKey struct {
Table string
NumColumns int
ColumnName []string
OnDelete FkAction
OnUpdate FkAction
Match string
Deferrable FkDefType
}
type IdxColumn struct {
Name string
CollateName string
Order OrderClause
}
FAQs
Unknown package
Did you know?
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.
Security News
Socket CEO Feross Aboukhadijeh discusses the recent npm supply chain attacks on PodRocket, covering novel attack vectors and how developers can protect themselves.
Security News
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.
Product
Socket Firewall is a free tool that blocks malicious packages at install time, giving developers proactive protection against rising supply chain attacks.