[Bug] legalize_vector_name does not escape SQL keywords case-insensitively
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 83/100
Direzione di ricerca
Leggi python/grass/script/utils.py in corrispondenza di legalize_vector_name() e confronta il controllo delle parole chiave con lib/vector/Vlib/legal_vname.c. Aggiungi o aggiorna test mirati per le parole chiave SQL in minuscolo e con maiuscole e minuscole miste, quindi esegui i test Python pertinenti. Il lavoro è completato quando tutte le varianti di maiuscole e minuscole vengono legalizzate in modo coerente con la funzione C.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
grass.script.utils.legalize_vector_name() only escapes the SQL keywords and, or and not when they are lowercase. Any other casing is returned unchanged, so the function returns names that GRASS itself rejects as illegal.
The Python function says it is based on Vect_legal_filename(), but the C function compares the keywords case-insensitively (lib/vector/Vlib/legal_vname.c):
static const char *keywords[] = {"and", "or", "not", NULL};
...
if (G_strcasecmp(buf, keywords[i]) == 0) {
while the Python version uses an exact match (python/grass/script/utils.py):
keywords = ["and", "or", "not"]
if name in keywords:
name = "{name}_".format(**locals())
To reproduce
from grass.script.utils import legalize_vector_name
for name in ["and", "AND", "Or", "nOt"]:
print(repr(name), "->", repr(legalize_vector_name(name)))
Output on current main:
'and' -> 'and_'
'AND' -> 'AND'
'Or' -> 'Or'
'nOt' -> 'nOt'
AND, Or and nOt are then rejected by Vect_legal_filename() with "SQL keyword cannot be used as vector map name".
Expected behavior
All casings of the keywords are made legal, e.g. 'AND' -> 'AND_', matching the case-insensitive check in Vect_legal_filename(). A fix would be to compare name.lower() against the keyword list.
System description
- Operating System: Windows 11
- GRASS version:
main(b0a6d7703c); the function is pure Python, reproduced by loadingpython/grass/script/utils.pydirectly with Python 3.12
Additional context
Related but different: #3615 (SQL keywords as attribute column names).
- Lingua principale
- C
- Stelle
- 1.2k
- Fork
- 447
- Merge medio
- 2g 59m
- PR unite (30g)
- 63
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di OSGeo/grass
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
OSGeo/grass#8171 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] v.db.addtable expands $MAP only when it is a directoryForse già presa @alteralto l’ha presa 17 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug] grass.pygrass: Cats.delete(0) deletes all layer categories instead of category 0Forse già presa @Mohit-Ak l’ha presa 22 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug] macOS: Startup crashes with StopIteration when ~/Documents is not readable (macOS privacy protection)Forse già presa @NIne-WIngEd l’ha presa 28 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
OSGeo/grass#8027 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug] Specify the test project nameForse già presa @Om23131212 l’ha presa 21 giorni fa. Apertabug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
OSGeo/grass#7860 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
FujiNetWIFI/fujinet-config#379 ·
I maintainer di solito rispondono entro 1 giorno
-
Ship /Local/Applications, the Local domain's Applications folderForse già presa @pkgdemon l’ha presa oggi. Apertaarea:base enhancement
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 94/100
nextbsd/nextbsd-userland#612 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
zephyrproject-rtos/zephyr#125543 ·
I maintainer di solito rispondono entro 2 giorni
-
good first issue needs-triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
InauguralSystems/EigenScript#2347 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
colbymchenry/codegraph#3277 ·
I maintainer di solito rispondono entro 1 giorno