Comments (2)
TL;DR - SafeQL (currently) doesn't support nullability checks for SQL views.
SafeQL's approach is "everything is nullable until proven otherwise" (for safety reasons). It infers whether a target result (e.g., selected column) is nullable or not, by first analyzing what it is. If it's a computation, it's not null for sure. If it's a table column, it's not null as long as that table column is NOT NULL
as well, and so on.
Unlike querying columns from tables, PostgresSQL doesn't know that the column cve_code
that was called from view issues_base
is from table issue
. SafeQL already traverses through the queries for more precise checks, but currently, it doesn't traverse over the views to determine nullability checks.
As a workaround for now, SafeQL is smart enough to know that a column is not nullable if you do one of the following options:
- add
WHERE issue_id IS NOT NULL
- add a
COALESCE
with a fallback value.
from safeql.
Thank you!
from safeql.
Related Issues (20)
- Drizzle ORM support
- ESLint ERROR in SQL query with subquery:- Internal error: Cannot read properties of undefined (reading 'relname') HOT 4
- Support `json_build_object` HOT 6
- relName is undefined
- Support pg-promise HOT 1
- Use `bigint` type for Postgres `BIGINT` HOT 1
- Incremental adoption TypeORM with Nest.js HOT 2
- JSON type inference HOT 21
- Wrong type inference HOT 3
- Wrong type predictions HOT 2
- SafeQL (libpg-query) is not compatible with GLIBC > 2.34 HOT 31
- working with prisma & enums breaks formatting and/or types HOT 3
- Boolean created by comparing two not null timestamps is incorrectly nullable. HOT 2
- ESLint Hanging HOT 8
- Wrong type generation / inference when joining a table with itself HOT 5
- Boolean inferred by SafeQL as `unknown | unknown` HOT 2
- Support for `FILTER` Clauses
- JSONB columns inferred as `any` HOT 13
- The package not install on Node 18.18.0 and 20.12.0 (LTS) HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from safeql.