sqlc-dev / sqlc

Generate type-safe code from SQL
https://sqlc.dev
MIT License
13.38k stars 803 forks source link

INSERT OR IGNORE INTO doesn't work, sqlite3 #1277

Closed mattiasgrenfeldt closed 1 year ago

mattiasgrenfeldt commented 3 years ago

Version

1.10.0

What happened?

I wanted to make a INSERT OR IGNORE INTO query against a sqlite3 db (https://sqlite.org/lang_insert.html). When running sqlc it thinks that it is a syntax error.

Relevant log output

# package db
sql/queries.sql:1:1: syntax error at or near "OR"

Database schema

CREATE TABLE IF NOT EXISTS items (
    id INTEGER PRIMARY KEY,
    name varchar(256) UNIQUE NOT NULL,
    unit varchar(256) NOT NULL
);

SQL queries

-- name: CreateItem :exec
INSERT OR IGNORE INTO items (name, unit) VALUES ($1, $2);

Configuration

version: "1"
packages:
  - path: "projectname/db"
    name: "db"
    schema: "sql/schema.sql"
    queries: "sql/queries.sql"

Playground URL

https://play.sqlc.dev/p/89430560ded19826e9822bb05d9107919f92760e28980b5bf461237a34dbc0ca

What operating system are you using?

Linux

What database engines are you using?

No response

What type of code are you generating?

Go

StevenACoffman commented 3 years ago

current experimental sqlite3 support is ... not great. we need a better parser library. Please see #161

hakobera commented 2 years ago

@mattiasgrenfeldt This issue should be resolved by #1687

abhijit-hota commented 2 years ago

@kyleconroy Shouldn't we close this issue?