MS SQL: Aktuellen Autoincrement für bestimmte Tabelle

Man liest oft

Das funcktioniert aber nur bsplw. nach einem SELECT. Genereller funktioniert dagegen

von

Java: Object Type Mappings in Elasticsearch

Verschachtelte Strukturen in Elasticsearch zu mappen, ist strukturell gesehen eigentlich gut dokumentiert, siehe Object Type (Achtung: Nicht zu verwechseln mit Nested Type!). In Java kann dabei trotzdem einiges schiefgehen – zumindest in v0.90.x, über die aktuellen Versionen kann ich nichts sagen.

Zuerst ein Klassiker, wenn man sich die zahlreichen Tipps dazu im Internet ansieht:

Merge failed with failures {[mapper [field.innerField] has different index values, mapper [field.innerField] has different tokenize values, mapper [field.innerField] has different index_analyzer]}

Das liegt gerne mal daran, dass der Index vor dem Mapping aufgebaut wurde. Was aber nicht bedeutet, dass man das selber explizit so macht! Es kann ganz simpel daran liegen, dass die früher erzeugten (und jetzt veralteten) Dateien auf der Platte nicht mehr passen. Alle Dateien löschen und neu erzeugen lassen, dann kann der Fehler schon verschwunden sein m(

Dann, auch sehr verwirrend: Der XContentBuilder hat eine string()-Funktion (nicht zu verwechseln mit toString()). Die hilft beim Debuggen insofern, als dass man das erzeugte Mapping/JSON ausgeben kann. Allerdings “tut” string() intern irgendwas, keine Ahnung, den Stream schließen oder so. Mit einem string() im Code bekommt man eine NullPointerException in UTF8JsonGenerator.writeRaw(UTF8JsonGenerator.java:670). Tollerweise (trollerweise?) liegt die Klasse zwar unter org.elasticsearch.common.jackson.core.json.UTF8JsonGenerator, die Sourcen sind aber nicht Teil der ES-Sourcen… und der UTF8JsonGenerator hat sehr viele writeRaw()-Methoden.

Bis man darauf kommt, dass es ausschließlich an string() liegt, kann schon mal einige Zeit vergehen: Mit einem string() im Code kann man zwar das erzeugte JSON ausgeben, dieses ist aber völlig irrelevant. Es kann sogar ungültig sein, etwa durch ein überzähliges endObject() – durch string() sieht man statt des eigentlichen

 JsonGenerationException: Current context not an object but ROOT

nur den NullPointer von oben.

Trotzdem ist string() nötig, denn drölf verschachtelte endObject() und field() werden schnell unübersichtlich. Meine Empfehlung: Das JSON unter Einsatz von string() gemäß der Doku aufbauen, string() dann auskommentieren, und erst dann die auftretenden Fehlermeldungen lesen.

Java: Fields (inkl. Typ, Getter und Setter) dynamisch auslesen

zusammengestoppelt auf stackoverflow

Java: “T implements Interface”

Folgendes geht NICHT:

Aber das hier geht:

That would require an object of type T to both extend B and implement SomeInterface.

Abgefahren. Habe ich bis heute noch nie gesehen, kommt aber gerade ganz praktisch :-)

Jackson: Map JSON Array

(von)

ohne Titel

Ein Selektor kann eine einzelne E-Mail-Adresse betreffen oder die Kommunikation eines ganzen Landes.

Ohne Kenntnis [der Selektoren] ist es unmöglich, den Umfang, die Qualität und die Brisanz der vom BND an die NSA geleiteten Daten einzuschätzen.

Es wird überwacht, es wurde gefoltert [und gemordet!], entführt, gelogen und vertuscht, in einem Maße, das nur noch systematisch zu nennen ist.

[Ein Land], das sich nicht von Terroristen erpressen lässt, muss auch den zweiten Schritt gehen: sich nicht […] von seinen eigenen und den verbündeten Geheimdiensten zur Duldungsstarre nötigen lassen.

via

MS SQL: “DROP COLUMN” mit Defaultwert

MS SQL, once again: Folgendes Skript legt eine Spalte mit Default “1” an:

Aber es legt nicht nur diese Spalte an, sondern auch einen Constraint “DF__lc_storea__isPri__6A85CC04″. Möchte man diese Spalte nun wieder löschen:

dann meldet MS SQL Erfolg (!), tatsächlich aber wurde die Spalte nicht gelöscht m( Besonders schön in Migrationsskripten. Nicht.

Man kann den Constraint nun explizit löschen:

Oder man sucht ihn dynamisch aus den Tiefen des Systems:

HTH

MS SQL: Alle Tabellen leeren

Ich möchte das nicht jedes mal googlen:

In dem Zusammenhang: Flyway initOnMigrate in Play Applikationen: