[HN Gopher] A word used only by Postgres developers ___________________________________________________________________ A word used only by Postgres developers I came across a word in the Postgres source code that I'd never seen before: "frammish". https://github.com/postgres/postgres/blob/master/src/backend... : > Therefore, they offer both exclusive and shared lock modes (to support read/write and read-only access to a shared object). There are few other frammishes. User-level locking should be done with the full lock manager --- which depends on LWLocks to protect its shared state. It sort of makes sense in context, as a "feature" or a "flourish". It also appears on the pg_hackers mailing list: > There has been some talk of separating the power to create new users from the power of being superuser (although presumably only a superuser should be allowed to create new superusers). If the planned pg_role rewrite gets submitted before the 8.1 feature freeze, I might look at adding that frammish into it. and here, from 19 years ago: > And we get ragged on regularly for the non- SQL-standard features we've inherited from Berkeley Postgres (eg, the implicit-FROM frammish that was under discussion yesterday). No amount of googling turns up a formal definition or usage outside of the Postgres community. "frammish.org" doesn't seem to be related. Are Postgres developers starting to evolve their own dialect? Should we call an anthropologist? Author : ccleve Score : 187 points Date : 2022-03-10 17:17 UTC (5 hours ago) | throwaway894345 wrote: | Wait until you hear what "cluster" means in Postgres-speak. | legulere wrote: | The same as in Microsoft SQL Server? | | https://docs.microsoft.com/en-us/sql/relational-databases/in... | throwaway894345 wrote: | No doubt lots of relational database software share this | quirk. | jelder wrote: | Please go on. | throwaway894345 wrote: | > PostgreSQL uses the term cluster to refer to a "cluster" of | databases, as opposed to the usual notion of a group of | servers or VMs working in a co-ordinated fashion. | | https://www.opsdash.com/blog/postgresql-cluster.html | | Note that the "databases" above are logical databases, not | _database hosts_. | snthpy wrote: | Thank you for this. I didn't realise this and for the past | few years have been thinking that I seem to be the only one | that runs only a single database host as everyone else | seems to have "clusters". I never realised this just means | multiple databases. | pcthrowaway wrote: | So according to this usage, one database instance with a | few databases would be a cluster? | throwaway894345 wrote: | I'm not an expert, but as far as I can tell, even a | single database instance with a single database (or maybe | no databases at all?) could constitute a "cluster". | pdpi wrote: | A Postgres cluster is, roughly speaking, a server instance. | That is, if you run two copies of postgres on the same box | (One on the default 5432 port, another on, say, 6543) and | have each of those copies manage its own independent config, | data, etc, then those instances are what Postgres calls a | cluster. | munk-a wrote: | Clustering is, besides all the other definitions you're | seeing here, a table property. A clustered table is a table | that has, on disk, been aligned with a certain index[1] - | each table can only be clustered to a single index and it | essentially means that row retrieval for that specific index | is much more efficient, it basically gets you one covering | index for free. | | 1. https://www.postgresql.org/docs/current/sql-cluster.html | munk-a wrote: | Or schema! | sitharus wrote: | The PostgreSQL usage of schema is consistent with the ANSI | sql definition. MSSQL is the same. | chungy wrote: | I think most people surprised at the PostgreSQL model of | databases and schemas are coming from a MySQL/MariaDB | background where the terms are synonymous. PostgreSQL | matches the model of basically every non-MySQL database | when it comes to these concepts. | | Though if we talk about database weirdness, I never liked | Oracle DB's insistence that databases and users are the | same thing. Glad I haven't used it for well over a decade | now :) | chousuke wrote: | I was actually surprised that you can query across | databases in MySQL, but that makes sense once you | understand that there's only one database and the | "databases" are just schemas. | progre wrote: | Coming from MSSQL I was equally surprised that you _cant_ | query across databases in postgres even if they are on | the the same server. Yeah there is the Foreign Data | Wrapper thing but the DBA was very reluctant to enable it | or whatever. | pdpi wrote: | Hmm, care to expand? The word schema, in Postgres terms, | seems to mean exactly what I expect it to. | jrockway wrote: | I think people think schema means "a list of tables and | indexes" but it's an actual object in postgres ("DROP | SCHEMA public"). These do not diverge too far; that's what | the object represents of course. | throwaway894345 wrote: | Most people think schema means "shape/structure of data", | not "list of tables and indexes". In Postgres (or maybe | SQL more broadly) it roughly means "a container for | tables". | chousuke wrote: | Not just tables, but everything else as well. The shape | and structure of your data is always defined _within_ a | schema, and a single database may have more than one. | | A PostgreSQL server can contain multiple databases; they | are independent and you can't access data in one database | while connected to another (without dblink or something | similar) | | As far as I know pretty much every database (and the SQL | standard) except MySQL has schemas as an explicit | database object and calls them that. What MySQL calls | "databases" are actually schemas; they're just containers | for database objects and you can query across them (and | CREATE SCHEMA is an alias for CREATE DATABASE) | | EDIT: | | There's a fun trick you can do with multiple schemas that | illustrate why they are schemas and not just "containers | of things" | | You have a "data" schema that contains your table | definitions; your actual, real data and indices etc. go | here. Only privileged users can access this schema | directly. | | Then you have an "interface" schema, that contains views | and functions used by people; they can refer to the data | schema, and with some clever view definitions, you can do | it such that they can _only_ access the data using the | views and functions in your interface schema. | | At some point, you could create an "interface_v2" schema | that provides better (or more) methods for accessing your | data that's backwards incompatible. Old applications can | continue using the "interface" schema by setting their | schema search path to "interface" (which would be the | default), but new applications can "overlay" the schemas | by setting their search path to "interface_v2,interface" | and opt-in to new functionality. The "structure" of your | data is changed simply by opting in to the new schema. | | It's pretty rare for people to do this (they understand | versioned web APIs better than versioned database APIs), | but it's a thing you can do. | throwaway894345 wrote: | > The shape and structure of your data is always defined | within a schema | | Maybe we're already agreed on this, but for clarity my | point is that the common notion of a schema is strictly | "the shape of the data" and not "a container for the | data, the shape of the data, and a bunch of other stuff". | I agree that this latter definition is probably shared | across many relational databases and not just Postgres. | dragonwriter wrote: | > but for clarity my point is that the common notion of a | schema is strictly "the shape of the data" and not "a | container for the data, the shape of the data, and a | bunch of other stuff". | | Yeah, I see what you are saying I just disagree. Most | people who know either use, in the context of RDBMSs, | know both, and resolve the ambiguity by context. This is | fairly normal, it's very common for words to have | multiple common definitions. | throwaway894345 wrote: | In my experience, this is fairly "advanced" knowledge. | Lots of people who grind out SQL queries all day as | analysts or vanilla software engineers _don 't_ know the | SQL sense of the term. | | > Most people who know either use, in the context of | RDBMSs, know both, and resolve the ambiguity by context. | This is fairly normal, it's very common for words to have | multiple common definitions. | | The RDBMS domain alone doesn't suffice to resolve the | ambiguity because "structure of data" and "container of | tables/etc" are both relevant. I would definitely contend | that application developers and operators (though | _perhaps_ not DBAs) need to talk about "structure of | data" a lot more than I need to talk about "container of | tables/etc". | throwaway894345 wrote: | Normally, schema means "shape/structure of data". In | Postgres it's roughly a container for tables. | pdpi wrote: | Ah I see. Postgres uses the word in the sense that it's | used in the SQL spec, though, and it means pretty much | what you're describing. The key difference is that I | think you're talking about the human-readable file (which | in the SQL world is written in SQL DDL), whereas the | standard means it as closer to being the internal/runtime | representation of that "shape/structure of data". | | It's helpful to think of "the database" as the actual | physical storage, and the schema is what the db uses to | make sense of how to manipulate/query that data. From | that perspective, the SQL DDL is scripting language to | manipulate those schema objects ("objects" in the OOP | sense, "schema objects" has an actual specific meaning in | SQL). | dragonwriter wrote: | > Normally, schema means "shape/structure of data". In | Postgres it's roughly a container for logical databases. | | No, it's a namespace within a database, not a container | for databases; this is not Postgres specific, it is part | of the SQL standard and widely used in other | implementations. | throwaway894345 wrote: | Yeah, you caught me between my post and my edit. I | misspoke and said "logical databases" instead of | "tables". I'm sure that's not precisely correct either, | however. | perlgeek wrote: | The Raku language (formerly Perl 6) community also has its share | of idioms, abbreviations (not just technical) and phrases. I'm | not sure if they are exclusive to this community, or also used | elsewhere. | | Examples: | | In the early days, many features were specified by Not Yet | Implemented, so NYI became its own term. | | Error messages are meant to be awesome, so anything "Less Than | Awesome" (LTA) was considered a bug. | | Larry Wall didn't like the term "void context", so he invented | "sink context" instead (with all the puns related to it, of | course). | | There were many more, though I have a hard time coming up with a | longer list... | deckard1 wrote: | Perl has a history of this due to Larry Wall's background in | linguistics. His Christian faith is also an influence. In Perl | you can "bless" a reference to reify it into a class. The name | Perl also comes from the bible apparently. Though you probably | know this based on your username... | | Fortunately Perl was reasonable. On the other side of the | spectrum you have the impenetrable and pretentiously obnoxious | Urbit[1] | | [1] https://urbit.org/docs/glossary/moon | reidjs wrote: | bless is also a unix tool https://www.unix.com/man- | page/osx/8/BLESS/ | LambdaComplex wrote: | Urbit's documentation is like the Codex Seraphinianus but | less understandable. | thrtythreeforty wrote: | Oh, hey, they have a glossary now. That's at least a nice | affordance. Back when I last looked at Urbit you were | expected to figure everything out like you were reading a | cyberpunk novel. | | ...actually, now that I say it, "cyberpunk enthusiast" kinda | resonates with the whole design of Urbit. | warrenm wrote: | I thought the etymology of "NYI" was more-or-less the same as | "NIH" (not invented here) - namely, that it came out of Bell | Labs somewhere along the line | | ...or, at least, that's what my CS prof claimed in the late 90s | :) | khy wrote: | I've noticed that the docs sometimes use the verb "spell" in an | interesting way, e.g. "IN GROUP is an obsolete spelling of IN | ROLE." | darrenf wrote: | That's "spelling" the noun, not a verb. | hunter2_ wrote: | The verb form is where the atypical usage originates, so I | think it's fair to focus on the verb as the point of interest | despite including an example that happens to be a gerund. | | Anyway, I think there's an even larger set that "spell" is a | member of: metaphorical usage to highlight anything unwanted | or erroneous; "code smell" is another. | | It's wrong, therefore it smells. It's wrong, therefore it's | misspelled. It's wrong, therefore it wants to be different | (personification metaphor). | warrenm wrote: | And here I thought `"spelling" the noun` was a reference to | either Tori or Aaron | closeparen wrote: | I've heard this before, e.g. Go's "while" loop is spelled "for" | sundarurfriend wrote: | I think that usage is a little bit more common eg., I believe | I've seen it in Perl docs, and in rare StackOverflow answers. | [deleted] | SahAssar wrote: | It's also used in libjpeg: | https://github.com/kornelski/libjpeg/blob/master/libjpeg.doc... | | Maybe it's used as a sort of shibboleth and accidentally escaped | internal communication into source code? | | It does not seem to be spreading very much, though. | wyldfire wrote: | Showing up on HN is a bit of a superspreader event. | markstos wrote: | Username checks out. | saurik wrote: | The original developer of libjpeg is Tom Lane, who is the same | lead developer who uses this term at PostgreSQL. | | https://handwiki.org/wiki/Biography:Tom_Lane_(computer_scien... | [deleted] | trurl42 wrote: | Likely a variant spelling of frammis; | https://en.wiktionary.org/wiki/frammis | JKCalhoun wrote: | Thought it was a Carrollian invention: sort of like beamish, | uffish, frumious... | dorianmariefr wrote: | Something, generally a device, for which one does not know the | proper term | layer8 wrote: | Maybe I'll use that when I finally get around to writing a UI | framework. ButtonFrammis, CheckboxFrammis, LabelFrammis, | TextInputFrammis, ... | munk-a wrote: | Could frammish be a portmanteau then? Condensing "frammis-ish" | to frammish - as in gizmo-like, maybe the thing you need to | build which may or may not be a distinct component? | ZeroGravitas wrote: | Iterestingly, several of the Google Books results for Frammis | are Joe Celko's SQL books, wonder if there's a connection. | mindcrime wrote: | Huh, curious. It clearly didn't _originate_ with Postgresql | developers, as one can find uses of the word sprinkled around | here and there in old literature. One neat way to see uses of it | is to search on Google Books: | | https://www.google.com/search?tbm=bks&hl=en&q=%22frammish%22 | | That said, I don't see anything that purports to give a | definitive _definition_ of the word - everybody who uses it seems | to assume that everyone else knows it. And at least at first | blush, I don 't see anything that attempts to explain the origin | / etymology of the word either. | | It's the kind of thing you'd almost expect to see in the "Jargon | File" but it doesn't appear to be there either. | | http://catb.org/jargon/html/go01.html | striking wrote: | I recently caught out someone trying to hide their deep knowledge | of Postgres when, in a moment of weakness as I mentioned one of | the benefits of TOAST, he replied "I guess that's why they call | it 'the best thing since sliced bread'". | | And that's when I knew. | | Because that's an exact quote from the docs. | | > This section provides an overview of TOAST (The Oversized- | Attribute Storage Technique). | | > PostgreSQL uses a fixed page size (commonly 8 kB), and does not | allow tuples to span multiple pages. Therefore, it is not | possible to store very large field values directly. To overcome | this limitation, large field values are compressed and/or broken | up into multiple physical rows. This happens transparently to the | user, with only small impact on most of the backend code. The | technique is affectionately known as TOAST (or _"the best thing | since sliced bread"_ ). The TOAST infrastructure is also used to | improve handling of large data values in-memory. | | https://www.postgresql.org/docs/current/storage-toast.html | swsieber wrote: | I am not familiar with Postgreql. | | I would make that joke. | reidjs wrote: | I'm a little bit confused by the wording "This happens | transparently to the user," I assume they mean that the user is | unaware of this workaround? Or do they mean it's obvious how it | works (transparent) to the user? | bryanrasmussen wrote: | ok, but Toast being the best thing since sliced bread is also a | somewhat antiquated vernacular expression, I mean obviously the | best thing since sliced bread is often used without toast as | the thing being referred to but it was also often the case that | toast was being referred to> | https://www.theatlantic.com/health/archive/2012/02/how-the-p... | gowld wrote: | Toast predates machine-sliced bread, which is what "sliced | bread" refers to. Sliced bread made toast better (easier to | automate), but that doesn't make toast the best thing since | sliced bread. | | The article you linked explains that "sliced bread" is the | best thing, to which all later (not just bready) inventions | are compared. | bryanrasmussen wrote: | are you really under the impression that vernacular | expressions are always perfectly logical and thus showing | how an expression would not be logical proves that it was | never actually in common use? | giaour wrote: | Isn't the joke that the particular piece of toast always | postdates the particular slice of bread it was made from? | I.e., toast is the best thing since sliced bread because | first we had sliced bread, and then we toasted it. It's a | dumb dad joke | glouwbug wrote: | Yeah, maybe the guy just has a sense of humor - something | that your average software developer would mistake for being | a reference to documentation | gowld wrote: | This is wholly unnecessary. | Izkata wrote: | What's unnecessary, a sense of humor? | | ;) | saurik wrote: | Why would anyone try to "hide their deep knowledge of | Postgres"? Like, I could easily see someone having to hide | their deep knowledge of MongoDB--lest they be branded forever | as "damaged"--but I've been under the impression that | PostgreSQL skills are considered a really good thing this past | decade or so... were they just really hoping to avoid becoming | a database engineer, or were they maybe under threat of | becoming an "on call" asset? | hinkley wrote: | Similarly I know a lot about software management because I | saw that it affects everything I do, and I needed to be able | to push back on bad management. Doesn't mean I want to be a | project manager. No, I don't, and please stop asking. | | And there are tasks you took on at old jobs because they | needed to get done and nobody else would do it, so you got | stuck. You did them. Maybe you even did them well. But they | aren't on your resume, because you don't want to do it again. | And if you mention them as anecdotes, you are careful where | and when you bring them up. | [deleted] | sam0x17 wrote: | Though it's rare these days, there is still such a thing as | being modest | mmcgaha wrote: | Sometimes it is better to be the student than the teacher. | evilduck wrote: | A few other scenarios: | | In an interview I don't want to be intimidating and feigning | ignorance can give the candidate opportunity to shine. If | they go deep, I can keep up and keep pushing, if they veer | into bullshitting I can tell and gracefully conclude without | offending anyone. | | As a manager, not disclosing depth lets me ask stupid | questions more frequently and in more contexts (for the | benefit of others, for when I forget something or don't | understand something, as a Socratic teaching method, to help | set the culture of asking questions, etc) | | Playing dumb is also a good way to avoid responsibility if | you hate something, too, if a bit passive aggressive. | brimble wrote: | If you're specializing in something else but have knowledge | of some other, unrelated thing, the latter is often at least | _accidentally_ concealed because it rarely comes up. Further, | one might _deliberately_ conceal it, to avoid having work | assigned that distracts from the thing one is trying to focus | on (for career development, personal preference, whatever | reason). | | I've been known to pretend not to know a damn thing about | WordPress, for instance. Even though I do. | striking wrote: | > were they maybe under threat of becoming an "on call" asset | | You got it. A previous role as a database firefighter was | something this individual did not want to continue at their | new workplace. | dvtrn wrote: | I've definitely done it for exactly this reason, and others | mentioned in the thread: a strong desire to not suddenly | become the ______ guy. | | Additional responsibility with no additional authority | absolutely sucks when you get (a) pigeonholed, (b) saddled | with every single request ever about _______ in addition to | your other work or (c) some unholy combination of both. | | Especially when ______ only has enough "buy in" from | decision makers to make the decision that you need to keep | ______ alive because the business "needs"it but apparently | not enough to properly source and acquire the necessary | resources it needs compared to other business initiatives. | | Because "why do we need to do that? I thought you knew | about ______ " | | Go figure. I'm quite done volunteering myself like that. | JohnHaugeland wrote: | "Oh, you're a computer programmer? Can you help me with my | printer?" | | But difficult, and with consequences. | fileeditview wrote: | Hehe.. I once was asked to retrieve someones mail account | (he lost is password)... sigh. People have all kinds of | ideas what you can do if you are a programmer. | | Told him to contact the provider. | arunnanda wrote: | Printers can be harder, especially if you have driver | trouble. | 0xbadcafebee wrote: | "Oh, you're a hacker? Can you help me with my printer?" | | I once extracted a PPD from a very expensive printer's | firmware because the vendor didn't officially support | Linux. | pcthrowaway wrote: | We could never get the damn things working in our office | | This was when I worked for HP | mark-r wrote: | I once fixed a bug caused by a faulty printer driver from | HP. The driver changed the floating point control word | and didn't change it back. Our program crashed while | doing a completely innocuous operation, but only if you | had printed to an HP printer earlier in the session. | mikestew wrote: | I remember that, because I worked on the MS FoxPro team | at the time and report printing was crashing for a lot of | users, but not all of them. Took forever to finally pin | it down because, as parent comment points out, the | culprit could have long left the building by the time the | crash happens. Stupid driver sets the FPU to say "math | errors like divide-by-zero are software's problem now, | not mine" without telling software. IIRC (and this was | over 20 years ago), operations had to be wrapped in/with | the one line of code that flipped it back. | | But here's the thing: it wasn't just HP, it was a _lot_ | of print drivers. I suspected that there was some printer | driver boilerplate out there, possibly even published by | MS, that included this bug. | | (And, wow, did I swerve sharply into the off-topic lane | for story time. Sorry.) | popularonion wrote: | If people ever start seeing you as "the database guy", you'll | be pigeonholed into that slot as long as you remain in that | team. | | Or maybe their manager was just a really big fan of Oracle or | something. I don't know. | jamil7 wrote: | Same with anything to do with ops or deployment - better to | hide that knowledge. | pacificmint wrote: | I used to work with a guy who was amazing with makefiles. | After being burned once, ne made damn sure nobody at his | new job knew about it. | pklausler wrote: | You know that you've matured in this business when you | can feel no guilt when denying knowledge about something | that you're an expert in. | arthurjj wrote: | Exactly. I was at one point an orgs "GDPR expert" which was | fine work wise but not exactly what you want to be known | for | vjust wrote: | Can confirm from experience. It took me years to shake that | off and become known as a developer who could database. Its | a function of whatever the team lacks. Once upon a time, | DBA was a thing - I did manage to stay out of that deep | pigeonhole luckily. | bifrost wrote: | DBA is absolutely still a thing, they fix things that | developers make that deal with databases :) | mdellavo wrote: | Why would some be branded damaged because they have knowledge | of a tool? That's ludicrous. | | I've used many databases including mongo. They are all tools | like any other with pros and cons and having experience with | multiple across domains is a boon. | recursive wrote: | It may be ludicrous, but it's not an uncommon point of | view. | | "... teaching of BASIC should be rated as a criminal | offence: it mutilates the mind beyond recovery" | | - Edsger W. Dijkstra | | https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/ | E... | kamilm wrote: | > Why would anyone try to "hide their deep knowledge of | Postgres"? | | > or were they maybe under threat of becoming an "on call" | asset? | | This is likely, especially if the person they're talking to | tends to leech on other people's skills & time. | markstos wrote: | I'm working on seeding `backcompat` as a portmanteau of | "backwards compatibility". Help me out, HN. | kimixa wrote: | I'm not sure how much seeding is needed - I've heard it used | for years, and seems to have become a bit of a term for the | Xbox previous generation game compatibility stuff. | layer8 wrote: | I'd go for backpat. ;) | dmurray wrote: | Or ytilibitapmoc. | hluska wrote: | I have a meeting with a couple of junior devs in about an hour. | I'll use it in conversation and we'll see what happens. :) | jyounker wrote: | What group doesn't develop their own words over twenty years? | ncmncm wrote: | Betting it comes from the incantation "Frammin at the jim-jam, | frippin in the krotz", repeated frequently in the US comic strip | "Wizard of Id" by Brant Parker and Johnny Hart. | notacoward wrote: | My favorite like this is "impunge" from Gluster. It's used during | repairs after a node has gone down and come back up. Files that | are present but should have been deleted are expunged. Files that | are absent but should be present are impunged from surviving | replicas. | jerf wrote: | "Are Postgres developers starting to evolve their own dialect? | Should we call an anthropologist?" | | This is a "jargon" term: | https://linguistics.stackexchange.com/questions/2812/argot-v... | petercooper wrote: | "allballs" is another potential candidate: | https://www.postgresql.org/message-id/20050124200645.GA6126%... ___________________________________________________________________ (page generated 2022-03-10 23:00 UTC)